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