Generics
Approach to simplify and reuse
(remember lazy programmer).
Focuses on finding commonality
among similar implementations of the
same algorithm.
Providing suitable abstractions so that
a single, generic algorithm can cover
many concrete implementations.