@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.