=head3 shouldn't be so long.
Implement add_listener.