finish from book 3.5.0 to 3.5.2 exercise 3.56