Version #2 for the day, with better structure and some changes.  Yay, subtle progress.