    (fail? (unifyc (get-in parent [:comp :synsem :subcat] :top)
                   (get-in child [:synsem :subcat] :top)))))
 
-(defn moreover-head [parent child lexfn-sem-impl & [morph]]
+(defn moreover-head [parent child & [morph]]
   (let [morph (if morph morph (fn [x] (strip-refs (dissoc x :serialized))))]
     (log/trace (str "moreover-head (candidate) parent: [" (get-in parent [:rule]) "] '" (morph parent) "' sem:    " (strip-refs (get-in parent '(:synsem :sem) :no-semantics))))
     (log/trace (str "moreover-head (candidate) head child: [" (get-in parent [:child]) "] '" (morph child) "' sem:" (strip-refs (get-in child '(:synsem :sem) :top))))

(ns babel.over
  (:refer-clojure :exclude [get get-in merge resolve find parents])
  (:require
   [babel.encyclopedia :refer [null-sem-impl sem-impl]]
   [babel.exception :refer [exception]]
   [babel.lexiconfn :refer [get-fail-path]]
   [clojure.string :as string]

   true
   ;; TODO: 'true' here assumes that both parent and head are maps: make this assumption explicit,
   ;; and save 'true' for errors.
   (let [result (moreover-head parent head)
         is-fail? (fail? result)
         label (if (get-in parent [:rule]) (get-in parent [:rule]) (:comment parent))]
     (if (not is-fail?)
