Contributed by Florian Hardwig
Contributed by Fabrizio Schiavi
Contributed by Karl Stefan Andersson
Contributed by TypeMates