Contributed by Diego Aguilar Villalobos
Contributed by Nikolas Wrobel
Contributed by TypeMates
Contributed by Stephen Coles