added caching capabilities