added multiple eventlistener support