 
 (def BuildEvent
   (merge
-    AnalyticsEventForControllers
+    AnalyticsEvent
     {:build {s/Keyword s/Any}}))
 
 ;; Below are the lists of our supported events.

(def AnalyticsEvent
  (merge
    CoreAnalyticsEvent
    {:owner s/Any}))

(def AnalyticsEventForControllers
  (merge
    CoreAnalyticsEvent
    {:current-state {s/Any s/Any}}))

(def PageviewEvent
  (merge
    AnalyticsEventForControllers
    {:navigation-point s/Keyword}))

(def ExternalClickEvent

(defmulti track (fn [data]
                  (when (frontend.config/analytics-enabled?)
                    (cond
                      (or (supported-click-and-impression-events (:event-type data))
                          (supported-controller-events (:event-type data)))
                      :event

                      :else
                      (:event-type data)))))

(defmethod track :default [data]
  (when (frontend.config/analytics-enabled?)
    (merror-unsupported-event (:event-type data))))

(s/defmethod track :event [event-data :- AnalyticsEvent]
  (let [{:keys [event-type properties owner current-state]} event-data]
    (if owner
      (segment/track-event event-type (supplement-tracking-properties-from-owner properties owner))
      (segment/track-event event-type (supplement-tracking-properties-from-state properties current-state)))))

(s/defmethod track :track-controller-events [event-data :- AnalyticsEventForControllers]
  (let [{:keys [event-type properties current-state]} event-data]
    (segment/track-event event-type (supplement-tracking-properties-from-state properties current-state)))

(s/defmethod track :external-click [event-data :- ExternalClickEvent]
  (let [{:keys [event properties owner]} event-data]
