     (= (get-in word [:infl]) :conditional)
     (regular-conditional word)
     
-    (irregular-imperfect-1sing? word)
-    (irregular-imperfect-1sing word)
-    
-    (irregular-imperfect-2sing? word)
-    (irregular-imperfect-2sing word)
-
-    (irregular-imperfect-3sing? word)
-    (irregular-imperfect-3sing word)
-    
-    (irregular-imperfect-1plur? word)
-    (irregular-imperfect-1plur word)
-    
-    (irregular-imperfect-2plur? word)
-    (irregular-imperfect-2plur word)
-    
-    (irregular-imperfect-3plur? word)
-    (irregular-imperfect-3plur word)
+    (and
+     (= (get-in word '(:infl)) :imperfect)
+     (map? (get-in word '(:imperfect))))
+    (irregular-imperfect word)
     
     (= (get-in word [:infl]) :imperfect)
     (regular-imperfect word)

        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

    (= :past (get-in word '(:infl)))
    (regular-passato word)
    
    (and
     (= (get-in word '(:infl)) :present)
     (map? (get-in word '(:present)))
     (not (nil? (irregular-present word))))
    (irregular-present word)
    
    (= (get-in word '(:infl)) :present)
    (regular-present word)
