Remove Event and Listener base class; use Trait and interfaces instead