Examples are subroutine library, data abstraction, and generic program units.
For example, one can be write a generic sort function of a list. The precedence rule used in sorting can also be generic. The generic function can then be instantiated to sort a list of integers in ascending order or to sort a list of strings in lexical order. Generic units increase the modifiability of a program unit allowing a program part to be adapted to many slightly different applications. A program part cannot be executed by itself, whereas a system can.