The commit history for the tour mode branches had gotten really messy, so here's a squashed fresh start.
The current version has been tested pretty extensively in production but still needs better test coverage before merging
This change is