Move event bubbling to builder function