Contributed by Eric Dahl Palmér
Contributed by tobias schererbauer
Contributed by Stephen Coles
Contributed by Paul Poster