It's unfortunate that clojure does [this](https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/ARef.java#L64) or else we could return a new atom here and in `remove-watch`. That would have the added affect of making the watches map immutable.

The [documentation](http://clojuredocs.org/clojure_core/clojure.core/add-watch) leads me to believe that it's suppose to return a new atom (also it's missing a `!` on the end). But, it's probably not a dangerous departure from clojure to return a new atom.