I have the feeling you are confusing things here. In your implementation the Event is aware of its own listeners and even a callback. This is wrong imho. An Event is just a class that holds data and that is given to a listener. Only the event manager is aware of listeners, not events.