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