This document discusses reuse contracts as a basis for investigating code reusability in Smalltalk. It covers problems with code reuse and evolution when requirements change. Reuse contracts are proposed as a way to formally document how classes can be reused through inheritance, composition, and other operators. The contracts make explicit the specialization interface and how components are reused. The document discusses how reuse contracts can help with tasks like estimating effort for customization, analyzing evolution impacts, and extracting reuse documentation from source code.