add caching to products