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