adding buzzer controller, refactoring common methods to abstract superclass