new generalized DownloadManager class