add caching support