Exercise 43. This is the code from the exercise, not mine because
I am not clever enough to do this. One day...