Contributed by Florian Hardwig
Contributed by Alp Atalan
Contributed by Gurth
Contributed by Jorge Iván Moreno Majul
Contributed by Stephen Coles