Contributed by Bryson Stohr
Contributed by Patrick Concannon
Contributed by Nathan Prost
Contributed by Florian Hardwig