You will notice that in both the appt.tu
and time.tu files, the word "opaque" occurs in the export list.
For example:
export opaque ApptType, maxMessageWidth, Empty, ...
The "opaque" is a keyword in OOT, and it applies only to
the next item, in this case ApptType. Why is it there?
ApptType is exported
so that the user of this module can create as many appointments as needed.
But it is exported "opaque" so that the user of the
module can only talk about things of type ApptType. The user of the module
cannot itself look into things of this type, for instance to set or examine
a field of the record. (Exported routines provide these operations instead.)