liberalised version of Symfony Event Dispatcher