                               (merge
                                 {:constructor constructor
                                  :show-validations? show-validations?}
-                                props)
-                              {:init-state {:focus focus}}))]
+                                props)))]
               (children-f control notice loading? success?))]))))))

         {:show-validations? false
          :notice nil
          :loading? false
          :success? false
          :focus (chan)})
       om/IWillMount
       (will-mount [_]
         ;; If a field gets focus, switch out of the :success? state (and back to normal).
         (let [focus (om/get-state owner :focus)]
           (go-loop []
               (when (<! focus)
                 (om/set-state! owner :success? false)
                 (recur)))))
       om/IWillUnmount
       (will-unmount [_]
         (close! (om/get-state owner :focus)))
       om/IRenderState
       (render-state [_ {:keys [show-validations? notice loading? success? focus]}]
         (html
           [:form
            (merge

        ;; Update our state based on the DOM immediately (and later on-change).
        (update-state (om/get-node owner "control")))
      om/IRenderState
      (render-state [_ {:keys [value validation-message] :as state}]
        (html
          [:div.validated-form-control
           [(:constructor props)
            (merge (dissoc props :constructor :show-validations?)
                   {:value value
                    :ref "control"
                    :on-change #(update-state (.-target %))})]
           (om/build transitionable-height
                     {:class "validation-message-container"
