added ex3.21~3.23