    opts
    (expected-str type spec-name val path problems opts)))
 
-(defmethod expected-str :problem/fspec-ret-failure [_type spec-name val path problems opts]
+(defmethod expected-str :expound.problem/fspec-ret-failure [_type spec-name val path problems opts]
   (s/assert ::singleton problems)
   (let [problem (first problems)]
     (printer/format

    (:expound.spec.problem/type problem)

    (insufficient-input? failure problem)
    ;; FIXME - make this namespaced to expound
    :problem/insufficient-input

    (extra-input? failure problem)
    :problem/extra-input

    (not-in-set? failure problem)
    :problem/not-in-set

    (missing-key? failure problem)
    :problem/missing-key

    (missing-spec? failure problem)
    :problem/missing-spec

    (fspec-exception-failure? failure problem)
    :problem/fspec-exception-failure

    (fspec-ret-failure? failure problem)
    :problem/fspec-ret-failure

    (fspec-fn-failure? failure problem)
    :problem/fspec-fn-failure

    (check-ret-failure? failure problem)
    :problem/check-ret-failure

    (check-fn-failure? failure problem)
    :problem/check-fn-failure

    :else
    :problem/unknown))

;;; TODO clean up
(defn ^:private lcs [[x & xs] [y & ys]]

   (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 :expound.problem/unknown [_type spec-name val path problems opts]
  (predicate-errors problems))

(defmethod problem-group-str :expound.problem/unknown [type spec-name val path problems opts]
  (assert (apply = (map :val problems)) (str util/assert-message ": All values should be the same, but they are " problems))
  (format-err
   "Spec failed"
