Index: src/Actions/MoleculeAction/FillWithMoleculeAction.cpp
===================================================================
--- src/Actions/MoleculeAction/FillWithMoleculeAction.cpp	(revision 5bc8520c0e46db93e06dda9f34e87f99e9b8d6cb)
+++ src/Actions/MoleculeAction/FillWithMoleculeAction.cpp	(revision a001b7bae7fc080027af24c287be6ce37c2ce629)
@@ -17,5 +17,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 #include "atom.hpp"
@@ -23,8 +23,5 @@
 #include "boundary.hpp"
 #include "config.hpp"
-#include "defs.hpp"
 #include "molecule.hpp"
-#include "periodentafel.hpp"
-#include "vector.hpp"
 #include "verbose.hpp"
 #include "World.hpp"
@@ -53,7 +50,18 @@
 {}
 
+Dialog* MoleculeFillWithMoleculeAction::createDialog() {
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+
+  dialog->queryString(NAME, ValueStorage::getInstance().getDescription(NAME));
+  dialog->queryVector("distances", false, ValueStorage::getInstance().getDescription("distances"));
+  dialog->queryVector("lengths", false, ValueStorage::getInstance().getDescription("lengths"));
+  dialog->queryBoolean("DoRotate", ValueStorage::getInstance().getDescription("DoRotate"));
+  dialog->queryDouble("MaxDistance", ValueStorage::getInstance().getDescription("MaxDistance"));
+
+  return dialog;
+}
+
 Action::state_ptr MoleculeFillWithMoleculeAction::performCall() {
   string filename;
-  Dialog *dialog = UIFactory::getInstance().makeDialog();
   Vector distances;
   Vector lengths;
@@ -61,19 +69,18 @@
   bool DoRotate = false;
 
-  dialog->queryString(NAME, &filename, MapOfActions::getInstance().getDescription(NAME));
-  dialog->queryVector("distances", &distances, false, MapOfActions::getInstance().getDescription("distances"));
-  dialog->queryVector("lengths", &lengths, false, MapOfActions::getInstance().getDescription("lengths"));
-  dialog->queryBoolean("DoRotate", &DoRotate, MapOfActions::getInstance().getDescription("DoRotate"));
-  dialog->queryDouble("MaxDistance", &MaxDistance, MapOfActions::getInstance().getDescription("MaxDistance"));
+  ValueStorage::getInstance().queryCurrentValue(NAME, filename);
+  ValueStorage::getInstance().queryCurrentValue("distances", distances);
+  ValueStorage::getInstance().queryCurrentValue("lengths", lengths);
+  ValueStorage::getInstance().queryCurrentValue("DoRotate", DoRotate);
+  ValueStorage::getInstance().queryCurrentValue("MaxDistance", MaxDistance);
 
-  if(dialog->display()) {
-    DoLog(1) && (Log() << Verbose(1) << "Filling Box with water molecules, lengths(" << lengths[0] << "," << lengths[1] << "," << lengths[2] << "), distances (" << distances[0] << "," << distances[1] << "," << distances[2] << "), MaxDistance " << MaxDistance << ", DoRotate " << DoRotate << "." << endl);
-    // construct water molecule
-    molecule *filler = World::getInstance().createMolecule();
-    if (!filler->AddXYZFile(filename)) {
-      DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse filler molecule from " << filename << "." << endl);
-    }
-    filler->SetNameFromFilename(filename.c_str());
-    molecule *Filling = NULL;
+  DoLog(1) && (Log() << Verbose(1) << "Filling Box with water molecules, lengths(" << lengths[0] << "," << lengths[1] << "," << lengths[2] << "), distances (" << distances[0] << "," << distances[1] << "," << distances[2] << "), MaxDistance " << MaxDistance << ", DoRotate " << DoRotate << "." << endl);
+  // construct water molecule
+  molecule *filler = World::getInstance().createMolecule();
+  if (!filler->AddXYZFile(filename)) {
+    DoeLog(0) && (eLog()<< Verbose(0) << "Could not parse filler molecule from " << filename << "." << endl);
+  }
+  filler->SetNameFromFilename(filename.c_str());
+  molecule *Filling = NULL;
 //    atom *first = NULL, *second = NULL, *third = NULL;
 //    first = World::getInstance().createAtom();
@@ -91,27 +98,23 @@
 //    filler->AddBond(first, third, 1);
 //    filler->AddBond(second, third, 1);
-    World::getInstance().getConfig()->BG->ConstructBondGraph(filler);
+  World::getInstance().getConfig()->BG->ConstructBondGraph(filler);
 //    filler->SetNameFromFilename("water");
-    // call routine
-    double distance[NDIM];
-    for (int i=0;i<NDIM;i++)
-      distance[i] = distances[i];
-    Filling = FillBoxWithMolecule(World::getInstance().getMolecules(), filler, *(World::getInstance().getConfig()), MaxDistance, distance, lengths[0], lengths[1], lengths[2], DoRotate);
-    if (Filling != NULL) {
-      Filling->ActiveFlag = false;
-      World::getInstance().getMolecules()->insert(Filling);
-    }
-    for (molecule::iterator iter = filler->begin(); !filler->empty(); iter = filler->begin()) {
-      atom *Walker = *iter;
-      filler->erase(iter);
-      World::getInstance().destroyAtom(Walker);
-    }
-    World::getInstance().destroyMolecule(filler);
+  // call routine
+  double distance[NDIM];
+  for (int i=0;i<NDIM;i++)
+    distance[i] = distances[i];
+  Filling = FillBoxWithMolecule(World::getInstance().getMolecules(), filler, *(World::getInstance().getConfig()), MaxDistance, distance, lengths[0], lengths[1], lengths[2], DoRotate);
+  if (Filling != NULL) {
+    Filling->ActiveFlag = false;
+    World::getInstance().getMolecules()->insert(Filling);
+  }
+  for (molecule::iterator iter = filler->begin(); !filler->empty(); iter = filler->begin()) {
+    atom *Walker = *iter;
+    filler->erase(iter);
+    World::getInstance().destroyAtom(Walker);
+  }
+  World::getInstance().destroyMolecule(filler);
 
-    delete dialog;
-    return Action::success;
-  }
-  delete dialog;
-  return Action::failure;
+  return Action::success;
 }
 
Index: src/Actions/MoleculeAction/FillWithMoleculeAction.hpp
===================================================================
--- src/Actions/MoleculeAction/FillWithMoleculeAction.hpp	(revision 5bc8520c0e46db93e06dda9f34e87f99e9b8d6cb)
+++ src/Actions/MoleculeAction/FillWithMoleculeAction.hpp	(revision a001b7bae7fc080027af24c287be6ce37c2ce629)
@@ -24,4 +24,5 @@
   virtual const std::string getName();
 private:
+  virtual Dialog * createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
