         (restricted-value-error-msg error-value)
 
         :else
-        [(str "^-- Task " (pr-str error-value) " is invalid.")]))
+        [(str "Task " (pr-str error-value) " is invalid.")]))
 
 (defmethod predicate-error-msg 'keyword?
-  [entry error-data] "a keyword")
+  [entry error-data] ["a keyword"])
 
 (defmethod predicate-error-msg 'keyword-namespaced?
-  [entry error-data] "a namespaced keyword")
+  [entry error-data] ["a namespaced keyword"])
 
 (defmethod predicate-error-msg 'integer?
-  [entry error-data] "an integer")
+  [entry error-data] ["an integer"])
 
 (defmethod predicate-error-msg 'anything?
-  [entry error-data] "any value")
+  [entry error-data] ["any value"])
 
 (defmethod predicate-error-msg 'edge-two-nodes?
   [entry {:keys [error-value]}]

        context (get-in job (take n-deep (:path error-data)))        
        entry (get-in model [(structure-names structure-type) :model faulty-key])
        match-f (match-map-or-val error-data)
        msgs (type-error-msg faulty-val found-type expected-type)
        error-f (display-err-map-or-val msgs)]
    (show-header structure-type faulty-key)
    (show-value context (- path-len n-deep) match-f error-f)

    (str (apply str result) raw)))

(defn closest-match [choices faulty-key]
  (when (keyword? faulty-key)
    (let [faulty-str (name faulty-key)
          distances
          (map
           (fn [k]
             [k (levenshtein faulty-str (name k))])
           choices)]
      (when (seq distances)
        (let [candidate (apply min-key second distances)]
          ;; Don't guess wildly. Make sure it's at least
          ;; a guess within reason.
          (when (<= (second candidate) 5)
            (first candidate)))))))

(defn show-header [structure-type faulty-key]
  (println "------ Onyx Job Error -----")
