added exercise 2.83~2.90