Final Version

This has a number of little bug fixes and some extra polish. I’ve
organised it so it’s a bit less of a coding jumble, but I think it’s
time to move on to the next project.