add caching capability