All code taken from following this playlist: https://www.youtube.com/playlist?list=PLF206E906175C7E07