         return false
     }
     
-    public override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
+    override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
         if (context != &RMDocumentKVOContext)
         {
             super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)

        }
        
        self.employees.removeObjectAtIndex(index)
    }
    
    
    func removeObjectAtEmployeeControllerIndex(index: Int) {
        let p: Person = self.employees.objectAtIndex(index) as Person
        println("removing \(p) to \(self.employees)")
        let undo = self.undoManager
        
        undo?.prepareWithInvocationTarget(self).insertObject(p, atArrangedObjectIndex: index)
        
        
        if (false == undo?.undoing) {
            undo?.setActionName("Remove Person")
        }
        
        self.employees.removeObjectAtIndex(index)
        
    }
    
    
    func removeObjectFromeEmployeeControllerIndex(index: Int) {
        let p: Person = self.employees.objectAtIndex(index) as Person
        println("removing \(p) to \(self.employees)")
        let undo = self.undoManager
        
        undo?.prepareWithInvocationTarget(self).insertObject(p, atArrangedObjectIndex: index)
        
        
        if (false == undo?.undoing) {
            undo?.setActionName("Remove Person")
        }
        
        self.employees.removeObjectAtIndex(index)
    }
    
    
    
    
    
    
    
}


        
    }
    
 
    func startObservingPerson(person: Person)
    {
        person.addObserver(self, forKeyPath: "personName", options: NSKeyValueObservingOptions.Old, context: &RMDocumentKVOContext)
