adding caching and configuration