add code driven menu system