added some basic caching to the results