 #define WATCH_COLOR        (COLOR_BLUE)
 
 typedef struct {
-  uint16_t next_second_millis;
+  millis_t next_second_millis;
   uint8_t seconds;
   uint8_t minutes;
   uint8_t hours;
   uint8_t month;
   uint8_t day;
+
+  uint16_t year;
+  // set to 1 if year is a leap year, 0 otherwise
+  uint8_t leapyear;
+
+  // set this when we need to redraw everything regardless of what
+  // watch_tick returns.
+  uint8_t needs_redraw;
 } Watch_t;
 
 uint8_t _watch_days_per_month[] = {

       break;
  }

  uint8_t clearwidth = RGB_OLED_WIDTH*toclear/8;
  oled.clearWindow(RGB_OLED_WIDTH-clearwidth, ypos, RGB_OLED_WIDTH, FONT_Y*2);

  sprintf(_sbuf, "%02d:%02d:%02d", hours, minutes, seconds);
  oled.drawString(_sbuf, xpos, ypos, FONT_SIZE*2, WATCH_COLOR);
}

/**


Watch_t Watch = {0};

void watch_init(millis_t now) {
  Watch.next_second_millis = now;
  Watch.needs_redraw = 1;
}

/**
