                                  [])})
                         (:layout screen))}]}]]
     (set-active-screen! screen params)
-    (om/set-query! app {:params params :query query})))
+    (om/set-query! c {:params params :query query})
+    (some-> app :config :screen-mounted
+            (apply [app screen params]))))
 
 ;;;; Application bootstrapping
 
 (defprotocol IApplication
   (mount [this])
   (start [this])
-  (reload [this]))
+  (reload [this])
+  (goto [this screen params]))
+
+(defrecord Application [config router]
+  IApplication
+  (mount [this]
+    (om/add-root! (:reconciler config) RootWrapper (:target config)))
+
+  (start [this]
+    (mount this)
+    (assoc this :router
+           (sb/router
+            {:default-screen (:default-screen config)
+             :mount-screen (partial mount-screen this)})))
+
+  (reload [this]
+    (reload-active-screen!)
+    (mount this)
+    (let [{:keys [screen params]} (active-screen)]
+      (mount-screen this screen params)))
+
+  (goto [this screen params]
+    (sb/goto! router screen params)))
 
 (defn application
   "Creates an Om Next application that implements screen-based

   logic and generates the `:navigation` and `:layout` props
   based on the active screen."
  [{:keys [default-screen reconciler root
           root-js? target]
    :or   {root-js? false}}]
  (set-root-component! root root-js?)
  (reify IApplication
    (mount [this]
      (om/add-root! reconciler RootWrapper target))
    (start [this]
      (mount this)
      (sb/router {:default-screen default-screen
                  :mount-screen (partial mount-screen reconciler)}))
    (reload [this]
      (reload-active-screen!)
      (mount this)
      (let [{:keys [screen params]} (active-screen)]
        (mount-screen reconciler screen params)))))

  "Mounts a screen with parameters by setting it as the active
   screen and updating the root wrapper's component query
   according to the screen's layout."
  [app screen params]
  (let [c     (om/app-root (:reconciler (:config app)))
        query [{:workflo/screen
                [:workflo/navigation
                 {:workflo/layout
