Created by Matteo Dalmasso
Contributed by Nick Sherman
Contributed by XYZ Type
Contributed by Stephen Coles