         let downloadState = message.downloadState
 
         if downloadState == MessageDownloadState.Downloaded.rawValue {
-            reportProgress?(1.0)
+            //reportProgress?(1.0)
 
             return
         }
         
         if !attachmentURLString.isEmpty, let URL = NSURL(string: attachmentURLString) {
 
-            let downloadTask = sharedDownloader.session.downloadTaskWithURL(URL)
-
-            let progressReporter = ProgressReporter(downloadTask: downloadTask, reportProgressAction: reportProgress) { data in
-
-                let fileName = NSUUID().UUIDString
+            let downloadTasks: [NSURLSessionDownloadTask]
+
+            let attachmentDownloadTask = sharedDownloader.session.downloadTaskWithURL(URL)
+
+            var thumbnailDownloadTask: NSURLSessionDownloadTask?
+            if mediaType == MessageMediaType.Video.rawValue {
+                if let URL = NSURL(string: message.thumbnailURLString) {
+                    thumbnailDownloadTask = sharedDownloader.session.downloadTaskWithURL(URL)
+                }
+            }
+
+            if let thumbnailDownloadTask = thumbnailDownloadTask {
+                downloadTasks = [attachmentDownloadTask, thumbnailDownloadTask]
+            } else {
+                downloadTasks = [attachmentDownloadTask]
+            }
+
+            let attachmentFinishedAction: ProgressReporter.FinishedAction = { data in
 
                 dispatch_async(dispatch_get_main_queue()) {
 

            handleData(data, ofDownloadTask: downloadTask)
        }

        reportProgress(1.0, ofDownloadTask: downloadTask)

        println("didFinishDownloadingToURL \(downloadTask.originalRequest.URL)")
    }

    func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {

        let progress: Double = Double(totalBytesWritten) / Double(totalBytesExpectedToWrite)

        reportProgress(progress, ofDownloadTask: downloadTask)

        //println("downloadTask progress \(progress)")
    }
}



    struct ProgressReporter {

        let downloadTasks: [NSURLSessionDownloadTask]

        typealias ReportAction = Double -> Void
        let reportProgressAction: ReportAction?

        typealias FinishedAction = NSData -> Void
        let finishedActions: [FinishedAction]

        //let progress: NSProgress = NSProgress(totalUnitCount: -1)
        var progress: [NSProgress]
    }


    var progressReporters = [ProgressReporter]()

