This is an example of object oriented design using type composition rather than inheritance to implement polymorphic reuse of code.