           (rf/dispatch [:re-form/input-removed form-name path]))
 
         update-binding
-        (fn [{new-soft-key :soft-key new-form :form-name new-path :path validators :validators :as new-state}]
-          (swap! state (fn [{soft-key :soft-key val :value err :errors path :path form :form-name :as curr-state}]
-                         (if (or (not= soft-key new-soft-key) (not= path new-path) (not= form new-form))
+        (fn [{new-form :form-name new-path :path validators :validators :as new-state}]
+          (swap! state (fn [{val :value err :errors path :path form :form-name :as curr-state}]
+                         (if (or (not= path new-path) (not= form new-form))
                            (do
                              (when (and form path)
                                (unbind-input form path))

                               ;; future validations
                               (add-watch new-val-subscr :binded-field run-validators)

                               {:soft-key new-soft-key
                                :form-name new-form
                                :path new-path
                                :value new-val-subscr
                                :validators validators}))
                           (assoc curr-state :validators validators)))))]

    (reagent/create-class
     {:display-name :binded-field

             body)])}))

(defn- validate-and-update-errors [form-name path validators val]
  (if (empty? validators)
    (rf/dispatch [:re-form/validation-errors form-name {path nil}])
    (let [errors
          (reduce (fn [acc validator]
                    (if-let [res (validator val path)]
