         }
     }
     
+    /**
+    Perform in background queue.
+    
+    :param: block
+    :param: completion
+    */
     public class func performBackgroundBlock(block: (() -> Void)?, completion: (() -> Void)?) {
         if let driver = self.driver {
             return driver.performBlock(block: block, completion: completion)
         }
     }
     
-    public class func performBackgroundBlockAndWait(block: (() -> Void)?, completion: (() -> Void)?) {
+    /**
+    Perform in background queue and wait til done.
+    
+    :param: block
+    :param: completion
+    */
+    public class func performBackgroundBlockAndWait(block: (() -> Void)?) {
         if let driver = self.driver {
-            return driver.performBlock(block: block, completion: completion, waitUntilFinished: true)
+            return driver.performBlock(block: block, completion: nil, waitUntilFinished: true)
         }
     }
 

    }
    
    /**
    For peform in background queue : Manually call timing of save.(Directed to asynchronous processing in block)
    
    :param: block
    :param: failure
    */
    public class func saveWithBackgroundBlock(block: (() -> Void)?, saveSuccess: (() -> Void)?, saveFailure: ((error: NSError?) -> Void)?) {
        if let driver = self.driver {

    }
    
    /**
    Perform in background queue and save (Manually call timing of save.)
    
    :param: block
    :param: saveSuccess
    :param: saveFailure
    */
    public class func saveWithBackgroundBlockWaitSave(block: ((doSave: (() -> Void)) -> Void)?, saveSuccess: (() -> Void)?, saveFailure: ((error: NSError?) -> Void)?) {
        if let driver = self.driver {
