adding event listening support