   (-handle-change [k sender oldval newval])
   (-peek-at [this]))
 
+(def clean 0)
+(def maybe-dirty 1)
+(def is-dirty 2)
+
 (deftype Reaction [f ^:mutable state ^:mutable dirty? ^:mutable active?
                    ^:mutable watching ^:mutable watches
                    auto-run on-set on-dispose]

      (when-not active?
        (when debug (swap! -running inc))
        (set! active? true))
      (set! dirty? false)
      (set! state res)
      (-notify-watches this oldstate state)
      res))

  IComputedImpl
  (-handle-change [this sender oldval newval]
    (when (and active? (not (identical? oldval newval)))
      (set! dirty? is-dirty)
      ((or auto-run run) this)))

  (-update-watching [this derefed]
