         }
     }
 
-    internal func completionHandler( completionHandler: (NSURL, UIImage?, NSError?) -> Void ) -> Self {
+    internal func completionHandler(completionHandler: (NSURL, UIImage?, NSError?) -> Void) -> Self {
 
         self.closures += [completionHandler]
 
         return self
     }
 
-    private func _run() {
-        self.task.resume()
+    // MARK: task
+
+    internal func suspend() {
+        dispatch_async(Loader._resuming_queue) {
+            self.task.suspend()
+        }
+    }
+
+    internal func resume() {
+        dispatch_async(Loader._resuming_queue) {
+            self.task.resume()
+        }
     }
 
     private func complete(URL: NSURL, image: UIImage?, error: NSError?) {

    let task: NSURLSessionDataTask
    var closures: [CompletionBlock] = [CompletionBlock]()

    // TODO: needs to creating task for class and singleton

    init (task: NSURLSessionDataTask, delegate: Manager) {
        self.task = task
        self.delegate = delegate
        self._run()
    }

    var status: NSURLSessionTaskState {


}

internal typealias CompletionBlock = (NSURL, UIImage?, NSError?) -> (Void)

public class Loader {

