                       (expected-str (-> prob :expound.spec.problem/type) :expound/no-spec-name non-matching-value in [prob] opts))))))))
 
 (defmethod problem-group-str :problem/insufficient-input [_type spec-name val path problems opts]
-  (printer/format
-   "%s
-
-%s
-
-%s"
-   (header-label "Syntax error")
-   (show-spec-name spec-name (printer/indent (*value-str-fn* spec-name val path (problems/value-in val path))))
-   (expected-str _type spec-name val path problems opts)))
+  (format-err "Syntax error"
+              spec-name
+              val
+              path
+              (expected-str _type spec-name val path problems opts)))
 
 (defmethod expected-str :problem/extra-input [_type spec-name val path problems opts]
   (s/assert ::singleton problems)
   "has extra input")
 
 (defmethod problem-group-str :problem/extra-input [_type spec-name val path problems opts]
-  (printer/format
-   "%s
-
-%s
-
-%s"
-   (header-label "Syntax error")
-   (show-spec-name spec-name (printer/indent (*value-str-fn* spec-name val path (problems/value-in val path))))
-   (expected-str _type spec-name val path problems opts)))
+  (format-err "Syntax error"
+              spec-name
+              val
+              path
+              (expected-str _type spec-name val path problems opts)))
 
 (defmethod expected-str :problem/fspec-exception-failure [_type spec-name val path problems opts]
   (s/assert ::singleton problems)

     (printer/indent (string/join ", " (:val problem))))))

(defmethod problem-group-str :problem/fspec-exception-failure [_type spec-name val path problems opts]
  (printer/format
   "%s

%s

%s"
   (header-label "Exception")
   (printer/indent (*value-str-fn* spec-name val path (problems/value-in val path)))
   (expected-str _type spec-name val path problems opts)))

(defmethod expected-str :problem/fspec-ret-failure [_type spec-name val path problems opts]
  (s/assert ::singleton problems)
  (let [problem (first problems)]
    (printer/format
     "returned an invalid value

%s

%s"
     (ansi/color (printer/indent (pr-str (:val problem))) :bad-value)
     (predicate-errors problems))))

(defmethod problem-group-str :problem/fspec-ret-failure [_type spec-name val path problems opts]
  (printer/format
   "%s

%s

%s"
   (header-label "Function spec failed")
   (printer/indent (*value-str-fn* spec-name val path (problems/value-in val path)))
   (expected-str _type spec-name val path problems opts)))

(defmethod expected-str :problem/fspec-fn-failure [_type spec-name val path problems opts]

                            problems)]
    (->> (when (seq no-msgs)
           (printer/format
            "should satisfy\n\n%s"
            (preds no-msgs)))
         (conj (keep (fn [{:keys [expound/via]}]
                       (let [last-spec (last via)]
