       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);
  }

  serprintf("button %d pressed\r\n", button);
  serprintf("before: active_player=%d, button_pressed=%d\r\n", active_player, button_pressed);
  active_player = (button_pressed + 1) % 2;
  players[active_player].clock->last_update_ms = millis();
  button_pressed = NONE;
  serprintf("after:  active_player=%d, button_pressed=%d\r\n", active_player, button_pressed);
}

int out_of_time(Player *p) {
  return p->clock->time_remaining_ms <= 0;
}

void setup(void) {
