Contributed by Maxime P.
Contributed by Stephen Coles
Contributed by (Harald) Peter Ström
Contributed by Patch Hofweber