only one listener should be registered