finish exercise 2.21 ~ 3.23 insection 3.3.2