Contributed by Florian Hardwig
Contributed by Thomas Hirter
Contributed by Ralf Lobeck
Contributed by Stephen Coles