tidy up button handling