Contributed by Florian Hardwig
Contributed by Richard Baird
Contributed by Paweł Rosner
Contributed by Shiva Nallaperumal
Contributed by Maxime P.