finish exercise 6.5.1
finish exercise 6.5.2
finish exercise 6.5.3