Contributed by walkingfearless
Contributed by Stephen Coles
Contributed by Shiva Nallaperumal
Contributed by nils poppe
Contributed by Jake Fleming
Contributed by DSType
Contributed by Rutger van Aken