Contributed by Jonas Pelzer
Contributed by Florian Hardwig
Contributed by Cory Hassmann
Contributed by Stephen Coles
Contributed by Andy Kelly