             changesMade = true
             let tags = site.mutableSetValue(forKey: #keyPath(CD_Website.cd_tags))
             tags.add(tag)
-        }
-        
-        return changesMade ? context.datum_save() : .success(())
+            site.datum_willSave()
+        }
+        
+        if changesMade {
+            tag.datum_willSave()
+            return context.datum_save()
+        } else {
+            return .success(())
+        }
     }
     
     func remove(tag: AnyElement<AnyTag>, from _sites: Set<AnyElement<AnyWebsite>>) -> Result<Void, Error> {

        assert(Thread.isMainThread)

        let context = self.container.viewContext
        let token = self.willSave(context)
        defer { self.didSave(token) }

        let tag = CD_Tag(context: context)
        tag.cd_name = name
        return context.datum_save().map {
            AnyElement(CD_Element(tag, { AnyTag($0) }))
        }

            self.syncMonitor = AnySyncMonitor(NoSyncMonitor())
        }
    }
    
    deinit {
        // TODO: Remove later
