Contributed by Eyad Al-Samman
Contributed by Matthijs Sluiter
Contributed by Wojciech Staniewski
Contributed by Stephen Coles