       switch (event)
       {
         case vfo_RLeft:
-          if (--slot_num < 0)
-            slot_num = 0;
+          if (--index < 1)
+            index = 1;
           break;
         case vfo_RRight:
-          if (++slot_num >= NumSaveSlots)
-            slot_num = NumSaveSlots - 1;
+          if (++index > 16)
+            index = 16;
           break;
         case vfo_Click:
-          put_slot(slot_num, VfoFrequency, VfoSelectDigit);
-          show_slot_frequency(slot_num);
-          display_flash();
-          break;
-        case vfo_HoldClick:
-          event_flush();
-          return;
-        default:
-          // ignore any events we don't handle
-          break;
-      }
-
-      // show row slot info
-      show_slot_frequency(slot_num);
-    }
-  }
-}
-
-//----------------------------------------
-// restore the current frequency from a slot
-//   menu      address of 'calling' menu
-//   item_num  index of MenuItem we were actioned from
-//----------------------------------------
-
-void restoreslot_action(struct Menu *menu, int item_num)
-{
-  int slot_num = 0;       // the slot we are viewing/restoring
-
-  // get rid of any stray events to this point
-  event_flush();
-
-  // draw row 0 of menu
-  lcd.clear();
-  lcd.print(menu->items[item_num]->title);
-  
-  // show row slot info on row 1
-  show_slot_frequency(slot_num);
-
-  // handle events in our own little event loop
-  while (true)
-  {
-    // handle any pending event
-    if (event_pending() > 0)
-    {
-      byte event = event_pop(); // get next event and handle it
-
-      switch (event)
-      {
-        case vfo_RLeft:
-          if (--slot_num < 0)
-            slot_num = 0;
-          break;
-        case vfo_RRight:
-          if (++slot_num >= NumSaveSlots)
-            slot_num = NumSaveSlots - 1;
-          break;
-        case vfo_Click:
-          get_slot(slot_num, VfoFrequency, VfoSelectDigit);
-          display_flash();
-          break;
-        case vfo_HoldClick:
-          event_flush();
-          return;
-        default:
-          // ignore any events we don't handle
-          break;
-      }
-
-      // show row slot info
-      show_slot_frequency(slot_num);
-    }
-  }
-}
-
-//----------------------------------------
-// delete the frequency in a slot
-//   menu      address of 'calling' menu
-//   item_num  index of MenuItem we were actioned from
-//----------------------------------------
-
-void deleteslot_action(struct Menu *menu, int item_num)
-{
-  Frequency zero_freq = 0;        // zero value to be saved
-  SelOffset zero_offset = 0;      // zero value to be saved
-  int slot_num = 0;               // the slot we are viewing/restoring
-
-  // get rid of any stray events to this point
-  event_flush();
-
-  // draw row 0 of menu
-  lcd.clear();
-  lcd.print(menu->items[item_num]->title);
-  
-  // show row slot info on row 1
-  show_slot_frequency(slot_num);
-
-  // handle events in our own little event loop
-  while (true)
-  {
-    // handle any pending event
-    if (event_pending() > 0)
-    {
-      byte event = event_pop(); // get next event and handle it
-
-      switch (event)
-      {
-        case vfo_RLeft:
-          if (--slot_num < 0)
-            slot_num = 0;
-          break;
-        case vfo_RRight:
-          if (++slot_num >= NumSaveSlots)
-            slot_num = NumSaveSlots - 1;
-          break;
-        case vfo_Click:
-          put_slot(slot_num, zero_freq, zero_offset);
+          save_to_eeprom();
           display_flash();
           break;
         case vfo_HoldClick:

  lcd.print(Version);
  lcd.setCursor(0, 1);
  lcd.print(Callsign);
  delay(1000);    // wait a bit

  // do a fade out
  for (int i = LcdBrightness; i; --i)

  {
    put_slot(i, zero_freq, zero_offset);
  }

  display_flash();
}

void reset_no_action(struct Menu *menu, int item_num)
{
}

//----------------------------------------
// Draw a bar of a given length on row 1 of LCD.
//   length  length of the bar [1, 16]
//----------------------------------------

void draw_row1_bar(int length)
{
  lcd.setCursor(0, 1);
  lcd.print(BlankRow);
  lcd.setCursor(0, 1);
  for (int i = 0; i < length; ++i)
    lcd.write(ALLSET_CHAR);
}

//----------------------------------------
// Set the current contrast and save to EEPROM if 'actioned'.
//   menu      address of 'calling' menu
//   item_num  index of MenuItem we were actioned from
//----------------------------------------

void brightness_action(struct Menu *menu, int item_num)
{
  // convert brighness value to a display value in [1, 16]
  int index = (LcdBrightness + 1) / 16;
 
  // get rid of any stray events to this point
  event_flush();

  // draw row 0 of menu, get heading from MenuItem
  lcd.clear();
  lcd.print(menu->items[item_num]->title);
  
  // show row slot info on row 1
  draw_row1_bar(index);

  // handle events in our own little event loop
  while (true)
