   }
 };
 int Controller::active_player = NONE;
-int Controller::interrupt_fired = NONE;
+volatile int Controller::interrupt_fired = NONE;
 
 Controller controller;
 
-void Button::handle_button_interrupt(int button) {
-  controller.handle_button_interrupt(button);
-};
+void handle_interrupt_0() {
+  Controller::handle_interrupt(0);
+}
+void handle_interrupt_1() {
+  Controller::handle_interrupt(1);
+}
 
 void setup(void) {
   Serial.begin(115200);

  }
};

class Controller {
public:
  Player *players[2];
  static int active_player;
  static int interrupt_fired;

  Controller() {
    players[0] = new Player(
     new Button(0, handle_button_interrupt_0),
     new Screen(4,5,6)
    );
    players[1] = new Player(
     new Button(1, handle_button_interrupt_1),
      new Screen(7,8,9)
    );


  static inline void handle_button_interrupt(int button);
};

class Screen {
private:
  char prev_text[12];
