      */
     internal func watchForRelationship(types: [String]? = nil, tags: [String]? = nil, groups: [String]? = nil, properties: [String]? = nil) {
         types?.forEach { [unowned self] in
-            self.watch(Relationship: $0)
+            self.watch(Node: $0, index: ModelIdentifier.relationshipName)
         }
         
         tags?.forEach { [unowned self] in
-            self.watch(RelationshipTag: $0)
+            self.watch(Tag: $0, index: ModelIdentifier.relationshipTagName)
         }
         
         groups?.forEach { [unowned self] in
-            self.watch(RelationshipGroup: $0)
+            self.watch(Group: $0, index: ModelIdentifier.relationshipGroupName)
         }
         
         properties?.forEach { [unowned self] in
-            self.watch(RelationshipProperty: $0)
+            self.watch(Property: $0, index: ModelIdentifier.relationshipPropertyName)
         }
     }
     

     */
    internal func watchForEntity(types: [String]? = nil, tags: [String]? = nil, groups: [String]? = nil, properties: [String]? = nil) {
        types?.forEach { [unowned self] in
            self.watch(Entity: $0)
        }
        
        tags?.forEach { [unowned self] in
            self.watch(EntityTag: $0)
        }
        
        groups?.forEach { [unowned self] in
            self.watch(EntityGroup: $0)
        }
        
        properties?.forEach { [unowned self] in
            self.watch(EntityProperty: $0)
        }
    }
    

     Watch for an Entity type.
     - Parameter type: An Entity type to watch for.
     */
    private func watch(Node type: String, index: String) {
        addWatcher(
            key: "type",
            index: index,
            value: type,
            entityDescriptionName: index,
            managedObjectClassName: index)
    }
    
    /**
     Watch for an Entity tag.
     - Parameter name: An Entity tag name to watch for.
     */
    private func watch(Tag name: String, index: String) {
        addWatcher(
            key: "name",
            index: index,
            value: name,
            entityDescriptionName: index,
            managedObjectClassName: index)
    }
    
    /**
     Watch for an Entity group.
     - Parameter name: An Entity group name to watch for.
     */
    private func watch(Group name: String, index: String) {
        addWatcher(
            key: "name",
            index: index,
            value: name,
            entityDescriptionName: index,
            managedObjectClassName: index)
    }
    
    /**
     Watch for an Entity property.
     - Parameter name: An Entity property to watch for.
     */
    private func watch(Property name: String, index: String) {
        addWatcher(
            key: "name",
            index: index,
            value: name,
            entityDescriptionName: index,
            managedObjectClassName: index)
    }
    
    /**
