Always think of Clojure functions, when you pass them around, as of values, not references. Whenever you change the root, previous function (one that you have already passed around), won't change. Only future calls will yield new value.