Imagine that your "Services" layer needs needs to send off an event that some data has changed. One way to do this would be to bubble the event to the parent layer and then let that layer bubble the event up again. For example, lets say that the Service layer changed the Customer and it wants to let any interested parties know (as it should) through an event. So it sends a "CustomerChanged" event notification. Since the only object who is watching the Service layer is the Model layer, the model layer will grab the event and then re-publish it again (bubbling it up) the object graph). As you can tell, its a royal pain to do this. Imagine the amount of code you have to write. You've to write a ton of plumbing just to bubble the event from the service to the model to the view model to the view, and vice versa. This is where an event aggregator comes in.