depend on vtree/vdom