only register event once