   ([spec & {:keys [model do-enrich max-total-depth truncate]
             :or {do-enrich true
                  max-total-depth generate/max-depth
-                 model medium
+                 model (medium)
                  truncate true}}]
    (log/debug (str "generating with spec: " (strip-refs spec) " with max-total-depth: " max-total-depth))
    (let [result (generate/generate spec model)]


  ([input]
   (let [input (preprocess input)]
     (parse input medium)))

  ([input model]
   (let [model (if (future? model) @model model)

  "analyze a word: as opposed to parsing which is multi-word."
  ;; TODO: should take a language model, not a lexicon
  ([surface-form]
   (analyze surface-form (:lexicon (medium))))
  ([surface-form lexicon]
   (morph/analyze surface-form lexicon)))

