Index: src/UIElements/CommandLineUIFactory.cpp
===================================================================
--- src/UIElements/CommandLineUIFactory.cpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/CommandLineUIFactory.cpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -28,5 +28,5 @@
 }
 
-MainWindow* CommandLineUIFactory::makeMainWindow(menuPopulaters populaters) {
-  return new CommandLineWindow(populaters);
+MainWindow* CommandLineUIFactory::makeMainWindow() {
+  return new CommandLineWindow();
 }
Index: src/UIElements/CommandLineUIFactory.hpp
===================================================================
--- src/UIElements/CommandLineUIFactory.hpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/CommandLineUIFactory.hpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -19,5 +19,5 @@
 
   virtual Dialog* makeDialog();
-  virtual MainWindow* makeMainWindow(menuPopulaters);
+  virtual MainWindow* makeMainWindow();
 
 protected:
Index: src/UIElements/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineWindow.cpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/CommandLineWindow.cpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -11,4 +11,8 @@
 #include "UIElements/CommandLineStatusIndicator.hpp"
 
+#include "Actions/CmdAction/HelpAction.hpp"
+#include "Actions/ParserAction/LoadXyzAction.hpp"
+#include "Actions/ParserAction/SaveXyzAction.hpp"
+
 #include <iostream>
 
@@ -16,9 +20,10 @@
 
 // TODO: see what code can be moved to a base class for Graphic and CommandLine Windows
-CommandLineWindow::CommandLineWindow(menuPopulaters populaters)
+CommandLineWindow::CommandLineWindow()
 {
+  // create and register all command line callable actions
+  populateParserActions();
 
   // Add status indicators etc...
-
   statusIndicator = new CommandLineStatusIndicator();
 }
@@ -31,2 +36,9 @@
 void CommandLineWindow::display() {
 }
+
+void CommandLineWindow::populateParserActions()
+{
+  new ParserLoadXyzAction();
+  new ParserSaveXyzAction();
+}
+
Index: src/UIElements/CommandLineWindow.hpp
===================================================================
--- src/UIElements/CommandLineWindow.hpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/CommandLineWindow.hpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -16,5 +16,5 @@
 {
 public:
-  CommandLineWindow(menuPopulaters);
+  CommandLineWindow();
   virtual ~CommandLineWindow();
 
@@ -22,4 +22,6 @@
 
 private:
+  // populaters
+  void populateParserActions();
 
   CommandLineStatusIndicator *statusIndicator;
Index: src/UIElements/MainWindow.hpp
===================================================================
--- src/UIElements/MainWindow.hpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/MainWindow.hpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -25,19 +25,4 @@
 };
 
-/**
- * The type of menuPopulators
- */
-typedef void (*MenuMaker)(Menu*);
-
-/**
- * This contains all Functions that are used to create the menus.
- * Needs a specific funtion for each menu. All populators will be called
- * by the UIFactory upon creation of the main menu. Thus the actuall construction
- * of the Menus can be kept independent of the concrete type of UI that is being
- * built.
- */
-struct menuPopulaters{
-  MenuMaker MakeEditMoleculesMenu;
-};
 
 #endif /* MAINWINDOW_HPP_ */
Index: src/UIElements/TextUIFactory.cpp
===================================================================
--- src/UIElements/TextUIFactory.cpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/TextUIFactory.cpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -27,6 +27,6 @@
 }
 
