         return false
     }
     
-    public func downloadFile(success: ((fileURL: NSURL) -> Void)?, failure: ((error: NSError) -> Void)?) {
+    public func downloadToFile(fileURL: NSURL, success: (Void -> Void)?, failure: ((error: NSError) -> Void)?) {
+        if let attachmentID = self.attachmentID {
+            MMAttachmentService.download(attachmentID, success: { URL in
+                do {
+                    try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: fileURL)
+                } catch let error as NSError {
+                    failure?(error: error)
+                }
+                success?()
+            }) { error in
+                failure?(error: error)
+            }
+        }
+    }
+    
+    public func downloadFileWithSuccess(success: ((fileURL: NSURL) -> Void)?, failure: ((error: NSError) -> Void)?) {
         if let attachmentID = self.attachmentID {
             MMAttachmentService.download(attachmentID, success: { URL in
                 self.fileURL = URL

        }
    }
    
    public func downloadString(success: ((content: String) -> Void)?, failure: ((error: NSError) -> Void)?) {
        if let attachmentID = self.attachmentID {
            MMAttachmentService.download(attachmentID, success: { URL in
                if let data = NSData(contentsOfURL: URL), content = NSString(data: data, encoding: NSUTF8StringEncoding) as? String {

        }
    }
    
    public func downloadDataWithSuccess(success: ((data: NSData) -> Void)?, failure: ((error: NSError) -> Void)?) {
        if let attachmentID = self.attachmentID {
            MMAttachmentService.download(attachmentID, success: { URL in
                self.data = NSData(contentsOfURL: URL)
