   (-vdom-node [this]
     (.ensureNode this)
     node)
-  (-vdom-element [this] this)
+  (-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-element new-vdom)]
+    (if-let [new-elem (vdom-simple-element new-vdom)]
       (if (and (instance? DOMElement new-elem)
                (identical? (.-ns-uri new-elem) ns-uri)
-               (identical? (.-tag new-elem) tag))
+               (identical? (.-tag new-elem) tag)
+               false ;; disabled
+               )
         (do
           ;; TODO do diff replace
           this)

  (-vdom-head [this] (vdom-head cur-elem))
  (-vdom-tail [this] (vdom-tail cur-elem))
  (-vdom-node [this] (vdom-node cur-elem))
  (-vdom-element [this] (vdom-element cur-elem))
  (-vdom-insert [this dom-parent dom-before]
    (set! (.-parent this) dom-parent)
    (.show-new-elem this (.get-new-elem this) dom-before)

  (-vdom-tail [this])
  (-vdom-replace [this new-vdom])
  (-vdom-node [this])
  (-vdom-simple-element [this]))

(defn vdom-node [this]
  (if (dom-node? this)
    this
    (-vdom-node this)))

(defn vdom-simple-element [this]
  (if (dom-node? this)
    this
    (-vdom-simple-element this)))

(defn dom-insert [dom-node dom-parent dom-before]
  (if dom-before
