       return;
     }
 
-    update_timer(&players[active_player]);
+    update_timer(players[active_player].clock);
     update_display(&players[active_player]);
   }
 

  serprintf("Initializing...");

  for(unsigned int i = 0; i < sizeof(players) / sizeof(players[0]); i++) {
    init_display(&players[i]);
    update_display(&players[i]);
    attachInterrupt(players[i].button->interrupt_number, players[i].button->interrupt_handler, RISING);
  }

};

typedef struct {
  unsigned long time_remaining_ms;
  unsigned long last_update_ms;
} Clock;

typedef struct {
  char display_time[12];
  int display_width_chars;
  Clock *clock;
  Button *button;
  Screen *screen;
} Player;

Player players[2] = { 
  {
    .display_time = {},
    .display_width_chars = 0,
    .clock = new Clock,
    .button = &buttons[0],
    .screen = &screens[0]
  },
  {
    .display_time = {},
    .display_width_chars = 0,
    .clock = new Clock,
    .button = &buttons[1],
    .screen = &screens[1]
  }
};

void init_player(Player *p) {
  Screen *screen = p->screen;
  screen->tft = new TFT(screen->cs_pin, screen->dc_pin, screen->rst_pin);
  screen->tft->begin();
