Contributed by Florian Hardwig
Contributed by Tom Koch
Contributed by Benedikt Bramböck
Contributed by Stefan Huebsch