self changed to this for add event listeners