Added a Caching functionality