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