Source: https://eprints.lincoln.ac.uk/47487/1/Farndale Sam - Computer Science - February 2020.pdf