cleaned up EventDispatcher macro and made it more flexible
VirtualNode forwards event logic to dom node