adding basic caching service (flesh this out later to concurrency issues)