         // Executing block
         if synchronously {
             privateContext.performBlockAndWait({ () -> Void in
-                if savingBlock != nil  {
-                    savingBlock(context: privateContext)
-                }
+                savingBlock(context: privateContext)
                 privateContext.save(true, savingParents: true, completion: completion)
             })
         }
         else {
             privateContext.performBlock({ () -> Void in
-                if savingBlock != nil  {
-                    savingBlock(context: privateContext)
-                }
+                savingBlock(context: privateContext)
                 privateContext.save(false, savingParents: true, completion: completion)
             })
         }
     }
-
+    
+    class func background(block: (context: NSManagedObjectContext) -> ()) {
+        dispatch_async(SugarRecord.backgroundQueue(), {
+            var privateContext: NSManagedObjectContext = NSManagedObjectContext.newContextWithParentContext(NSManagedObjectContext.rootSavingContext()!)
+            privateContext.performBlockAndWait({ () -> Void in
+                block(context: privateContext)
+            })
+        })
+    }
 }
 
 // MARK - Extension SugarRecord + Error Handling

        case lasts(Int)
    }
    
    ////// FETCH EXECUTING //////
    
    class func executeFetchRequest(fetchRequest: NSFetchRequest, inContext context: NSManagedObjectContext) -> ([NSManagedObject]) {
        var objects: [NSManagedObject] = [NSManagedObject]()
        context.performBlockAndWait { () -> Void in
            var error: NSError? = nil
            objects = context.executeFetchRequest(fetchRequest, error: &error) as [NSManagedObject]
            if objects == nil && error != nil {
                SugarRecord.handle(error!)
            }
        }
        return objects
    }
    
    ////// AGGREGATION //////

    enum PropertyType {
        case max(String)
        case min(String)
    }
    
    ////// REQUESTS //////
