Contributed by Nicola Moscelli
Contributed by Andrea Benedetto
Contributed by Karl Stefan Andersson
Contributed by Stephen Coles