     
     // MARK: Shared Instance
     
-    class var sharedInstance: AEStack  {
-        struct Singleton {
-            static let instance = AEStack()
-        }
-        return Singleton.instance
-    }
+    static let sharedInstance = AEStack()
     
     // MARK: Default settings
     

        :returns: Batch update result.
    */
    class func batchUpdate(predicate predicate: NSPredicate? = nil, properties: [NSObject : AnyObject]? = nil, resultType: NSBatchUpdateRequestResultType = .StatusOnlyResultType, context: NSManagedObjectContext = AERecord.defaultContext) -> NSBatchUpdateResult? {
        // create request
        let request = NSBatchUpdateRequest(entityName: entityName)
        // set request parameters
        request.predicate = predicate
        request.propertiesToUpdate = properties
        request.resultType = resultType
        // execute request
        var batchResult: NSBatchUpdateResult? = nil
        // TODO: async error throwing
        context.performBlockAndWait { () -> Void in
            do {
                if let result = try context.executeRequest(request) as? NSBatchUpdateResult {

    }
    
    // MARK: Context Save

    func saveContext(context: NSManagedObjectContext? = nil) {
        let moc = context ?? defaultContext
        moc.performBlock { () -> Void in
