Index: src/Actions/AnalysisAction/MolecularVolumeAction.cpp
===================================================================
--- src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AnalysisAction/MolecularVolumeAction.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -24,5 +24,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char AnalysisMolecularVolumeAction::NAME[] = "molecular-volume";
@@ -43,5 +43,5 @@
   int molID = -1;
   // obtain information
-  MapOfActions::getInstance().queryCurrentValue(NAME, molID);
+  ValueStorage::getInstance().queryCurrentValue(NAME, molID);
 
   // execute action
Index: src/Actions/AnalysisAction/PairCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/PairCorrelationAction.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AnalysisAction/PairCorrelationAction.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -27,5 +27,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char AnalysisPairCorrelationAction::NAME[] = "pair-correlation";
@@ -41,11 +41,11 @@
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
-  dialog->queryElement("elements", MapOfActions::getInstance().getDescription("elements"));
-  dialog->queryDouble("bin-start", MapOfActions::getInstance().getDescription("bin-start"));
-  dialog->queryDouble("bin-width", MapOfActions::getInstance().getDescription("bin-width"));
-  dialog->queryDouble("bin-end", MapOfActions::getInstance().getDescription("bin-end"));
-  dialog->queryString("output-file", MapOfActions::getInstance().getDescription("output-file"));
-  dialog->queryString("bin-output-file", MapOfActions::getInstance().getDescription("bin-output-file"));
-  dialog->queryBoolean("periodic", MapOfActions::getInstance().getDescription("periodic"));
+  dialog->queryElement("elements", ValueStorage::getInstance().getDescription("elements"));
+  dialog->queryDouble("bin-start", ValueStorage::getInstance().getDescription("bin-start"));
+  dialog->queryDouble("bin-width", ValueStorage::getInstance().getDescription("bin-width"));
+  dialog->queryDouble("bin-end", ValueStorage::getInstance().getDescription("bin-end"));
+  dialog->queryString("output-file", ValueStorage::getInstance().getDescription("output-file"));
+  dialog->queryString("bin-output-file", ValueStorage::getInstance().getDescription("bin-output-file"));
+  dialog->queryBoolean("periodic", ValueStorage::getInstance().getDescription("periodic"));
 
   return dialog;
@@ -70,11 +70,11 @@
 
   // obtain information
-  MapOfActions::getInstance().queryCurrentValue("elements", elements);
-  MapOfActions::getInstance().queryCurrentValue("bin-start", BinStart);
-  MapOfActions::getInstance().queryCurrentValue("bin-width", BinWidth);
-  MapOfActions::getInstance().queryCurrentValue("bin-end", BinEnd);
-  MapOfActions::getInstance().queryCurrentValue("output-file", outputname);
-  MapOfActions::getInstance().queryCurrentValue("bin-output-file", binoutputname);
-  MapOfActions::getInstance().queryCurrentValue("periodic", periodic);
+  ValueStorage::getInstance().queryCurrentValue("elements", elements);
+  ValueStorage::getInstance().queryCurrentValue("bin-start", BinStart);
+  ValueStorage::getInstance().queryCurrentValue("bin-width", BinWidth);
+  ValueStorage::getInstance().queryCurrentValue("bin-end", BinEnd);
+  ValueStorage::getInstance().queryCurrentValue("output-file", outputname);
+  ValueStorage::getInstance().queryCurrentValue("bin-output-file", binoutputname);
+  ValueStorage::getInstance().queryCurrentValue("periodic", periodic);
 
   // execute action
