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