Contributed by Rebenque
Contributed by Fernando Molina
Contributed by nils poppe
Contributed by Aleksandra Braska
Contributed by JAF