Completely refactored downloader to use ThreadPool