     :param: block             Block to perform. Call save() to invoke save.
     :param: saveSuccess
     :param: saveFailure
+    */
+    func saveWithBlockWaitSave(#block: ((save: (() -> Void)) -> Void)?, saveSuccess: (() -> Void)?, saveFailure: ((error: NSError?) -> Void)?) {
+        self.saveWithBlockWaitSave(block: block, saveSuccess: saveSuccess, saveFailure: saveFailure, waitUntilFinished: false)
+    }
+    
+    /**
+    Perform in background queue and save (Manually call timing of save.)
+    
+    :param: block             Block to perform. Call save() to invoke save.
+    :param: saveSuccess
+    :param: saveFailure
     :param: waitUntilFinished
     */
-    func saveWithBlockWaitSave(#block: ((save: (() -> Void)) -> Void)?, saveSuccess: (() -> Void)?, saveFailure: ((error: NSError?) -> Void)?, waitUntilFinished:Bool = false) {
+    func saveWithBlockWaitSave(#block: ((save: (() -> Void)) -> Void)?, saveSuccess: (() -> Void)?, saveFailure: ((error: NSError?) -> Void)?, waitUntilFinished:Bool) {
         if let block = block {
             let operation = DriverOperation { () -> Void in
                 var localContext = self.driverOperationQueue.context
                 block(save: { () -> Void in
                     var error: NSError? = nil
-                    if localContext.obtainPermanentIDsForObjects(localContext.insertedObjects.allObjects, error: &error) {
+                    if localContext.obtainPermanentIDsForObjects(Array(localContext.insertedObjects), error: &error) {
                         if error != nil {
                             dispatch_sync(dispatch_get_main_queue(), { () -> Void in
                                 saveFailure?(error: error)

    }
    
    /**
    Peform block in background queue and save
    
    :param: block
    :param: waitUntilFinished
    */
    func performBlock(#block: (() -> Void)?, completion: (() -> Void)?, waitUntilFinished: Bool = false) {
        if let block = block {
            let operation = DriverOperation { () -> Void in
                block()

    :param: saveFailure
    :param: waitUntilFinished
    */
    func saveWithBlock(#block: (() -> Void)?, saveSuccess: (() -> Void)?, saveFailure: ((error: NSError?) -> Void)?, waitUntilFinished:Bool) {
        self.saveWithBlockWaitSave(block: { (save) -> Void in
            block?()
            save()
