Listeners usually use `add/remove` instead of register/deregister. Up to you:)