Contributed by Florian Hardwig
Contributed by Axl Gamez González
Contributed by Stephen Coles
Contributed by Sam Wilkes