add caching helpers