Contributed by Florian Hardwig
Contributed by Paulo Goode
Contributed by Steve O Connell
Contributed by Johannes Vandenheuvel
Contributed by Stephen Coles