               
             true
             (let [infinitive (get-in word [:français])
-                  result (conjugate infinitive {:synsem word})]
+                  debug (log/debug (str "input to conjugate: infinitive: " infinitive "; spec:"
+                                         (strip-refs word)))
+                  synsemize ;; convert _word_ back into what (defn conjugate) can deal with.
+                  (pre-conjugate {:français word})
+                  result (conjugate infinitive synsemize)]
               (log/debug (str "result of conjugate: " result))
               result)))))
-  
+ 
 (defn fo [input &
           {:keys [from-language show-notes]
            :or {from-language nil

                                (not (= :fail unified))
                                (re-matches from infinitive))
                         (string/replace infinitive from to))))
                   regular-patterns))]
      (first (take 1 (concat exceptional-surface-forms regulars [infinitive]))))))
  
;; TODO: separate part-of-speech -related functionality (e.g. the word is a verb) from
;; compositional functionality (e.g. the word has an :a and :b, so combine by concatenation, etc)
;; 

(defn lookup-in [lexicon {spec :spec}]
  (let [infinitive (get-in spec [:français :infinitive])
        lexemes (reduce concat (vals lexicon))]
    (if (= :fail spec)
      (throw (Exception. (str "lookup-in was given spec=fail."))))
    (filter (fn [lexeme]
              (and
