                         self._observers.removeAtIndex(index)
                     }
                 }
+            }
+
+            let change = UpdateValue(oldValue: oldValue, newValue: value)
+            for handler in handlersToCall {
+                handler(change: change)
             }
         }
     }

                if observer.value != nil {
                    for handlerIndex in Array((0..<handlers.count).reverse()) {
                        let handlerSpec = handlers[handlerIndex]
                        handlerSpec.handler(change: UpdateValue(oldValue: oldValue, newValue: value))
                        if handlerSpec.options & ObservationOptions.OnlyOnce {
                            handlers.removeAtIndex(handlerIndex)
                        }

    */
    public var value : T {
        didSet {
            var handlersToCall = [DidChangeHandler]()

            for observerIndex in Array((0..<self._observers.count).reverse()) {
                let observer = self._observers[observerIndex].observer
                var handlers = self._observers[observerIndex].handlers
