Implemented caching only where required