working TouchListener refactor for buttons
abstracted button behavior