Contributed by Florian Hardwig
Contributed by Brian Phillips
Contributed by Ciarán
Contributed by Toshi Omagari