                 msgs)
            (apply concat)
            (remove #(nil? (:comp %)))))
-    (throw (ex-info "next component undefined in transition" {:transition transition}))))
+    (warn "next component undefined in transition" {:transition transition})))
 
 (defn- handle-events [eventhandlers msg]
   (let [{:keys [msg evmsgs]}

                              (update :evmsgs #(conj % evmsg)))
                          (update s :evmsgs #(conj % evmsg))))
                      s)
                    (throw (ex-info "next component undefined in eventhandler" {:eventhandler eventhandler}))))
                {:msg msg
                 :evmsgs []}
                eventhandlers)]

(defn advance [msg ruleset]
  "Takes a message, runs it against ruleset and returns a sequence of routed messages."
  (debug "routing starting with" (select-keys msg #{:route :comp :starbuck/route-count}))
  (if (< (or (:starbuck/route-count msg) 0) 100)
    (let [route (get-in ruleset [:routes (:route msg)])
          trans (get-in route [:transitions (:comp msg)])
          evenths (merge (get ruleset :event-handlers)
