CacheEvent & CacheEventQueue <- with addEvent and popEvent utility function