Agreed!  I've removed my "mode_changed" event from this PR so that we can implement it completely in a follow on changeset, which would also include your suggested refactoring.