   ([f value options]
     (root> f value options nil))
   ([f value options out-event-ch]
-    (root* f value options out-event-ch {:bubbling (impl/event-bus (impl/bubbling-router))})))
+    (root* f value options out-event-ch {::bubbling (impl/event-bus (impl/bubbling-router))})))
 
 (defn root<
   "Use `root>` instead of om.core/root to add support for sending events from parent components to child components only."
   ([f value options]
-    (root* f value options nil {:trickling (impl/event-bus (impl/trickling-router))})))
+    (root* f value options nil {::trickling (impl/event-bus (impl/trickling-router))})))
 
 ; =============================================================================
 ;; ### Triggering events.
+
+(declare trigger*)
 
 (defn bubble
   "This function sends an event from the component up through its parent components.


;; ### Implementation of om/root replacements.

(defn- root*
  "Here's what the `root*` function does:

  1. It intercepts calls to build (via `:instrument`) to pass on event buses from parent components to their

                                         (binding [*parent* this]
                                           (super)))})]
    (when out-event-ch
      (if-let [bubbling-bus (::bubbling event-buses)]
        (impl/tap bubbling-bus out-event-ch)
        (throw (js/Error. "Bubbling event bus not available. Make sure to use root> or root<>."))))
    (om/root f value
