We need to document when and how the base classes should be used. We need to document the patterns used.