Solve Exercise 3.28
Work in progress on Exercise 3.29