Contributed by Viktor Zumegen
Contributed by TypeMates
Contributed by Leonhard Laupichler
Contributed by Philip Jursch