caching is hard