     let stack: CoreDataStack
     let updateTarget: UpdateTarget
     let updateQueue: dispatch_queue_t?
-    var autoMergeObserver: Observer?
+    var autoMergeObserver: AnyObject?
 
     public init(stack: CoreDataStack, mainContext: NSManagedObjectContext? = nil, updateTarget: UpdateTarget = .RootContext(autoMerge: false), updateOrder: UpdateOrder = .Default) throws {
         if updateOrder == .Serial {

        }
    }

    public func observeCommit(queue queue: NSOperationQueue? = nil, block: () -> Void) -> Observer {
        return Observer(notification: CoreDataContext.CommitNotification, object: self, queue: queue ?? NSOperationQueue.mainQueue()) {
            _ in
            

        case Default
    }
    
    private class Observer {
        var observer: NSObjectProtocol
        
        init(notification: String, object: AnyObject?, queue: NSOperationQueue?, block: (NSNotification) -> Void) {
