                 super.init(object: object, keyPath: keyPath, options: .Prior)
             }
             
-            override func put(change: [String : AnyObject]) {
+            override func callback(change: [String : AnyObject]) {
                 if let old = change[NSKeyValueChangeOldKey] {
                     self.sink.put(old)
                 }

                super.init(object: object, keyPath: keyPath, options: [.New, .Old, .Initial, .Prior])
            }
            
            override func put(change: [String : AnyObject]) {
                self.sink.put(change)
            }
        }


import Foundation

private class ObserverBase : NSObject {
    
    var callback: (([String : AnyObject]) -> Void)? = nil
    
    let object: NSObject
    let keyPath: String
    var token = 0
    
    init(object: NSObject, keyPath: String, options: NSKeyValueObservingOptions) {
        self.object = object
        self.keyPath = keyPath
        super.init()
