 
   for(unsigned int i = 0; i < sizeof(players) / sizeof(players[0]); i++) {
     players[i]->init();
+    players[i]->clock->start();
     players[i]->update_display();
   }
 

    last_update_ms = 0;
  };

  void update() {
    unsigned long time_since_last_update_ms = millis() - last_update_ms;
    if (time_remaining_ms < time_since_last_update_ms) {


  Button(int interrupt_number, void (*interrupt_handler)()) {
    attachInterrupt(interrupt_number, interrupt_handler, RISING);
  };

  static inline void handle_button_interrupt(int button) {
    button_pressed = button;
  };
};
volatile int Button::button_pressed = NONE;

void handle_button_interrupt_0() {
  Button::handle_button_interrupt(0);
}
void handle_button_interrupt_1() {
  Button::handle_button_interrupt(1);
}

class Screen {
