Created by Thomas van der Putten
Contributed by Thomas Hirter
Contributed by Rafael Nobre
Contributed by Grant Hutchinson