Index: src/Actions/AnalysisAction/PointCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/PointCorrelationAction.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AnalysisAction/PointCorrelationAction.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -27,5 +27,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char AnalysisPointCorrelationAction::NAME[] = "point-correlation";
@@ -41,12 +41,12 @@
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
-  dialog->queryVector("position", false, MapOfActions::getInstance().getDescription("position"));
-  dialog->queryElement("elements", MapOfActions::getInstance().getDescription("elements"));
-  dialog->queryDouble("bin-start", MapOfActions::getInstance().getDescription("bin-start"));
-  dialog->queryDouble("bin-width", MapOfActions::getInstance().getDescription("bin-width"));
-  dialog->queryDouble("bin-end", MapOfActions::getInstance().getDescription("bin-end"));
-  dialog->queryString("output-file", MapOfActions::getInstance().getDescription("output-file"));
-  dialog->queryString("bin-output-file", MapOfActions::getInstance().getDescription("bin-output-file"));
-  dialog->queryBoolean("periodic", MapOfActions::getInstance().getDescription("periodic"));
+  dialog->queryVector("position", false, ValueStorage::getInstance().getDescription("position"));
+  dialog->queryElement("elements", ValueStorage::getInstance().getDescription("elements"));
+  dialog->queryDouble("bin-start", ValueStorage::getInstance().getDescription("bin-start"));
+  dialog->queryDouble("bin-width", ValueStorage::getInstance().getDescription("bin-width"));
+  dialog->queryDouble("bin-end", ValueStorage::getInstance().getDescription("bin-end"));
+  dialog->queryString("output-file", ValueStorage::getInstance().getDescription("output-file"));
+  dialog->queryString("bin-output-file", ValueStorage::getInstance().getDescription("bin-output-file"));
+  dialog->queryBoolean("periodic", ValueStorage::getInstance().getDescription("periodic"));
 
   return dialog;
@@ -71,12 +71,12 @@
 
   // obtain information
-  MapOfActions::getInstance().queryCurrentValue("position", Point);
-  MapOfActions::getInstance().queryCurrentValue("elements", elements);
-  MapOfActions::getInstance().queryCurrentValue("bin-start", BinStart);
-  MapOfActions::getInstance().queryCurrentValue("bin-width", BinWidth);
-  MapOfActions::getInstance().queryCurrentValue("bin-end", BinEnd);
-  MapOfActions::getInstance().queryCurrentValue("output-file", outputname);
-  MapOfActions::getInstance().queryCurrentValue("bin-output-file", binoutputname);
-  MapOfActions::getInstance().queryCurrentValue("periodic", periodic);
+  ValueStorage::getInstance().queryCurrentValue("position", Point);
+  ValueStorage::getInstance().queryCurrentValue("elements", elements);
+  ValueStorage::getInstance().queryCurrentValue("bin-start", BinStart);
+  ValueStorage::getInstance().queryCurrentValue("bin-width", BinWidth);
+  ValueStorage::getInstance().queryCurrentValue("bin-end", BinEnd);
+  ValueStorage::getInstance().queryCurrentValue("output-file", outputname);
+  ValueStorage::getInstance().queryCurrentValue("bin-output-file", binoutputname);
+  ValueStorage::getInstance().queryCurrentValue("periodic", periodic);
 
   // execute action
Index: src/Actions/AnalysisAction/PrincipalAxisSystemAction.cpp
===================================================================
--- src/Actions/AnalysisAction/PrincipalAxisSystemAction.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AnalysisAction/PrincipalAxisSystemAction.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -20,5 +20,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char AnalysisPrincipalAxisSystemAction::NAME[] = "principal-axis-system";
@@ -34,5 +34,5 @@
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
-  dialog->queryMolecule(NAME, MapOfActions::getInstance().getDescription(NAME));
+  dialog->queryMolecule(NAME, ValueStorage::getInstance().getDescription(NAME));
 
   return dialog;
@@ -42,5 +42,5 @@
   molecule *mol = NULL;
 
-  MapOfActions::getInstance().queryCurrentValue(NAME, mol);
+  ValueStorage::getInstance().queryCurrentValue(NAME, mol);
   DoLog(0) && (Log() << Verbose(0) << "Evaluating prinicipal axis." << endl);
   mol->PrincipalAxisSystem(false);
