- Several decision-making constructs
- Separate interface and implementation file