Index: src/UIElements/TextUI/TextUIFactory.cpp
===================================================================
--- src/UIElements/TextUI/TextUIFactory.cpp	(revision 84c494528bbd3943769972df639fbc01ec0bed4e)
+++ src/UIElements/TextUI/TextUIFactory.cpp	(revision 5ec8e3b251db03ba84a62d656f8f84526948e941)
@@ -9,5 +9,4 @@
 #include "UIElements/TextUI/TextWindow.hpp"
 #include "UIElements/TextUI/TextDialog.hpp"
-
 
 TextUIFactory::TextUIFactory()
Index: src/UIElements/TextUI/TextUIFactory.hpp
===================================================================
--- src/UIElements/TextUI/TextUIFactory.hpp	(revision 84c494528bbd3943769972df639fbc01ec0bed4e)
+++ src/UIElements/TextUI/TextUIFactory.hpp	(revision 5ec8e3b251db03ba84a62d656f8f84526948e941)
@@ -13,5 +13,5 @@
 class TextUIFactory : public UIFactory
 {
-friend class UIFactory;
+  friend class UIFactory;
 
 public:
Index: src/UIElements/TextUI/TextWindow.cpp
===================================================================
--- src/UIElements/TextUI/TextWindow.cpp	(revision 84c494528bbd3943769972df639fbc01ec0bed4e)
+++ src/UIElements/TextUI/TextWindow.cpp	(revision 5ec8e3b251db03ba84a62d656f8f84526948e941)
@@ -7,6 +7,4 @@
 
 #include "Helpers/MemDebug.hpp"
-
-#include "TextUI/TextWindow.hpp"
 
 #include <boost/bind.hpp>
@@ -19,4 +17,5 @@
 #include "Menu/SubMenuItem.hpp"
 #include "TextUI/TextStatusIndicator.hpp"
+#include "TextUI/TextWindow.hpp"
 #include "Actions/MapOfActions.hpp"
 #include "Actions/MethodAction.hpp"
@@ -25,4 +24,5 @@
 #include "Views/StreamStringView.hpp"
 #include "Views/MethodStringView.hpp"
+#include "Helpers/MemDebug.hpp"
 
 #include "defs.hpp"
@@ -39,6 +39,4 @@
 #include <iostream>
 #include <map>
-
-using namespace std;
 
 // TODO: see what code can be moved to a base class for Graphic and Text Windows
@@ -70,35 +68,11 @@
   new ActionMenuItem('a',"set molecule (in)active",main_menu,setMoleculeAction);
 
-  TextMenu *AnalysisMenu = new TextMenu(Log() << Verbose(0), "Analysis");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("analysis", AnalysisMenu) );
-  new SubMenuItem('A',"Analysis (pair correlation, volume)",main_menu,AnalysisMenu);
-
-  TextMenu *CommandMenu = new TextMenu(Log() << Verbose(0), "Configuration");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("command", CommandMenu) );
-  new SubMenuItem('c',"configuration",main_menu,CommandMenu);
-
-  TextMenu *AtomMenu = new TextMenu(Log() << Verbose(0), "Atoms");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("atom", AtomMenu) );
-  new SubMenuItem('e',"edit atoms",main_menu,AtomMenu);
-
-  TextMenu *FragmentationMenu = new TextMenu(Log() << Verbose(0), "Fragmentation");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("fragmentation", FragmentationMenu) );
-  new SubMenuItem('f',"fragmentation",main_menu,FragmentationMenu);
-
-  TextMenu *ParserMenu = new TextMenu(Log() << Verbose(0), "Parse files");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("parser", ParserMenu) );
-  new SubMenuItem('p',"parse files into system",main_menu,ParserMenu);
-
-  TextMenu *MoleculesMenu = new TextMenu(Log() << Verbose(0), "Edit Molecules");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("analysis", AnalysisMenu) );
-  new SubMenuItem('m',"edit molecules (load, parse, save)",main_menu,MoleculesMenu);
-
-  TextMenu *TesselationMenu = new TextMenu(Log() << Verbose(0), "Tesselate Molecules");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("tesselation", TesselationMenu) );
-  new SubMenuItem('t',"tesselate molecules",main_menu,TesselationMenu);
-
-  TextMenu *WorldMenu = new TextMenu(Log() << Verbose(0), "World");
-  NametoTextMenuMap.insert( pair <std::string, TextMenu *> ("world", WorldMenu) );
-  new SubMenuItem('w',"edit world",main_menu,WorldMenu);
+  TextMenu *Menu = NULL;
+  std::set <char> ShortcutList;
+  for(map<std::string, pair<std::string,std::string> >::iterator iter = MapOfActions::getInstance().MenuDescription.begin(); iter != MapOfActions::getInstance().MenuDescription.end(); ++iter) {
+    Menu = new TextMenu(Log() << Verbose(0), iter->second.second);
+    NametoTextMenuMap.insert( pair <std::string, TextMenu *> (iter->first, Menu) );
+    new SubMenuItem(getSuitableShortForm(ShortcutList,iter->first),iter->second.first.c_str(),main_menu,Menu);
+  }
 
   new SeperatorItem(main_menu);
@@ -133,5 +107,5 @@
 }
 
-char TextWindow::getSuitableShortForm(set <char> &ShortcutList, const std::string name) const
+char TextWindow::getSuitableShortForm(std::set <char> &ShortcutList, const std::string name) const
 {
   for (std::string::const_iterator CharRunner = name.begin(); CharRunner != name.end(); ++CharRunner) {
Index: src/UIElements/TextUI/TextWindow.hpp
===================================================================
--- src/UIElements/TextUI/TextWindow.hpp	(revision 84c494528bbd3943769972df639fbc01ec0bed4e)
+++ src/UIElements/TextUI/TextWindow.hpp	(revision 5ec8e3b251db03ba84a62d656f8f84526948e941)
@@ -27,4 +27,5 @@
 
   virtual void display();
+
 private:
   // populaters
