feat: delegating event handler