added caching annotations and tests