      */
     internal func watchForAction(types: [String]? = nil, tags: [String]? = nil, groups: [String]? = nil, properties: [String]? = nil) {
         types?.forEach { [unowned self] in
-            self.watch(Action: $0)
+            self.watch(Node: $0, index: ModelIdentifier.actionName)
         }
         
         tags?.forEach { [unowned self] in
-            self.watch(ActionTag: $0)
+            self.watch(Tag: $0, index: ModelIdentifier.actionTagName)
         }
         
         groups?.forEach { [unowned self] in
-            self.watch(ActionGroup: $0)
+            self.watch(Group: $0, index: ModelIdentifier.actionGroupName)
         }
         
         properties?.forEach { [unowned self] in
-            self.watch(ActionProperty: $0)
+            self.watch(Property: $0, index: ModelIdentifier.actionPropertyName)
         }
     }
     

     */
    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)
        }
    }
    

     - Parameter entityDescription: An entity description.
     - Parameter managedObjectClassName: A Mode class name.
     */
    private func addWatcher(key: String, index: String, value: String, entityDescriptionName: String, managedObjectClassName: String) {
        guard !isWatching(key: value, index: index) else {
            return
        }
