   ErrorContainer
   (errors [this]
     (reaction (->> (concat @(path-value form ::field-errors path nil)
-                           [@(path-value form ::validator-errors path)])
+                           @(path-errors form path))
                    (remove empty?))))
   Validatable
   (valid? [this]

  (path-value [this type path]
              [this type path default]))

(defprotocol CoercedValue
  (str-value [this])
  (set-str-value! [this val]))

       ^{:key i} [:li message])]))

(defcard-rg rg-form
            (fn [state]
              (let [form      (create-form
                                @state
                                {:field     [st/required st/string]
                                 :int-field [st/required st/integer]})
                    int-field (field form :int [:int-field])]
                (fn [state]
                  [:form {:on-submit #(do
                                       (prn "submit" @(value form {}) @state)
                                       (reset! state @(value form {}))
                                       (.preventDefault %))}
                   [:div "Valid?:" (if @(valid? form) "T" "F")]
                   [my-field "text" (field form :text [:field])]
                   [my-field "text" (field form :int [:int-field])]
                   [:select
                    {:value     @(str-value int-field)
                     :on-change (handle-str-value int-field)}
                    [:option {:value 1} "1"]
                    [:option {:value 2} "2"]]
                   [:input {:type "submit"}]
                   (.log js/console @(valid? form) (clj->js @(:value form)))
                   ])))
            {:field     "value"
             :int-field 1}

            {:inspect-data true}
            )

(defn main []
  ;; conditionally start the app based on whether the #main-app-area
