Contributed by Pedro Teles
Contributed by Bryson Stohr
Contributed by Akid Danial
Contributed by Cristiano Trapani