   The `check-optimistic-delta` uses the `ui-tx` entry to know what to attempt, and the mutations are already
   installed. So, it makes up an app state (which can be based on `initial-ui-state`, if supplied).
 
-  ## Exercise 7
+  #### Exercise 7
 
   Check the optimistic update
 


  Add `:remote true` to your return value from `a-mutation`. The test should now pass.

  #### **Exercise**: Mutations that modify the ui-tx

  As you probably already know, it is possible to modify the mutation sent to the server by giving an AST
  as the value of `:remote`. Add a parameter to the transaction by modifying the mutation to:

  ```
   (defmethod m/mutate 'a-mutation [{:keys [state ast] :as env} k params]

      ...body...))
  ```

  ### Exercise 4

  Write more of an integration test for `replace-pairs` that both asserts (via mocking) that `sum-sq` is called,
  but *really* allows the original `sum-sq` to generate the real value. Add assertions that talk about how every result
  is positive, even when the pairs contain negatives. The macro `provided` is the same as `when-mocking`, but allows you
  to add a string to the output (and nest the outline a level deeper) to describe what the mocking is proving.

  ## Timeline testing

  On occasion you'd like to mock things that use callbacks. Chains of callbacks can be a challenge to test, especially
  when you're trying to simulate timing issues.
