Created by Gabriel Figueiredo
Contributed by Ignacio Pazzaglia
Contributed by Nathan Regnier-Lange
Contributed by Stephen Coles