Ex. 11.5.3. Added one refactoring, but there looks like there is an opportunity for more.