add event bubbling support