- Introduced Phase 3
- Extrapolated shared functionality into common parent class