added caching to data providers