Exercise 4.73 ~ 4.74