Contributed by Vykintas Characiejus
Contributed by Harley Johnston
Contributed by Florian Hardwig
Contributed by Stephen Coles
Contributed by brianleli