Refactoring chapter 5