adding event handling interface