Contributed by Florian Hardwig
Contributed by harrison marshall
Contributed by Giles Booth
Contributed by Stephen Coles