                             (fn [cursors]
                               (let [cursors (remove #(= % cur) cursors)]
                                 (when-not (empty? cursors)
-                                  cursors))))))
+                                  cursors)))))
+              (.unregisterOne this))
             nil
             nil
             nil

            (new-reactive-id)
            this
            ckey
            (fn [cur] (get (.rawDeref this) ckey))
            (fn [cur f & args]
              (.updateChild this ckey f args))
            (fn [cur]
              (set! child-cursors (update child-cursors ckey conj cur)))
            (fn [cur]
              (set! child-cursors

                 (fn [x] (setter x (apply f (getter x) args)))))
        (fn [this]
          ((.-add-watch binding-info) parent id
           (fn [k r o n] (.updateCursor this (getter n) *change-ks*))))
        (fn [this] ((.-remove-watch binding-info) parent id))
        nil
        nil
