Contributed by Mark Bloom
Contributed by Julian Grönberg
Contributed by Florian Hardwig
Contributed by Maurizio Piacenza