added caching methods