Don't repeat self in constructor.
Properly implement the listener pattern.

Should support multiple listeners, reasonably expected during testing or
instrumentation.