Add event system (Symfony/EventDispatcher), fix demos