Contributed by Alex P.
Contributed by Bryson Stohr
Contributed by Javi Gonzalez
Contributed by Yuliadhi Wicaksono