Components can only be plugged together if the output of one previous (set of) component(s) is equal to the mandatory input requirements of the following component(s). Thus, the essential description of a component actually comprises only input and output that are described fully in terms of data types and their meaning (semantics). The algorithms' or rules' descriptions need only be included when there are several alternative ways to transform one type of input into one type of output – possibly with different accuracy, speed, etc.