See my earlier comment, but I found it easier to have one place to store the state of these three buttons, rather than try to infer their state by the state of the system. The way this works is:
* buttonsState is the authoritative location of the state (enabled or disabled) of any given button in the interface
* various events can change the state of any one of the buttons
* also, each time _update() is run, we can run some logic in _setButtonState to make sure that we have the correct setting for each button
* _updateButtons is then called, which applies any changes made to buttonsState. _updateButtons is made in such a way that it can accept any button in the interface - so if we add new buttons in the future, we can continue to use this same system.

That's the idea, but I am always open to better methods.