Contributed by Martyn Wilson
Contributed by Bryson Stohr
Contributed by Mark Butchko
Contributed by Florian Hardwig