This document discusses generic functions, which allow functions to be selected based on the context or type of arguments passed. It provides examples of using generic functions in TurboGears to make frameworks more extensible and data-driven. Finally, it discusses design considerations for generic functions like limiting introspection and avoiding cryptic errors.