ExtendSim uses both a push and pull mechanism to propel items through a model. Residence blocks (residence blocks are any block that can hold an item for a non-zero amount of time, such as queues, activities, resource blocks, and some decision blocks) attempt to pull items in until it is full or until there are no more items to pull in. Then the residence blocks will try to push items out until there are no items left or the downstream path is blocked. In some cases, the residence block will hold the item for a specific time delay before attempting to push the item out.