Contributed by Gabriel Figueiredo
Contributed by Miles Newlyn
Contributed by Mathieu Triay
Contributed by Florian Hardwig