Contributed by Frank Grießhammer
Contributed by Samihan Shani
Contributed by Matthijs Herzberg
Contributed by Chris Purcell