A Declarative approach to a Widget Implementation. Widgets consume Events and change themselves accordingly.