add an emit method to virtualNode
add merge-props function