Exercise 3 full commit