Implemented caching and multi-threaded