tdd: 5. refactor
tdd: 6. fails
tdd: 6. passes
tdd: 6. refactor
tdd: 7. fails
tdd: 7. passes
tdd: 7. refactor