       (send-command-to reporter controller :route-changed route-params))))
 
 (defn apply-route-change [reporter route-params app-db-atom commands-chan controllers]
+  (reporter :router :out nil :route-changed route-params :info)
   (let [app-db @app-db-atom
         execution-plan (route-change-execution-plan route-params (get-in app-db [:internal :running-controllers]) controllers)
         {:keys [stop start wake route-changed]} execution-plan

                (apply-start-controllers reporter controllers commands-chan get-running start)
                (apply-wake-controllers reporter controllers commands-chan get-running wake)))
    (call-handler-on-started-controllers app-db-atom reporter (concat start wake))
    (send-route-changed-to-surviving-controllers app-db-atom reporter route-changed route-params)))

(defn call-ssr-handler-on-started-controllers [app-db-atom reporter start ssr-handler-done-cb]
  (let [wait-chan (chan)

                                :running (partial get-running topic))
              new-app-db (-> (action controller params app-db)
                             (assoc-in [:internal :running-controllers topic] controller))]
          (reporter :app :out :controller [topic reporter-action] params :info)
          (recur (rest start-or-wake) new-app-db))
        app-db)))

(def apply-start-controllers (partial apply-start-or-wake-controllers controller/start :start))
(def apply-wake-controllers (partial apply-start-or-wake-controllers controller/wake :wake))

(defn call-handler-on-started-controllers [app-db-atom reporter start]
  (doseq [[topic _] start]
