 ;;               already been executed as their dependencies have been met
 (defonce dep-state* (agent {:satisfied #{}
                             :todo      []
-                            :done      []}))
+                            :done      []
+                            :history   []}))
+
+(defn- now
+  []
+  (System/currentTimeMillis))
 
 (defn- process-handler
   "Returns a new deps map containing either processed handler or it

  (send dep-state* (fn [deps]
                     {:satisfied #{}
                      :todo      (concat (deps :todo) (deps :done))
                      :done      []})))

(defn satisfied-deps
  "Returns a set of all satisfied deps"

  (let [replacer-fn #(if (= key (first %))
                       [key deps task]
                       %)]
    {:satisfied (:satisfied dep-state)
     :todo      (map replacer-fn (:todo dep-state))
     :done      (map replacer-fn (:done dep-state))
     :history   (:history dep-state)}))

(defn- key-known?
  "Returns true or false depending on whether this key is associated