Index: src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp
===================================================================
--- src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AnalysisAction/SurfaceCorrelationAction.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -27,5 +27,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char AnalysisSurfaceCorrelationAction::NAME[] = "surface-correlation";
@@ -41,12 +41,12 @@
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
-  dialog->queryMolecule("molecule-by-id", MapOfActions::getInstance().getDescription("molecule-by-id"));
-  dialog->queryElement("elements", MapOfActions::getInstance().getDescription("elements"));
-  dialog->queryDouble("bin-start", MapOfActions::getInstance().getDescription("bin-start"));
-  dialog->queryDouble("bin-width", MapOfActions::getInstance().getDescription("bin-width"));
-  dialog->queryDouble("bin-end", MapOfActions::getInstance().getDescription("bin-end"));
-  dialog->queryString("output-file", MapOfActions::getInstance().getDescription("output-file"));
-  dialog->queryString("bin-output-file", MapOfActions::getInstance().getDescription("bin-output-file"));
-  dialog->queryBoolean("periodic", MapOfActions::getInstance().getDescription("periodic"));
+  dialog->queryMolecule("molecule-by-id", ValueStorage::getInstance().getDescription("molecule-by-id"));
+  dialog->queryElement("elements", ValueStorage::getInstance().getDescription("elements"));
+  dialog->queryDouble("bin-start", ValueStorage::getInstance().getDescription("bin-start"));
+  dialog->queryDouble("bin-width", ValueStorage::getInstance().getDescription("bin-width"));
+  dialog->queryDouble("bin-end", ValueStorage::getInstance().getDescription("bin-end"));
+  dialog->queryString("output-file", ValueStorage::getInstance().getDescription("output-file"));
+  dialog->queryString("bin-output-file", ValueStorage::getInstance().getDescription("bin-output-file"));
+  dialog->queryBoolean("periodic", ValueStorage::getInstance().getDescription("periodic"));
 
   return dialog;
@@ -71,12 +71,12 @@
 
   // obtain information
-  MapOfActions::getInstance().queryCurrentValue("molecule-by-id", Boundary);
-  MapOfActions::getInstance().queryCurrentValue("elements", elements);
-  MapOfActions::getInstance().queryCurrentValue("bin-start", BinStart);
-  MapOfActions::getInstance().queryCurrentValue("bin-width", BinWidth);
-  MapOfActions::getInstance().queryCurrentValue("bin-end", BinEnd);
-  MapOfActions::getInstance().queryCurrentValue("output-file", outputname);
-  MapOfActions::getInstance().queryCurrentValue("bin-output-file", binoutputname);
-  MapOfActions::getInstance().queryCurrentValue("periodic", periodic);
+  ValueStorage::getInstance().queryCurrentValue("molecule-by-id", Boundary);
+  ValueStorage::getInstance().queryCurrentValue("elements", elements);
+  ValueStorage::getInstance().queryCurrentValue("bin-start", BinStart);
+  ValueStorage::getInstance().queryCurrentValue("bin-width", BinWidth);
+  ValueStorage::getInstance().queryCurrentValue("bin-end", BinEnd);
+  ValueStorage::getInstance().queryCurrentValue("output-file", outputname);
+  ValueStorage::getInstance().queryCurrentValue("bin-output-file", binoutputname);
+  ValueStorage::getInstance().queryCurrentValue("periodic", periodic);
 
   // execute action
Index: src/Actions/AtomAction/AddAction.cpp
===================================================================
--- src/Actions/AtomAction/AddAction.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AtomAction/AddAction.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -24,5 +24,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char AtomAddAction::NAME[] = "add-atom";
@@ -35,37 +35,38 @@
 {}
 
