support infinite number of submenus