Contributed by Maxime Francout
Contributed by Alfredo Marco Pradil
Contributed by Andrej Sevcik
Contributed by Kyle Nathan