Created by Chad Schram
Contributed by Arnaud Aubry
Contributed by Florian Runge
Contributed by Stephen Coles
Contributed by Florian Hardwig