I revisited Hoffmanns' paper to look at the main battle tank example and had a question regarding the Separation of Events from operational contracts. Why would one want create an Event called reqCalcCmdrLosCmd() and then an operational contract called CalcCmdrLosCmd()? Why not just Keep one of them? Afterall, the fact that you are invoking via reqCalcCmdrLosCmd() automatically adds that Event to the object MBT in Rhapsody. So why go through the effort of creating a private operation?