Contribution by Kyle Gallatin
Contribution by David Nicholson
Contribution by Sebastian Montero
Submissions welcome at GitHub.