Used caching to provide a 2x speedup