The interaction logic is provisionally basic, it needs improvement to deal bad state updates when the interaction isn't trivial. e.g. Touching a button and then sliding off the button does not deactivate the button.