Contributed by Florian Hardwig
Contributed by Ramdwin Gonzalez Otero
Contributed by Nick Sherman
Contributed by Stephen Coles