Contributed by Jerry van Kooten
Contributed by Alexey Nevsky
Contributed by Bryson Stohr
Contributed by Florian Hardwig