I understood your example, but....you make interaction with your components(widgets) directly, what i want to do is like have a widget (independent from the others) that can publish/subscribe events via a mediator. If i develop a module(widget) I want that my collegues just know what are the events they can subscribe to, so they can work without know the "class" names of my components (publishing events with namespaces would help a lot).
You have one observer but I can have potentially many observers, how you could handle many observers with your archiecture?