                     (vec (range-error-path res))
                     " in configuration map: "
                     "value "
-                    (range-error-value res)
+                    (pr-str (range-error-value res))
                     " should be in range "
-                    (if-let [r (range-error-range res)]
-                      (range-description r)
-                      "<no range>")
+                    (let [r (range-error-range res)]
+                      (if (range? r)
+                        (range-description r)
+                        ;; FIXME: should look at this
+                        (pr-str r)))
                     " but isn't")
                res)
       (really-make-configuration res schema))))

  (letfn []
    (cond
      (map-schema? schema)
      (if (not (map? config))
        (make-range-error nil path config)
        (let [sections-map (map-schema-sections-map schema)
              res
              ;; go through the settings first, as we need to collect

                                 (dissoc settings-map key))))
                      (if (contains? sections-map key) ; do sections later
                        (recur (next entries) c inherited-map settings-map)
                        (make-range-error :unknown-section (concat path [key]) val))))
                  [(merge c (complete-settings inherited-map settings-map))
                   inherited-map settings-map]))]
          (if (range-error? res)
