Contributed by Frederik Plesner
Contributed by Adelina Shaydullina
Contributed by Ariel Martin Perez
Contributed by Martin LAVIELLE