     ///
     /// Creates a binding that is updated when the specified key path is changed
     ///
+    /// Note that if anything is observing the binding, then the target object will be kept in memory (this includes computed bindings)
+    ///
     public func bindKeyPath(keyPath: String) -> Bound<AnyObject?> {
         // Fetch the bindings attached to this object
         let attachedBindings = self.getObserverBindings();

            let bindings = target.getObserverBindings();
            
            // Activate the observer for this key path
            target.addObserver(bindings, forKeyPath: _keyPath, options: NSKeyValueObservingOptions.New, context: nil);
            _observing = true;
        }

            let bindings = target.getObserverBindings();
            
            // Deactivate the observer for this key path
            bindings.detachBinding();
            target.removeObserver(bindings, forKeyPath: _keyPath, context: nil);
            _observing = false;
        }
