Contributed by Daniel Ioannou
Contributed by Stephen Coles
Contributed by Juri Zaech
Contributed by Ata Rehman