Contributed by Kate Taraskina
Contributed by james millner
Contributed by Stephen Coles
Contributed by Matthijs Sluiter