Index: src/UIElements/QT4/QTDialog.cpp
===================================================================
--- src/UIElements/QT4/QTDialog.cpp	(revision 992fd78d0cb2f68ddae2cbbc7bf29ef8a4fdc1d8)
+++ src/UIElements/QT4/QTDialog.cpp	(revision 257c77c0c7706fd4745edd8fffdb365d94c06777)
@@ -21,4 +21,6 @@
 #include <Qt/qcombobox.h>
 
+#include "Helpers/MemDebug.hpp"
+
 #include "World.hpp"
 #include "periodentafel.hpp"
@@ -26,5 +28,5 @@
 #include "element.hpp"
 #include "molecule.hpp"
-#include "Helpers/MemDebug.hpp"
+#include "Descriptors/MoleculeIdDescriptor.hpp"
 
 
@@ -76,28 +78,49 @@
 /************************** Query Infrastructure ************************/
 
-void QTDialog::queryInt(const char *title, int *target)
+void QTDialog::queryEmpty(char const*, string){
+  // TODO
+  ASSERT(false, "Not implemented yet");
+}
+
+void QTDialog::queryBoolean(char const*, bool*,string){
+  // TODO
+  ASSERT(false, "Not implemented yet");
+}
+
+void QTDialog::queryAtom(char const*, atom**, string){
+  // TODO
+  ASSERT(false, "Not implemented yet");
+}
+
+void QTDialog::queryBox(char const*, double**, string){
+  // TODO
+  ASSERT(false, "Not implemented yet");
+}
+
+
+void QTDialog::queryInt(const char *title, int *target,string)
 {
   registerQuery(new IntQTQuery(title,target,inputLayout,this));
 }
 
-void QTDialog::queryDouble(const char* title, double* target){
+void QTDialog::queryDouble(const char* title, double* target,string){
   registerQuery(new DoubleQTQuery(title,target,inputLayout,this));
 }
 
-void QTDialog::queryString(const char* title, std::string *target)
+void QTDialog::queryString(const char* title, std::string *target,string)
 {
   registerQuery(new StringQTQuery(title,target,inputLayout,this));
 }
 
-void QTDialog::queryMolecule(const char *title,molecule **target,MoleculeListClass *molecules)
-{
-  registerQuery(new MoleculeQTQuery(title,target,molecules,inputLayout,this));
-}
-
-void QTDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check) {
+void QTDialog::queryMolecule(const char *title,molecule **target,string)
+{
+  registerQuery(new MoleculeQTQuery(title,target,inputLayout,this));
+}
+
+void QTDialog::queryVector(const char* title, Vector *target,const double *const cellSize, bool check,string) {
   registerQuery(new VectorQTQuery(title,target,cellSize,check,inputLayout,this));
 }
 
-void QTDialog::queryElement(const char* title, const element **target){
+void QTDialog::queryElement(const char* title, std::vector<element *> *target,string){
   registerQuery(new ElementQTQuery(title,target,inputLayout,this));
 }
@@ -189,15 +212,15 @@
 }
 
-QTDialog::MoleculeQTQuery::MoleculeQTQuery(string _title, molecule **_target, MoleculeListClass *_molecules, QBoxLayout *_parent,QTDialog *_dialog) :
-    Dialog::MoleculeQuery(_title,_target,_molecules),
-    parent(_parent)
-{
-  MoleculeList::iterator iter;
+QTDialog::MoleculeQTQuery::MoleculeQTQuery(string _title, molecule **_target, QBoxLayout *_parent,QTDialog *_dialog) :
+    Dialog::MoleculeQuery(_title,_target),
+    parent(_parent)
+{
   thisLayout = new QHBoxLayout();
   titleLabel = new QLabel(QString(getTitle().c_str()));
   inputBox = new QComboBox();
   // add all molecules to the combo box
-  for(iter  = molecules->ListOfMolecules.begin();
-      iter != molecules->ListOfMolecules.end();
+  vector<molecule*> molecules = World::getInstance().getAllMolecules();
+  for(vector<molecule*>::iterator iter  = molecules.begin();
+      iter != molecules.end();
       ++iter) {
     stringstream sstr;
@@ -209,5 +232,5 @@
   thisLayout->addWidget(inputBox);
 
-  pipe = new MoleculeQTQueryPipe(&tmp,_dialog,inputBox,_molecules);
+  pipe = new MoleculeQTQueryPipe(&tmp,_dialog,inputBox);
   pipe->update(inputBox->currentIndex());
   connect(inputBox,SIGNAL(currentIndexChanged(int)),pipe,SLOT(update(int)));
@@ -263,5 +286,5 @@
 
 
-QTDialog::ElementQTQuery::ElementQTQuery(std::string _title, const element **_target, QBoxLayout *_parent, QTDialog *_dialog) :
+QTDialog::ElementQTQuery::ElementQTQuery(std::string _title, vector<element *> *_target, QBoxLayout *_parent, QTDialog *_dialog) :
     Dialog::ElementQuery(_title,_target),
     parent(_parent)
@@ -283,5 +306,5 @@
   thisLayout->addWidget(inputBox);
 
-  pipe = new ElementQTQueryPipe(&tmp,_dialog,inputBox);
+  pipe = new ElementQTQueryPipe(&elements,_dialog,inputBox);
   pipe->update(inputBox->currentIndex());
   connect(inputBox,SIGNAL(currentIndexChanged(int)),pipe,SLOT(update(int)));
@@ -338,9 +361,8 @@
 }
 
-MoleculeQTQueryPipe::MoleculeQTQueryPipe(molecule **_content, QTDialog *_dialog, QComboBox *_theBox, MoleculeListClass *_molecules) :
+MoleculeQTQueryPipe::MoleculeQTQueryPipe(molecule **_content, QTDialog *_dialog, QComboBox *_theBox) :
   content(_content),
   dialog(_dialog),
-  theBox(_theBox),
-  molecules(_molecules)
+  theBox(_theBox)
 {}
 
@@ -351,13 +373,15 @@
   QVariant data = theBox->itemData(newIndex);
   int idx = data.toInt();
-  (*content) = molecules->ReturnIndex(idx);
-  dialog->update();
-}
-
-ElementQTQueryPipe::ElementQTQueryPipe(const element **_content, QTDialog *_dialog, QComboBox *_theBox) :
+  (*content) = World::getInstance().getMolecule(MoleculeById(idx));
+  dialog->update();
+}
+
+ElementQTQueryPipe::ElementQTQueryPipe(std::vector<element *> *_content, QTDialog *_dialog, QComboBox *_theBox) :
   content(_content),
   dialog(_dialog),
   theBox(_theBox)
-{}
+{
+  content->resize(1);
+}
 
 ElementQTQueryPipe::~ElementQTQueryPipe()
@@ -367,6 +391,6 @@
   QVariant data = theBox->itemData(newIndex);
   int idx = data.toInt();
-  (*content) = World::getInstance().getPeriode()->FindElement(idx);
-  dialog->update();
-}
-
+  (*content)[0] = World::getInstance().getPeriode()->FindElement(idx);
+  dialog->update();
+}
+
Index: src/UIElements/QT4/QTDialog.hpp
===================================================================
--- src/UIElements/QT4/QTDialog.hpp	(revision 992fd78d0cb2f68ddae2cbbc7bf29ef8a4fdc1d8)
+++ src/UIElements/QT4/QTDialog.hpp	(revision 257c77c0c7706fd4745edd8fffdb365d94c06777)
@@ -35,10 +35,14 @@
   virtual ~QTDialog();
 
