@reverendz the how they work part

The sender calls
this.sendNotification(x,y)

Where x is the notification code some receiving module has published to accomplish the function you want
And y is whatever parameters that notification code might require

ALL modules running will receive a call at their notificationReceived(x,y) function

Any module receiving the message that understands what to do with code x, can handle it

At some time later one of the running modules will call this.sendNotification(q,z). With a response and ALL modules running will hear it.