Yea, it is unfortunate that a mutable watches list is part of the API. Clojurescript is the same way. We'll have to keep it.