Contributed by Rob Hudson
Contributed by Florian Hardwig
Contributed by Martin LAVIELLE
Contributed by Stephen Coles