make sure multiple callbacks will not be triggered