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

    */
    public var value : T {
        didSet {
            for observerIndex in Array((0..<self._observers.count).reverse()) {
                let observer = self._observers[observerIndex].observer
                var handlers = self._observers[observerIndex].handlers

                        self._observers.removeAtIndex(index)
                    }
                }
            }

            let change = UpdateValue(oldValue: oldValue, newValue: value)
            for handler in handlersToCall {
                handler(change: change)
            }
        }
    }
