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