-  virtual void queryInt(const char *, int *);
-  virtual void queryString(const char*, std::string *);
-  virtual void queryDouble(const char*,double *);
-  virtual void queryMolecule(const char*,molecule**,MoleculeListClass*);
-  virtual void queryVector(const char*,Vector *,const double *const,bool);
-  virtual void queryElement(const char*,const element **);
+  virtual void queryEmpty(const char*, std::string);
+  virtual void queryBoolean(const char *, bool *, std::string = "");
+  virtual void queryInt(const char *, int *,std::string = "");
+  virtual void queryDouble(const char*,double *,std::string = "");
+  virtual void queryString(const char*, std::string *,std::string = "");
+  virtual void queryAtom(const char*,atom**,std::string = "");
+  virtual void queryMolecule(const char*,molecule**,std::string = "");
+  virtual void queryVector(const char*,Vector *,const double *const,bool,std::string = "");
+  virtual void queryBox(const char*,double ** const, std::string = "");
+  virtual void queryElement(const char*,std::vector<element *> *_target,std::string = "");
 
   virtual bool display();
@@ -91,5 +95,5 @@
     class MoleculeQTQuery : public Dialog::MoleculeQuery {
     public:
-      MoleculeQTQuery(std::string _title, molecule **_target, MoleculeListClass *_molecules, QBoxLayout *_parent,QTDialog *_dialog);
+      MoleculeQTQuery(std::string _title, molecule **_target, QBoxLayout *_parent,QTDialog *_dialog);
       virtual ~MoleculeQTQuery();
       virtual bool handle();
@@ -122,5 +126,5 @@
     class ElementQTQuery : public Dialog::ElementQuery {
     public:
-      ElementQTQuery(std::string _title, const element **_target, QBoxLayout *_parent, QTDialog *_dialog);
+      ElementQTQuery(std::string _title, std::vector<element *> *_target, QBoxLayout *_parent, QTDialog *_dialog);
       virtual ~ElementQTQuery();
       virtual bool handle();
@@ -193,5 +197,5 @@
   Q_OBJECT
 public:
-  MoleculeQTQueryPipe(molecule **_content, QTDialog *_dialog, QComboBox *_theBox, MoleculeListClass *_molecules);
+  MoleculeQTQueryPipe(molecule **_content, QTDialog *_dialog, QComboBox *_theBox);
   virtual ~MoleculeQTQueryPipe();
 
@@ -201,5 +205,4 @@
 private:
   molecule **content;
-  MoleculeListClass *molecules;
   QTDialog *dialog;
   QComboBox *theBox;
@@ -210,5 +213,5 @@
   Q_OBJECT
 public:
-  ElementQTQueryPipe(const element **_content, QTDialog *_dialog, QComboBox *_theBox);
+  ElementQTQueryPipe(std::vector<element *> *_content, QTDialog *_dialog, QComboBox *_theBox);
   virtual ~ElementQTQueryPipe();
 
@@ -217,5 +220,5 @@
 
 private:
-  const element **content;
+  std::vector<element *> *content;
   QTDialog *dialog;
   QComboBox *theBox;
Index: src/UIElements/QT4/QTMainWindow.cpp
===================================================================
--- src/UIElements/QT4/QTMainWindow.cpp	(revision 992fd78d0cb2f68ddae2cbbc7bf29ef8a4fdc1d8)
+++ src/UIElements/QT4/QTMainWindow.cpp	(revision 257c77c0c7706fd4745edd8fffdb365d94c06777)
@@ -29,5 +29,5 @@
 using namespace std;
 
-QTMainWindow::QTMainWindow(menuPopulaters populaters,MoleculeListClass *molecules, config *configuration, periodentafel *periode, char *ConfigFileName,QApplication *_theApp) :
+QTMainWindow::QTMainWindow(QApplication *_theApp) :
     theApp(_theApp)
 {
@@ -35,5 +35,5 @@
   QSplitter *splitter2 = new QSplitter (Qt::Vertical, splitter1 );
 
-  worldDisplay = new QTWorldView(molecules,splitter2);
+  worldDisplay = new QTWorldView(splitter2);
 
   moleculeDisplay = new QTMoleculeView();
@@ -48,8 +48,4 @@
   statusBar = new QTStatusBar(this);
   setStatusBar(statusBar);
-
-  editMoleculesMenu = new QTMenu("Edit Molecules");
-  populaters.MakeEditMoleculesMenu(editMoleculesMenu,molecules,configuration,periode);
-  menuBar()->addMenu(editMoleculesMenu);
 
   connect(worldDisplay,SIGNAL(moleculeSelected(molecule*)),moleculeDisplay,SLOT(moleculeSelected(molecule*)));
Index: src/UIElements/QT4/QTMainWindow.hpp
===================================================================
--- src/UIElements/QT4/QTMainWindow.hpp	(revision 992fd78d0cb2f68ddae2cbbc7bf29ef8a4fdc1d8)
+++ src/UIElements/QT4/QTMainWindow.hpp	(revision 257c77c0c7706fd4745edd8fffdb365d94c06777)
@@ -24,6 +24,5 @@
 
 public:
-  QTMainWindow(menuPopulaters populaters,MoleculeListClass *molecules, config *configuration,
-               periodentafel *periode, char *ConfigFileName, QApplication *_theApp);
+  QTMainWindow(QApplication *_theApp);
   virtual ~QTMainWindow();
 
Index: src/UIElements/QT4/QTUIFactory.cpp
===================================================================
--- src/UIElements/QT4/QTUIFactory.cpp	(revision 992fd78d0cb2f68ddae2cbbc7bf29ef8a4fdc1d8)
+++ src/UIElements/QT4/QTUIFactory.cpp	(revision 257c77c0c7706fd4745edd8fffdb365d94c06777)
@@ -41,6 +41,6 @@
 }
 
-MainWindow* QTUIFactory::makeMainWindow(menuPopulaters populaters,MoleculeListClass *molecules, config *configuration, periodentafel *periode, char *ConfigFileName) {
-  return new QTMainWindow(populaters,molecules,configuration,periode,ConfigFileName,app);
+MainWindow* QTUIFactory::makeMainWindow() {
+  return new QTMainWindow(app);
 }
 
Index: src/UIElements/QT4/QTUIFactory.hpp
===================================================================
--- src/UIElements/QT4/QTUIFactory.hpp	(revision 992fd78d0cb2f68ddae2cbbc7bf29ef8a4fdc1d8)
+++ src/UIElements/QT4/QTUIFactory.hpp	(revision 257c77c0c7706fd4745edd8fffdb365d94c06777)
@@ -21,5 +21,5 @@
 
   virtual Dialog* makeDialog();
-  virtual MainWindow* makeMainWindow(menuPopulaters,MoleculeListClass *, config *, periodentafel *, char *);
+  virtual MainWindow* makeMainWindow();
 
   struct description : public UIFactory::factoryDescription {
