mostly-ineffective button refactor