+Dialog * AtomAddAction::createDialog() {
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+
+  dialog->queryElement(NAME, ValueStorage::getInstance().getDescription(NAME));
+  dialog->queryVector("position", true, ValueStorage::getInstance().getDescription("position"));
+
+  return dialog;
+}
+
 Action::state_ptr AtomAddAction::performCall() {
-  Dialog *dialog = UIFactory::getInstance().makeDialog();
   std::vector<element *> elements;
   Vector position;
 
-  dialog->queryElement(NAME, &elements, MapOfActions::getInstance().getDescription(NAME));
-  dialog->queryVector("position", &position, true, MapOfActions::getInstance().getDescription("position"));
-  cout << "pre-dialog" << endl;
+  // obtain information
+  ValueStorage::getInstance().queryCurrentValue(NAME, elements);
+  ValueStorage::getInstance().queryCurrentValue("position", position);
 
-  if(dialog->display()) {
-    cout << "post-dialog" << endl;
-    delete dialog;
-    if (elements.size() == 1) {
-      atom * first = World::getInstance().createAtom();
-      first->type = *(elements.begin());
-      first->x = position;
-      DoLog(1) && (Log() << Verbose(1) << "Adding new atom with element " << first->type->name << " at " << (first->x) << "." << endl);
-      // TODO: remove when all of World's atoms are stored.
-      std::vector<molecule *> molecules = World::getInstance().getAllMolecules();
-      if (!molecules.empty()) {
-        std::vector<molecule *>::iterator iter = molecules.begin();
-        (*iter)->AddAtom(first);
-      }
-      return Action::success;
-    } else {
+  // execute action
+  if (elements.size() == 1) {
+    atom * first = World::getInstance().createAtom();
+    first->type = *(elements.begin());
+    first->x = position;
+    DoLog(1) && (Log() << Verbose(1) << "Adding new atom with element " << first->type->name << " at " << (first->x) << "." << endl);
+    // TODO: remove when all of World's atoms are stored.
+    std::vector<molecule *> molecules = World::getInstance().getAllMolecules();
+    if (!molecules.empty()) {
+      std::vector<molecule *>::iterator iter = molecules.begin();
+      (*iter)->AddAtom(first);
+    }
+    return Action::success;
+  } else {
       DoeLog(1) && (eLog()<< Verbose(1) << "Could not find the specified element." << endl);
       return Action::failure;
-    }
-  } else {
-    delete dialog;
-    return Action::failure;
   }
-
 }
 
Index: src/Actions/AtomAction/AddAction.hpp
===================================================================
--- src/Actions/AtomAction/AddAction.hpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/Actions/AtomAction/AddAction.hpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -21,4 +21,5 @@
   virtual const std::string getName();
 private:
+  virtual Dialog * createDialog();
   virtual Action::state_ptr performCall();
   virtual Action::state_ptr performUndo(Action::state_ptr);
Index: src/UIElements/ValueStorage.cpp
===================================================================
--- src/UIElements/ValueStorage.cpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/UIElements/ValueStorage.cpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -7,7 +7,13 @@
 
 
+#include "ValueStorage.hpp"
+
 ValueStorage::ValueStorage() {};
 
 ValueStorage::~ValueStorage() {};
 
+std::string ValueStorage::getDescription(string actionname) {
+  MapOfActions::getInstance().getDescription(actionname);
+}
+
 CONSTRUCT_SINGLETON(ValueStorage)
Index: src/UIElements/ValueStorage.hpp
===================================================================
--- src/UIElements/ValueStorage.hpp	(revision ca1ba5fa8bafa494e600c237413e227f206e5cac)
+++ src/UIElements/ValueStorage.hpp	(revision 9d33ba90b201569cf2a4636a4a601a51ac2d6c93)
@@ -10,5 +10,5 @@
 
 
-#include "Actions/MapofActions.hpp"
+#include "Actions/MapOfActions.hpp"
 #include "Patterns/Singleton.hpp"
 
@@ -21,10 +21,13 @@
   friend class Singleton<ValueStorage>;
 
-  template <typename T> queryCurrentValue(const char *name, T &_T) {
+public:
+  template <typename T> void queryCurrentValue(const char *name, T &_T) {
     MapOfActions::getInstance().queryCurrentValue(name, _T);
   }
-  template <typename T> setCurrentValue(const char *name, T &_T) {
+  template <typename T> void setCurrentValue(const char *name, T &_T) {
     MapOfActions::getInstance().setCurrentValue(name, _T);
   }
+
+  std::string getDescription(string actionname);
 
 protected:
