In our Push–Model design, each device in the model has a list of inputs, numbered from zero at each one, identifying which input has changed during the event processing. For example, the MARMUX device has two 16–bit inputs and a single bit MARMUX.SEL that is the selector. In addition, each device has a list of outputs containing a pointer to the directly connected device object, and an integer specifying which of the inputs in the target device is connected. For example, for the ZEXT device, there is only one output, connected to the MARMUX device on input zero (the left side multiplex input). It is possible for a single output to be connected to more than one input. For example, the SR1 Out output for the register file object is connected both to the ALU, input two (the right side ALU source) and to the ADDR1MUX, input zero. It is not possible for more than one output to connect to the same input, excepting for bus objects with tri–state buffers