add event emitters and listeners