Created by Kaden Hendron
Contributed by hubert munier
Contributed by Nick Sherman
Contributed by Gareth Hague