| 1) Alternative Implementations
| ------------------------------

Your specification does not indicate which side is in charge of
notifying an event. It may be one of the reasons why there are so many
specifications of the "same" service. You should have a look at the
COS Events (CORBA Object Services). In fact, there are four ways to
define the different interactions between a consumer and a
producer. IMHO, you cannot easily write such a service with only one
(or even few) access-to-subprogram type. You will need many of them
and this may become difficult to handle them manually (like a
combinatory explosion). Therefore, it is much easier to use OOP and to
have several primitives of only few access-to-object types.

--  Laurent