The actual work of the simulation is done by entities which interact with each other by sending timestamped events. Incoming events are processed by an entity's event handler, which can update internal state and possibly generate more events.
Figure 3 illustrates the basic classes. An entity
can send events using its output ports. Events are transmitted
via connections which are made to the input ports of a number of
other entities. Connections have a greater than zero delay associated
with them, so events arrive some amount of simulated time later.