added caching for testing