   mm_retirement.add_item(&mi_retirement_year,  &mcb_retirement_year);
   mm_retirement.add_item(&mi_retirement_month, &mcb_retirement_month);
   mm_retirement.add_item(&mi_retirement_day,   &mcb_retirement_day);
-}
-
-// http://www.nist.gov/pml/div688/dst.cfm
-bool in_dst(){
-  // do no-math checks first for speed
-  if( tm.Month > 3 && tm.Month < 11 ){
-    return true;
-  }
-  if( tm.Month < 3 || tm.Month > 11 ){
-    return false;
-  }
-  signed int previousSunday = tm.Day - tm.Wday;
-  // DST starts at 2AM on the second Sunday of March
-  if( tm.Month == 3 ){
-    // Second Sunday would be between the 8th and 15th
-    return previousSunday >= 8;
-  }
-  // DST stops at 2AM on the first Sunday of November
-  if( tm.Month == 11 ){
-    // first Sunday will be between the between the first and the 7th.
-    return previousSunday <= 0;
-  }
-}
-
-void more_bright(){
-  if( brightness >= BrightMax ){
-    brightness = BrightMax;
-  }
-  analogWrite(PinBacklight, brightness);
-}
-
-void less_bright(){
-  if( brightness >= BrightMax ){
-    brightness = BrightMax;
-  }
-  analogWrite(PinBacklight, brightness);
-}
-
-// only update LCD if intended display != what's already displayed
-String prevline1 = "";
-String prevline2 = "";
-void update_lcd(String l1, String l2){
-  if( l1 != prevline1 ){
-    lcd.setCursor(0,0);
-    lcd.print(l1);
-    prevline1 = l1;
-  }
-  if( l2 != prevline2 ){
-    lcd.setCursor(0,1);
-    lcd.print(l2);
-    prevline2 = l2;
-  }
-}
-
-void menuLoop(){
-  return;  
+  ms.set_root_menu(&mm);
 }
 
 void loop() {
-  // if the RTC isn't working, the rest of this doesn't matter
-  if(RTC.read(tm)){
-  }
-  else{
-    update_lcd("RTC read error :/", String(millis()/1000));
-  }
-
   // check on the keys
-  lcd_key = read_LCD_buttons();
-  switch (lcd_key){
+  switch (read_LCD_buttons()){
     case btnNONE: {
       break;
     }

//#include <Chronos.h>

/* 
 set up for the RTC
 Libraries used are at
  http://www.pjrc.com/teensy/td_libs_Time.html
  http://www.pjrc.com/teensy/td_libs_DS1307RTC.html

 if (adc_key_in <= 1000)                     return btnSELECT;  
 return btnNONE;  // when all others fail, return this...
}
void wait_for_button_release(){
  // after reading a button, wait until we see no buttons
  while( read_LCD_buttons() != btnNONE ){
    pause(10);
  }
  // then wait 20ms and see if it's still at none
  pause(20);
  while( read_LCD_buttons() != btnNONE ){
    pause(10);
  }
}

void pad( String* s ){
  while( s->length() < 16 ){
    *s += " ";
  }
}
// only update LCD if intended display != what's already displayed
String prevline1 = "";
String prevline2 = "";
void update_lcd(String l1, String l2){
  pad(&l1);
  pad(&l2);
  if( l1 != prevline1 ){
    lcd.setCursor(0,0);
    lcd.print(l1);
    prevline1 = l1;
  }
  if( l2 != prevline2 ){
    lcd.setCursor(0,1);
    lcd.print(l2);
    prevline2 = l2;
  }
}

/*
 EEPROM locations
