Contributed by Ivo Gabrowitsch
Contributed by Nikolas Wrobel
Contributed by Pierre Jeanneau
Contributed by Simon B