Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.

BERTRAND MEYER