The counterpart to active concurrency is sequential concurrency. Sequential objects run on the system thread, allowing the system event queue to process the events for the object along with those of other sequential objects in first in, first out (FIFO) order.
Active objects are depicted like their sequential cousins in object model diagrams, but with thicker borders. In the following figure, the CodeGenerator is depicted as an active object with a thick border, whereas the Model and CGProperties objects are sequential and therefore have thin borders.

IBM® Rational® Rhapsody® implements active objects by adding an object of a predefined type called RiCTask as a data member. This action enables the active object to reuse the capabilities of its embedded RiCTask member. For example:
typedef struct A A;
struct A {
RiCTask ric_task;
/* other members of A */
};