Contributed by Cassidy Reynolds
Contributed by Keita Yamada
Contributed by Johannes Stoll
Contributed by Martin Piñeyro