     func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
         print("YepDownloader data.length: \(data.length)")
 
-        let finish = reportProgressAssociatedWithDownloadTask(dataTask, didReceiveDataBytes: Int64(data.length))
+        let finish = reportProgressAssociatedWithDownloadTask(dataTask, didReceiveData: data)
 
         if finish {
             print("finish")
+
+            finishDownloadTask(dataTask)
         }
     }
 }

        }

        return false
    }

    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveResponse response: NSURLResponse, completionHandler: (NSURLSessionResponseDisposition) -> Void) {

        }
    }

    private func reportProgressAssociatedWithDownloadTask(downloadTask: NSURLSessionDataTask, didReceiveData data: NSData) -> Bool {

        for progressReporter in progressReporters {

