added caching support