   1. Pull the initial state and use that as base app state
   2. Ensure that it is normalized by Om
   3. Will do a post-initialization step to ensure alternate branches of to-one unions are initialized.
+  ")
 
+(defcard sample-app
+  "This card shows the app from above, actively rendered. The resulting normalized app database is shown below the UI."
+  (untangled-app Root)
+  {}
+  {:inspect-data true})
+
+(defcard-doc "
   ## Union Initialization
 
   The last step mentioned in the prior section is particularly handy. In stock Om you to need to do some special backflips in order

            [cljs.reader :as r]
            [untangled.client.mutations :as m]))

(defmethod m/mutate 'doit [{:keys [state]} k p]
  {:action (fn [] (swap! state update-in [:child/by-id 1 :x] inc))})

(defui Child
  static uc/InitialAppState
  (initial-state [this params] {:id 1 :x 1})

  Object
  (render [this]
    (let [{:keys [x]} (om/props this)]
      (dom/p nil (str "Child x: " x)))))

(def ui-child (om/factory Child))

(defui Root
  static uc/InitialAppState
  (initial-state [this params] {:root-prop 42 :child (uc/initial-state Child {})})
  static om/IQuery
  (query [this] [:ui/react-key :root-prop {:child (om/get-query Child)}])
  Object
  (render [this]
    (let [{:keys [ui/react-key root-prop child]} (om/props this)]
      (dom/div #js {:style #js {:border "1px solid black"} :key react-key}
        (str "Root prop: " root-prop)
        (ui-child child)))))

(defcard-doc
