                    (not (vector? src))))
           (str "src must be a reactive atom or a function, not "
                (pr-str src)))
-  (let [s (if (satisfies? IDeref src)
-            (if (= path [])
-              #(reset! src %2)
-              #(swap! src assoc-in path %2))
-            #(src path %2))]
-    (RCursor. src path s nil nil nil)))
+  (RCursor. src path nil nil nil))
 
 
 

                     (let [f (if (satisfies? IDeref ratom)
                               #(get-in @ratom path)
                               #(ratom path))]
                       (cached-reaction f [ratom path ::cursor] this)))]
      (._set-state this oldstate newstate)
      newstate))


  {:pre [(ifn? f)]}
  (Monitor. #(apply f args) [f args] nil))


;;; cursor

(deftype RCursor [ratom path ^:mutable reaction
                  ^:mutable state ^:mutable watches]
  IAtom
  IReactiveAtom
