Love it. Fixed. Not entirely happy with the API now, but it is a good start.

Ready for another look.