*Disclaimer* The code for this exercise can be found here.