 
   IVirtualDOM
   (-vdom-node [this])
-  (-vdom-element [this])
+  (-vdom-simple-element [this])
   (-vdom-head [this]
     (when (> (.-length elements) 0)
       (vdom-head (aget elements 0))))

          new-vdom))
      (dom-remove-replace node new-vdom))))

(deftype ReactiveElement [id ^:mutable parent the-ref binding-info ^:mutable cur-vdom ^:mutable dirty
                          ^:mutable updating ^:mutable disposed]
  Object
  (dispose [this]

  (-vdom-node [this]
    (.ensureNode this)
    node)
  (-vdom-simple-element [this] this)
  (-vdom-insert [this dom-parent dom-before]
    (.ensureNode this)
    (dom-insert dom-parent node dom-before))
  (-vdom-remove [this]
    (dom-remove node))
  (-vdom-replace [this new-vdom]
    (if-let [new-elem (vdom-simple-element new-vdom)]
      (if (instance? DOMTextNode new-vdom)
        (do
          (.ensureNode this)
