added removeEventListener feature