Lifting
This  called lifting.
The process repeated until the
generic algorithm has reached a
suitable level of abstraction.
At this point it should provide
maximal reusability while still
yielding efficient, concrete
implementations.