         butlast (nth (re-find #"(.*).$" irregular-passato) 1)]
     (str butlast (suffix-of word))))
 
-(defn irregular-present-1sing? [word]
-  ;; <irregular present tense>
-  (let [person (get-in word '(:agr :person))
-        number (get-in word '(:agr :number))]
-    (and (= (get-in word '(:infl)) :present)
-         (= person :1st) (= number :sing)
-         (string? (get-in word '(:present :1sing))))))
-
-(defn irregular-present-1sing [word]
-  (get-in word '(:present :1sing)))
-
-(defn irregular-present-2sing? [word]
-  ;; <irregular present tense>
-  (let [person (get-in word '(:agr :person))
-        number (get-in word '(:agr :number))]
-    (and (= (get-in word '(:infl)) :present)
-         (= person :2nd) (= number :sing)
-         (string? (get-in word '(:present :2sing))))))
-
-(defn irregular-present-2sing [word]
-  (get-in word '(:present :2sing)))
-
-(defn irregular-present-3sing? [word]
-  ;; <irregular present tense>
-  (let [person (get-in word '(:agr :person))
-        number (get-in word '(:agr :number))]
-    (and (= (get-in word '(:infl)) :present)
-         (= person :3rd) (= number :sing)
-         (string? (get-in word '(:present :3sing))))))
-
-(defn irregular-present-3sing [word]
-  (get-in word '(:present :3sing)))
-
-(defn irregular-present-1plur? [word]
-  ;; <irregular present tense>
-  (let [person (get-in word '(:agr :person))
-        number (get-in word '(:agr :number))]
-    (and (= (get-in word '(:infl)) :present)
-         (= person :1st) (= number :plur)
-         (string? (get-in word '(:present :1plur))))))
-
-(defn irregular-present-1plur [word]
-  (get-in word '(:present :1plur)))
-
-(defn irregular-present-2plur? [word]
-  ;; <irregular present tense>
-  (let [person (get-in word '(:agr :person))
-        number (get-in word '(:agr :number))]
-    (and (= (get-in word '(:infl)) :present)
-         (= person :2nd) (= number :plur)
-         (string? (get-in word '(:present :2plur))))))
-
-(defn irregular-present-2plur [word]
-  (get-in word '(:present :2plur)))
-
-(defn irregular-present-3plur? [word]
-  ;; <irregular present tense>
-  (let [person (get-in word '(:agr :person))
-        number (get-in word '(:agr :number))]
-    (and (= (get-in word '(:infl)) :present)
-         (= person :3rd) (= number :plur)
-         (string? (get-in word '(:present :3plur))))))
-
-(defn irregular-present-3plur [word]
-  (get-in word '(:present :3plur)))
-
 (defn regular-present [word]
   (log/debug (str "(regular-present " (dag_unify.core/strip-refs word) ")"))
   (let [unifying-patterns

       (get-in word '(:b))))

(defn irregular-passato? [word]
  ;; TODO: do not use brackets: if there's an error about there being
  ;; not enough information, throw an exception explicitly.
  ;; return the irregular form in square brackets, indicating that there's
  ;; not enough information to conjugate the verb.
  (and (= :past (get-in word '(:infl)))
       (get-in word '(:passato))
       (get-in word '(:essere) true)


(defn suffix-of [word]
  "compute the final character given a lexical entry and agreement info in :agr."
  ;; TODO: convert to .edn
  (let [suffix (cond
                 
                 (and (= (get-in word '(:obj-agr :gender)) :fem)
