added multithreaded download functionality.TODO: pause/resume