First commit where I feel comfortable that this is useful to anyone.

is in a marginally working state, like a poorly-cared-for 18-year-old car.

may not always do as you expect, and is definitely throwing out some data. I'll work on that.