           url    (str "/api/thoughts/" (:id memory))]
       (PUT url {:params        {:thought note}
                 :headers       {:authorization (str "Token " (get-in app-state [:credentials :token]))}
-                :handler       #(dispatch [:memory-edit-save-success note])
-                :error-handler #(dispatch [:memory-edit-save-error %])}))
+                :handler       #(dispatch [:memory-edit-save-success memory note])
+                :error-handler #(dispatch [:memory-edit-save-error memory %])}))
     (assoc-in app-state [:ui-state :is-busy?] true)))
 
 
 (register-handler
   :memory-edit-save-success
-  (fn [app-state [_ msg]]
-    (let [thread-id (get-in app-state [:ui-state :show-thread-id])]
+  (fn [app-state [_ memory msg]]
+    (let [thread-id (:root_id memory)]
       (dispatch [:state-message (str "Updated memory to: " msg) "alert-success"])
       (if (= :remember (get-in app-state [:ui-state :section])) ; Just in case we allow editing from elsewhere...
         (dispatch [:memories-load]))
-      (if thread-id
+      (when (thread-in-cache? app-state thread-id)
         (dispatch [:thread-load thread-id]))
       (-> app-state
           (assoc-in [:ui-state :is-busy?] false)

      (dispatch [:state-message (str "Thought forgotten") "alert-success"])
      (if (= :remember (get-in app-state [:ui-state :section])) ; Just in case we allow editing from elsewhere...
        (dispatch [:memories-load]))
      (when thread-id
        (dispatch [:thread-load thread-id]))
      (-> app-state
          (assoc-in [:ui-state :is-busy?] false)

        is-busy?    (subscribe [:ui-state :is-busy?])
        ;; On the next one, we can't use not-empty because (= nil (not-empty nil)), and :show expects true/false,
        ;; not a truth-ish value.
        show?       (reaction (not (empty? @edit-memory)))]
    (fn []
      [Modal {:show @show? :onHide #(dispatch [:memory-edit-set nil])}
       [ModalBody
