Contributed by CAST
Contributed by TypeTogether
Contributed by Vykintas Characiejus
Contributed by Stephen Coles