This document discusses container classes in object-oriented programming. It examines tensions between strong typing and reuse in statically typed languages. Three approaches are presented to address this issue: using substitution and downcasting, substitution and overriding, and generics. Iterators and visitors are also discussed as solutions for traversing container elements without exposing internal structures.