Contributed by Orin Vrkaš
Contributed by Nguyen Le
Contributed by Lars Høie
Contributed by Sean Kane
Contributed by Jan Myślnik