add simple caching layer