Contributed by D Jones
Contributed by Joshua Bodwell
Contributed by Florian Hardwig
Contributed by Stephen Coles