protected override void StartNextDownload()
 {
     try
     {
         Directory.CreateDirectory(DownloadsController.CurrentDownload.Destination.FullPath);
         //Http is way more simple than FTP, since it has a built in background worker, no authentication and no folders
         using (client = new CustomWebClient())
         {
             speed = new DownloadSpeed(client);
             speed.Start();
             client.Credentials              = Credentials;
             client.DownloadProgressChanged += CustomWebClientDownloadProgressChanged;
             client.DownloadFileCompleted   += CustomWebClientDownloadCompleted;
             OnDownloadStarted();
             //downloads the file and save in the selected destination
             client.DownloadFileAsync(new Uri(DownloadsController.CurrentDownload.RemoteFileInfo.Url), UpdateFileNameWithDistinguishedName());
         }
     }
     catch (Exception e)
     {
         DownloadsController.CurrentDownload.ChangeState(DownloadState.Error, true);
         OnProcessError(new DownloadErrorEventArgs(ErrorType.GeneralErrorOnDownload, DownloadsController.CurrentDownload.RemoteFileInfo.FileFullName, e));
     }
     finally
     {
         //the progress of the download list has changed
         OnOverallProgressChanged();
     }
 }