Contributed by Stephen Coles
Contributed by Patrice Barnabé
Contributed by Florian Hardwig
Contributed by Richard Baird