Marked methods virtual to allow subclassing with custom Listener