Contributed by Christopher Slye
Contributed by Davide Moschini
Contributed by Florian Hardwig
Contributed by Stephen Coles