Contributed by Andreas Kofler
Contributed by Akid Danial
Contributed by John Rice
Contributed by Florian Hardwig