finish exercise 5.6.1
finish exercise 5.6.2
finish exercise 5.6.3
finish exercise 5.6.4