As going through Infinispan API I am wondering why there is package for commands and events both? for example there is an event which is InvalidateCommand and CacheEntryInvalidated. Does former has to do something with clustered and later(CacheEntryInvalidated) is just for the local node. It sounds like it should be when ever an invalidatecommand is visited the CacheEntryInvalidated event should be triggered. But I can not see this relationship in the packages. Also why there are both interceptors and listeners?