          (->> (map #(u/assoc-in rule [:head] %)
                    (-> model :lexicon (get lexeme)))
               (remove #(= :fail %))))))
+
+;; Thanks for (defn wait) to Christian Meichsner on https://stackoverflow.com/a/30903731 
+(defn wait [ms f & args]
+  (let [c (chan)]
+    (go (>! c (apply f args)))
+    (first (alts!! [c (timeout ms)]))))

                                                     :rest []}}}}}}}]]
    (repeatedly #(println
                  (let [spec (first (shuffle specs))]
                    (morph (time (generate spec model))))))))
(defn nextcamp []
  (let [parse (-> "the small dogs you see" parse first)]
    (pprint (u/get-in parse [:synsem :sem]))))

   [babel.directory :refer [models]] ;; this is needed even though there are no references to directory in here.
   [babel.generate :as g :refer [frontier generate get-lexemes]]
   [babel.english :as english :refer [model morph morph-ps]]
   [clojure.core.async :refer [>! alts!! timeout chan go]]
   #?(:cljs [babel.logjs :as log])
   #?(:clj [clojure.tools.logging :as log])
   #?(:clj [clojure.repl :refer [doc]])
