    [clojure.set :as set]
    [dag_unify.core :refer [copy fail? get-in strip-refs unify]]))
 
-(btest/init-db)
-
-;; TODO: move this from babel.test.it to babel.lexicon or similar.
-(defn initialize []
-  (log/info (str "recompiling and writing lexicon to database.."))
-  (write-lexicon "it" (lexicon/compile-lexicon))
-  (log/info (str "done.")))
+(defonce model
+  (do
+    (btest/init-db)
+    @@(get models :it)))
 
 ;; TODO: consider removing special-purpose grammars like grammar/np-grammar
 ;; and just use model instead.

  (babel.italiano.grammar/model-plus-lexicon
   ;; filtered lexicon:
   (into {}
         (for [[k lexemes] (:lexicon @@(get models :it))]
           (let [filtered-lexemes
                 (filter (fn [lexeme]
                           (or (= k "vedere")

         :head {:comp {:synsem {:pronoun true}}}}]
    (repeatedly #(-> spec generate morph time println))))

(defn sentences-with-pronoun-objects-hints
  "supply a spec enhanced with syntactic info to speed-up generation."  
  []
  (let [spec
        {:modified false
         :synsem {:cat :verb
                  :subcat []
                  :sem {:pred :top
                        :tense :present
                        :aspect :simple
                        :subj {:pred :top}
                        :obj {:pred :top}}}
         :head {:comp {:synsem {:pronoun true}}}}]
    (repeatedly #(-> spec generate morph time println))))

(defn sentences-with-pronoun-objects-small []
  (let [lexicon (:lexicon models)
        transitive-verbs
        (filter (fn [k]
                  (let [lexemes (->> (get lexicon k)
