Contributed by Al Campbell
Contributed by Florian Hardwig
Contributed by Pieter van Rosmalen
Contributed by Stephen Coles