Re-factored button_controller and related models to be more object-oriented