buttons refactored (2nd round)