Primary code and documentation by Robert Stone <talby@trap.mtview.ca.us>
Some algorithm design advice by Tom Lear <tom@trap.mtview.ca.us>
