add caching for data