I've divided this up into stages as it was getting quite long and it gives me more space for awful puns: