Contributed by David Heasty
Contributed by Adel Zeghoudi
Contributed by Matt Yow
Contributed by Florian Hardwig