added caching and stopwatches