Typo's, structure and attribution to @spikewilliams