 
 (defn started? [component]
   (true? (::started? component)))
+
+(defn stopped? [component]
+  (false? (::started? component)))
 
 (defrecord ComponentA [state]
   component/Lifecycle

         'ComponentB.start 'ComponentC.start
         'ComponentC.start 'ComponentD.start
         'ComponentB.start 'ComponentD.start)))

(def ^:dynamic *log* nil)

(defn- log [& args]
  (when (thread-bound? #'*log*)
    (set! *log* (conj *log* args))))

(defn- ordering
  "Given an ordered collection of messages, returns a map from the
