Contributed by Stephen Coles
Contributed by Mike Blystone
Contributed by Jon Ternent
Contributed by Axl Gamez González