             (doseq [item dereferenced-items]
               (delete-transaction-item storage (:id item) (:transaction-date existing)))
             (doseq [account-id recalc-account-ids]
-              (recalculate-account storage account-id recalc-base-date))))))))
+              (recalculate-account storage account-id recalc-base-date))
+            (reload storage validated)))))))
 
 (defn- get-preceding-items
   "Returns the items that precede each item in the

                            {:sort [:transaction-date :index]})
        account (accounts/find-by-id storage account-id)
        [last-index
         balance] (process-items storage account base-item items)]
    ; TODO only update account if balance is not nil
    (accounts/update storage (assoc account :quantity balance))))

; Processing a transaction
; 1. Save the transaction and item records

         last-balance balance]
    (let [new-index (+ last-index 1)
          new-balance (+ last-balance (polarize-quantity item account))]
      (if (and (= new-index (:index item))
               (= new-balance (:balance item)))
        nil ; short-circuit updates if they aren't necessary
        (do
          (upsert-item storage (assoc item
                                      :balance new-balance
                                      :index new-index))
          (if (seq remaining)
            (recur (first remaining)
                   (rest remaining)
                   new-index
                   new-balance)
            [new-index new-balance]))))))

(defn- recalculate-account
  "Recalculates statistics for items in the the specified account