-MainWindow* TextUIFactory::makeMainWindow(menuPopulaters populaters) {
-  return new TextWindow(populaters);
+MainWindow* TextUIFactory::makeMainWindow() {
+  return new TextWindow();
 }
 
Index: src/UIElements/TextUIFactory.hpp
===================================================================
--- src/UIElements/TextUIFactory.hpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/TextUIFactory.hpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -19,5 +19,5 @@
 
   virtual Dialog* makeDialog();
-  virtual MainWindow* makeMainWindow(menuPopulaters);
+  virtual MainWindow* makeMainWindow();
 
 protected:
Index: src/UIElements/TextWindow.cpp
===================================================================
--- src/UIElements/TextWindow.cpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/TextWindow.cpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -39,4 +39,5 @@
 #include "UIElements/TextStatusIndicator.hpp"
 #include "Actions/MethodAction.hpp"
+#include "Actions/MoleculeAction/ChangeNameAction.hpp"
 #include "Actions/ErrorAction.hpp"
 #include "Actions/ActionRegistry.hpp"
@@ -49,5 +50,5 @@
 
 // TODO: see what code can be moved to a base class for Graphic and Text Windows
-TextWindow::TextWindow(menuPopulaters populaters)
+TextWindow::TextWindow()
 {
   MoleculeListClass *molecules = World::getInstance().getMolecules();
@@ -106,5 +107,5 @@
   // call all functions used to build the submenus
 
-  populaters.MakeEditMoleculesMenu(editMoleculesMenu);
+  populateEditMoleculesMenu(editMoleculesMenu);
 
   Action *returnFromEditMoleculeAction = new TextMenu::LeaveAction(editMoleculesMenu);
@@ -130,2 +131,28 @@
   main_menu->display();
 }
+
+void TextWindow::populateEditMoleculesMenu(Menu* editMoleculesMenu)
+{
+  MoleculeListClass *molecules = World::getInstance().getMolecules();
+  periodentafel *periode = World::getInstance().getPeriode();
+
+  // build the EditMoleculesMenu
+  Action *createMoleculeAction = new MethodAction("createMoleculeAction",boost::bind(&MoleculeListClass::createNewMolecule,molecules,periode));
+  new ActionMenuItem('c',"create new molecule",editMoleculesMenu,createMoleculeAction);
+
+  Action *loadMoleculeAction = new MethodAction("loadMoleculeAction",boost::bind(&MoleculeListClass::loadFromXYZ,molecules,periode));
+  new ActionMenuItem('l',"load molecule from xyz file",editMoleculesMenu,loadMoleculeAction);
+
+  Action *changeFilenameAction = new MoleculeChangeNameAction(molecules);
+  new ActionMenuItem('n',"change molecule's name",editMoleculesMenu,changeFilenameAction);
+
+  Action *giveFilenameAction = new MethodAction("giveFilenameAction",boost::bind(&MoleculeListClass::setMoleculeFilename,molecules));
+  new ActionMenuItem('N',"give molecules filename",editMoleculesMenu,giveFilenameAction);
+
+  Action *parseAtomsAction = new MethodAction("parseAtomsAction",boost::bind(&MoleculeListClass::parseXYZIntoMolecule,molecules));
+  new ActionMenuItem('p',"parse atoms in xyz file into molecule",editMoleculesMenu,parseAtomsAction);
+
+  Action *eraseMoleculeAction = new MethodAction("eraseMoleculeAction",boost::bind(&MoleculeListClass::eraseMolecule,molecules));
+  new ActionMenuItem('r',"remove a molecule",editMoleculesMenu,eraseMoleculeAction);
+
+}
Index: src/UIElements/TextWindow.hpp
===================================================================
--- src/UIElements/TextWindow.hpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/TextWindow.hpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -17,12 +17,16 @@
 class TextStatusIndicator;
 
+
 class TextWindow : public MainWindow
 {
 public:
-  TextWindow(menuPopulaters);
+  TextWindow();
   virtual ~TextWindow();
 
   virtual void display();
 private:
+  // populaters
+  void populateEditMoleculesMenu(Menu* editMoleculesMenu);
+
   TextMenu *main_menu;
 
Index: src/UIElements/UIFactory.hpp
===================================================================
--- src/UIElements/UIFactory.hpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/UIElements/UIFactory.hpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -12,6 +12,4 @@
 class Dialog;
 class DialogDescription;
-
-struct menuPopulaters;
 
 #include "Patterns/Singleton.hpp"
@@ -34,5 +32,5 @@
    * Produce some kind of main window, of whichever type was chosen when the factory was created
    */
-  virtual MainWindow* makeMainWindow(menuPopulaters)=0;
+  virtual MainWindow* makeMainWindow()=0;
 
   /**
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision 8e1f7afc1ebe0013bd96a58b79957fdade051cb8)
+++ src/builder.cpp	(revision d893f79361685f6c7211b58647e4225285583faa)
@@ -2512,32 +2512,4 @@
 };
 
-/***************************************** Functions used to build all menus **********************/
-
-void populateEditMoleculesMenu(Menu* editMoleculesMenu){
-  MoleculeListClass *molecules = World::getInstance().getMolecules();
-  periodentafel *periode = World::getInstance().getPeriode();
-
-  // build the EditMoleculesMenu
-  Action *createMoleculeAction = new MethodAction("createMoleculeAction",boost::bind(&MoleculeListClass::createNewMolecule,molecules,periode));
-  new ActionMenuItem('c',"create new molecule",editMoleculesMenu,createMoleculeAction);
-
-  Action *loadMoleculeAction = new MethodAction("loadMoleculeAction",boost::bind(&MoleculeListClass::loadFromXYZ,molecules,periode));
-  new ActionMenuItem('l',"load molecule from xyz file",editMoleculesMenu,loadMoleculeAction);
-
-  Action *changeFilenameAction = new MoleculeChangeNameAction(molecules);
-  new ActionMenuItem('n',"change molecule's name",editMoleculesMenu,changeFilenameAction);
-
-  Action *giveFilenameAction = new MethodAction("giveFilenameAction",boost::bind(&MoleculeListClass::setMoleculeFilename,molecules));
-  new ActionMenuItem('N',"give molecules filename",editMoleculesMenu,giveFilenameAction);
-
-  Action *parseAtomsAction = new MethodAction("parseAtomsAction",boost::bind(&MoleculeListClass::parseXYZIntoMolecule,molecules));
-  new ActionMenuItem('p',"parse atoms in xyz file into molecule",editMoleculesMenu,parseAtomsAction);
-
-  Action *eraseMoleculeAction = new MethodAction("eraseMoleculeAction",boost::bind(&MoleculeListClass::eraseMolecule,molecules));
-  new ActionMenuItem('r',"remove a molecule",editMoleculesMenu,eraseMoleculeAction);
-
-}
-
-
 /********************************************** Main routine **************************************/
 
@@ -2586,8 +2558,5 @@
 
     {
-      menuPopulaters populaters;
-      populaters.MakeEditMoleculesMenu = populateEditMoleculesMenu;
-
-      MainWindow *mainWindow = UIFactory::getInstance().makeMainWindow(populaters);
+      MainWindow *mainWindow = UIFactory::getInstance().makeMainWindow();
       mainWindow->display();
       delete mainWindow;
