complete chapter 5 -minus TDD stuff