brand new, more object-oriented caching