you should always typehint the interface, to keep it compatible with event dispatchers using composition (the TraceableEventDispatcher for instance)