               dt))]
     (->> dt (map reshape*) vec add-object-protocol add-defaults)))
 
-;; TODO: probably need to reshape dt to implement defaults
 (defn defui* [name forms]
   (let [{:keys [dt statics]} (collect-statics forms)
         [other-protocols obj-dt] (split-with (complement '#{Object}) dt)

                     cellophane.next/*shared*     (cellophane.next/shared this#)
                     cellophane.next/*instrument* (cellophane.next/instrument this#)
                     cellophane.next/*parent*     this#]
            ~@body))))}
   :defaults
   `{~'componentWillMount
     ([this#])
     ~'componentDidMount
     ([this#])
     ~'render
     ([this#])}})



                  cellophane.protocols/IReactComponent
                  (~'-render [this#]
                   (p/componentWillMount this#)
                   (p/render this#))
                  (~'-props [this]
