TDD cycle: 1st run-through.
TDD cycle: 2nd run-through.
Refactoring to remove duplication.
TDD cycle: 4th run-through.