Options:
- Use interfaces to stabilize predicted changes and variations on the system
- Use methods that modify a single piece of data in the class definition
- Use abstract classes to represent real-world things
- Use child classes to override existing methods in parent classes