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