add event and listener type check decorator