add in-memory caching