Long day's work

This is a complete merge because I had to move my local repository
mid-development, and Git for Mac saw the whole thing as new files.