exercise 4.55-4.56
exercise 4.57-4.60 & bugs of 4.55 and 4.56 fixed