 
     if (new_len > max_len)
         max_len = new_len;
+
     Serial.print("i="); Serial.print(i);
     Serial.print(", new_len="); Serial.print(new_len);
     Serial.print(", max_len="); Serial.println(max_len);
   }
   Serial.print("Max item len="); Serial.println(max_len);
 
+  // write menu title on upper row
+  lcd.clear();
+  lcd.setCursor(0, 0);
+  lcd.write(menu->title);
+
   // write indexed item on lower row, right-justified
   lcd.setCursor(0, 1);
-  lcd.write(BlankRow);
+  lcd.setCursor(NUM_COLS - max_len, 1);
+  lcd.write(menu->items[slot_num]);
   Serial.print("Setting cursor to column "); Serial.println(NUM_COLS - max_len);
   Serial.print("item text="); Serial.println(menu->items[slot_num]);
-  lcd.setCursor(NUM_COLS - max_len, 1);
-  lcd.write(menu->items[slot_num]);
-}
-
-void menu_item_action(Menu *menu, int slot_num)
-{
-  Serial.print("menu_item_action: slot_num="); Serial.println(slot_num);
+}
+
+void menu_select(Menu *menu, int slot_num)
+{
+  Serial.print("menu_select: slot_num="); Serial.println(slot_num);
   const char *action_text = menu->items[slot_num];
 
   if (strcmp(action_text, "Save") == 0)

          Serial.println("Menu: vfo_Click");
          if (menu->action)
            (*menu->action)(menu, item_index);
          break;
        case vfo_HoldClick:
          Serial.println("Menu: vfo_HoldClick, exit menu");
          flush_queue();

// Code to handle the menus.
////////////////////////////////////////////////////////////////////////////////

// typedef for a menu display handler
// this handler draws the entire current screen
typedef void (*MenuDisplay)(Menu *menu, int slot_num);

// typedef for a menu item action handler
// this handles selecting a particular item
typedef void (*MenuAction)(Menu *menu, int slot_num);

struct Menu
