Added one level of abstraction for CacheItem, this will make extensibility easier.