Contributed by Florian Hardwig
Contributed by Jérôme Knebusch
Contributed by Alain Papazian
Contributed by Stephen Coles