          (log/debug (str "overc success: " (get-in parent [:rule]) " -> " (get-in comp [:rule]
                                                                           (get-in comp [:synsem :sem :pred]
                                                                                   "(no pred for comp)"))))
-         (list result))
+         [result])
        (log/debug (str "overc: fail-path for rule: " (:rule parent) ":"
                        (fail-path (copy parent) {:comp (copy comp)})))))))
 

    (let [result (unify! (copy parent)
                         {:head (copy head)})]
      (if (not (= :fail result))
        (list result)
        (log/debug (str "overh: fail-path for rule: " (:rule parent) ":"
                        (fail-path (copy parent) {:head (copy head)})))))))


;;    should be treated the same as empty list.
(defn over [parents child1 & [child2]]
  (cond (map? parents)
        (over [parents] child1 child2)

        true
        (mapcat
