Contributed by Anthony Lam
Contributed by Frank Grießhammer
Contributed by Yi Mao
Contributed by CJ Dunn