Finished exercises 3.5.1, 3.5.2