All logic devices in our design derive from a base class Mani fold Object. The base class contains member variables with vectors of inputs (a pointer to the originating object and an identifying integer), and outputs (pointer to the directly connected object and an identify inginteger). The base class has a pure virtual function Get Output Value(int) that any directly connected device uses to query the value of the nth output. The base class also has virtual functions for Rising Edge and Falling Edge that are not used for asynchronous devices, and that are called at the appropriate time for synchronous devices. The implementation for clock objects is exactly as described previously above in the push– model discussion