                          (t/run-save-callbacks
                           session
                           entity
-                          :before-save
+                          :serialize
                           old-record
-                          (merge non-cassandra-record old-record)
+                          old-record
                           opts))
 
-        record-ser (t/run-save-callbacks
+        record-ser (t/chain-save-callbacks
                     session
                     entity
-                    :before-save
+                    [:before-save :serialize]
                     old-record
                     record
                     opts)

       (re-matches #"\p{Alpha}[_\p{Alnum}]+")
       boolean))

(s/defn upsert-minimal-changes
  "after callbacks have been run, upsert a minimal change"
  [session :- ModelSession
   entity :- Entity

                               (into {}))]

        [updated-record-with-keys-ser
         acquire-failures] (unique-key/upsert-primary-record-and-update-unique-keys
                            session
                            entity
                            old-record-ser
                            record-ser
                            opts)

        _ (monad/when updated-record-with-keys-ser
            (update-secondaries-and-lookups session
                                            entity
                                            old-record-ser
                                            updated-record-with-keys-ser
                                            opts))

        ;; [updated-record-with-keys-ser
        ;;  acquire-failures] (upsert-minimal-changes
        ;;                     session
        ;;                     entity
        ;;                     old-record-ser
        ;;                     record-ser
        ;;                     opts)

        ;; construct the response and deserialise
        response-record-raw (merge nil-removed
                                   old-record
                                   updated-record-with-keys-ser)

        response-record (t/chain-callbacks
                         session
                         entity
                         [:deserialize :after-load]
                         response-record-raw
                         opts)

