Index: src/Actions/CmdAction/VersionAction.cpp
===================================================================
--- src/Actions/CmdAction/VersionAction.cpp	(revision ff22c5488c443910ae2ed9f42323b573f3ed8ca1)
+++ src/Actions/CmdAction/VersionAction.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
@@ -17,5 +17,5 @@
 #include "UIElements/UIFactory.hpp"
 #include "UIElements/Dialog.hpp"
-#include "Actions/MapOfActions.hpp"
+#include "UIElements/ValueStorage.hpp"
 
 const char CommandLineVersionAction::NAME[] = "version";
@@ -28,38 +28,30 @@
 {}
 
-Action::state_ptr CommandLineVersionAction::performCall() {
+Dialog* CommandLineVersionAction::createDialog() {
   Dialog *dialog = UIFactory::getInstance().makeDialog();
 
   dialog->queryEmpty(NAME, ESPACKVersion);
 
-  if(dialog->display()) {
-    delete dialog;
-    return Action::success;
-  } else {
-    delete dialog;
-    return Action::failure;
-  }
+  return dialog;
+}
+
+Action::state_ptr CommandLineVersionAction::performCall() {
+  return Action::success;
 }
 
 Action::state_ptr CommandLineVersionAction::performUndo(Action::state_ptr _state) {
-//  ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get());
-
-  return Action::failure;
-//  string newName = state->mol->getName();
-//  state->mol->setName(state->lastName);
-//
-//  return Action::state_ptr(new ParserLoadXyzState(state->mol,newName));
+  return Action::success;
 }
 
 Action::state_ptr CommandLineVersionAction::performRedo(Action::state_ptr _state){
-  return Action::failure;
+  return Action::success;
 }
 
 bool CommandLineVersionAction::canUndo() {
-  return false;
+  return true;
 }
 
 bool CommandLineVersionAction::shouldUndo() {
-  return false;
+  return true;
 }
 
Index: src/Actions/CmdAction/VersionAction.hpp
===================================================================
--- src/Actions/CmdAction/VersionAction.hpp	(revision ff22c5488c443910ae2ed9f42323b573f3ed8ca1)
+++ src/Actions/CmdAction/VersionAction.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
@@ -22,4 +22,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/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision ff22c5488c443910ae2ed9f42323b573f3ed8ca1)
+++ src/Actions/MapOfActions.cpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
@@ -583,4 +583,17 @@
 }
 
+void MapOfActions::queryCurrentValue(const char * name, std::vector<std::string>&_T)
+{
+  std::string temp;
+  if (typeid( std::vector<std::string> ) == *TypeMap[name]) {
+    std::istringstream stream(CurrentValue[name]);
+    while (!stream.fail()) {
+      stream >> temp >> ws;
+      _T.push_back(temp);
+    }
+  } else
+    throw IllegalTypeException(__FILE__,__LINE__);
+}
+
 
 void MapOfActions::setCurrentValue(const char * name, class atom * &_T)
@@ -648,4 +661,16 @@
     for (std::vector<element *>::iterator iter = _T.begin(); iter != _T.end(); ++iter) {
       stream << (*iter)->Z;
+    }
+    CurrentValue[name] = stream.str();
+  } else
+    throw IllegalTypeException(__FILE__,__LINE__);
+}
+
+void MapOfActions::setCurrentValue(const char * name, std::vector<std::string>&_T)
+{
+  if (typeid( std::vector<std::string> ) == *TypeMap[name]) {
+    std::ostringstream stream;
+    for (std::vector<std::string>::iterator iter = _T.begin(); iter != _T.end(); ++iter) {
+      stream << (*iter);
     }
     CurrentValue[name] = stream.str();
Index: src/Actions/MapOfActions.hpp
===================================================================
--- src/Actions/MapOfActions.hpp	(revision ff22c5488c443910ae2ed9f42323b573f3ed8ca1)
+++ src/Actions/MapOfActions.hpp	(revision 3e54d09c77f638758ad6641ed6f248e16acddeab)
@@ -167,4 +167,5 @@
   void queryCurrentValue(const char * name, class Vector &_T);
   void queryCurrentValue(const char * name, std::vector<element *>&_T);
+  void queryCurrentValue(const char * name, std::vector<std::string>&_T);
   template<typename T> void queryCurrentValue(const char * name, T &_T)
   {
@@ -181,4 +182,5 @@
   void setCurrentValue(const char * name, class Vector &_T);
   void setCurrentValue(const char * name, std::vector<element *>&_T);
+  void setCurrentValue(const char * name, std::vector<std::string>&_T);
   template<class T> void setCurrentValue(const char * name, T &_T)
   {
