Contributed by Rutger van Aken
Contributed by DSType
Contributed by Stephen Coles
Contributed by Shiva Nallaperumal