added exercise 3.40~3.44