Contributed by Kontour
Contributed by Erik Pedersen
Contributed by Robert Beatty
Contributed by Stephen Coles