                        (overc parent child))
                      comp-children)))
    true
-   (let [check-result (comp-pre-checks parent comp)
-         result (if check-result :fail
-                      (unifyc parent
-                              {:comp comp}))
-         is-fail? (fail? result)]
+   (let [result (unifyc parent
+                        {:comp comp})
+         is-fail? (= :fail result)]
      (if (not is-fail?)
        (do
          (log/debug (str "overc: " (get-in parent [:rule]) " -> " (get-in comp [:rule]

      (log/trace (str "overh: parent: " parent))
      (log/trace (str "overh: head: " head))))
  ;; TODO: get rid of all this type-checking and use
  ;; whatever the smart people use for Clojure argument type-checking.
  (cond

   (nil? head)

    (if (= result true)
      (log/debug (str "check-vals caught a fail: p1=" p1 "; p2=" p2 "; fail-path:" (fail-path m1 m2))))
    result))

(defn moreover-head [parent child & [morph]]
  (let [morph (if morph morph (fn [x] (str "(no morph function provided:" x)))]
