Serial Menu/Submenu Issues

Yes. Just the clues I needed once again! Thank you! I am trying to understand how all this works so next I will try this in a switch/case configuration. Should be fun! Here is the code that works...

char menu;
char subMenu;
bool runOnce = true;
bool menuState = true;
void setup() {
  Serial.begin(115200);
}

void topMenu() {
   
  if (runOnce == true) {
    Serial.println ("                     Main Menu                          ");
    Serial.println (" A) Menu = A!  B) Menu = B!  C) Menu = C!  D) Menu = D! ");  
    runOnce = false;
    menuState = true;
  }      
}

void sub1Menu() {
  menuState = false; 
  Serial.println ("                      Sub Menu                               ");
  Serial.println("1) Choice One  2) Choice Two  3) Choice Three  4) Choice Four  5) Quit to Main");
}

void loop() {   
   topMenu();   
   while (Serial.available() == 0) {}    
   if (menuState == true) {
    char menu = Serial.read(); 
    if (menu == 'a') {       
      Serial.println ("Menu = A!");
      sub1Menu();
    }
    else if (menu == 'b') {       
      Serial.println ("Menu = B!");
      sub1Menu();
    }
    else if (menu == 'c') {       
      Serial.println ("Menu = C!");
      sub1Menu();
    }
    else if (menu == 'd') {       
      Serial.println ("Menu = D!");
      sub1Menu();
    }
    else  {
      Serial.println ("Choose Options A through D");
    }      
  }
  if (menuState == false) {
    subMenu = Serial.read();
    if (subMenu == '1'){
      Serial.println("SubMenu = 1");
    }
    else if (subMenu == '2'){
      Serial.println("SubMenu = 2");
    }    
    else if (subMenu == '3'){
      Serial.println("SubMenu = 3");
    }
    else if (subMenu == '4'){
      Serial.println("SubMenu = 4");
    }
    else if (subMenu == '5'){
      Serial.println("SubMenu = 5");
      menu = 'q';
      runOnce = true;
      topMenu();
    }
  } 
}