(still working on the rewrite)
intermediate checkin: LOTS of things still changing
intermediate checkin
intermediate checkin