[UPDATE] prevent listeners from being added multiple times.