           ;; TODO - grab everything with let binding
           caller (:expound/caller explain-data')
           form (:expound/form explain-data')
-          problems1 (->> explain-data'
-                         :expound/problems
-                         grouped-problems1
-                         (safe-sort-by :expound/in paths/compare-paths))]
+          problems (->> explain-data'
+                        :expound/problems
+                        groups
+                        (safe-sort-by :expound/in paths/compare-paths))]
 
       (printer/no-trailing-whitespace
        (str

       "")
     (let [failure nil
           non-matching-value [:expound/value-that-should-never-match]
           problems1 (grouped-problems1 (annotate-1*
                                         failure
                                         (map #(dissoc % :reason)
                                              (map
                                               #(dissoc % :expound.spec.problem/type)
                                               problems))))]
       (apply str (for [prob problems1]
                    (let [in (-> prob :expound/in)]
                      (expected-str (-> prob :expound.spec.problem/type) :expound/no-spec-name non-matching-value in [prob] opts))))))))


        {:keys [type spec-name val in]} (problem-parts problem opts)]
    (expected-str type spec-name val in problems opts)))

(defmethod problem-group-str :problem/value-group [_type spec-name val path problems opts]
  (let [problem (first problems)
        subproblems (:problems problem)
        {:keys [form in]} (problem-parts (first subproblems) opts)
