finished exercise 8.12
finished 9.3
finished 9.4