Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision 8bc7336e7ee4c47d976c2ede9ebfa2e8c10ad89e)
+++ src/Actions/MapOfActions.cpp	(revision 39b639da773383a72e7b82b0ea762ed7ecc723ab)
@@ -352,4 +352,5 @@
   TypeEnumMap[&typeid(std::vector<std::string>)] = ListOfStrings;
   TypeEnumMap[&typeid(VectorValue)] = Vector;
+  TypeEnumMap[&typeid(std::vector<VectorValue>)] = ListOfVectors;
   TypeEnumMap[&typeid(BoxValue)] = Box;
   TypeEnumMap[&typeid(molecule)] = Molecule;
@@ -554,5 +555,4 @@
       throw MissingValueException(__FILE__, __LINE__);
     std::istringstream stream(CurrentValue[name]);
-    CurrentValue.erase(name);
     stream >> tmp;
     M.set(0,0,tmp);
@@ -570,4 +570,6 @@
     stream >> tmp;
     M.set(2,2,tmp);
+    _T = M;
+    CurrentValue.erase(name);
   } else
     throw IllegalTypeException(__FILE__,__LINE__);
@@ -676,5 +678,5 @@
 {
   const Matrix &M = _T.getM();
-  if (typeid( Box ) == *TypeMap[name]) {
+  if (typeid( BoxValue ) == *TypeMap[name]) {
     std::ostringstream stream;
     stream << M.at(0,0) << " ";
@@ -691,5 +693,5 @@
 void MapOfActions::setCurrentValue(const char * name, class Vector &_T)
 {
-  if (typeid( Vector ) == *TypeMap[name]){
+  if (typeid( VectorValue ) == *TypeMap[name]){
     std::ostringstream stream;
     stream << _T[0] << " ";
@@ -816,5 +818,5 @@
               (getKeyAndShortForm(*OptionRunner).c_str(),
                   CurrentValue.find(*OptionRunner) != CurrentValue.end() ?
-                        po::value< bool >()->default_value(atoi(CurrentValue[*OptionRunner].c_str())) :
+                        po::value< bool >()->default_value(lexical_cast<int>(CurrentValue[*OptionRunner].c_str())) :
                         po::value< bool >(),
                   getDescription(*OptionRunner).c_str())
@@ -824,5 +826,5 @@
             ListRunner->second->add_options()
               (getKeyAndShortForm(*OptionRunner).c_str(),
-                  po::value<BoxValue>()->multitoken(),
+                  po::value<BoxValue>(),
                   getDescription(*OptionRunner).c_str())
               ;
@@ -832,5 +834,5 @@
               (getKeyAndShortForm(*OptionRunner).c_str(),
                   CurrentValue.find(*OptionRunner) != CurrentValue.end() ?
-                        po::value< int >()->default_value(atoi(CurrentValue[*OptionRunner].c_str())) :
+                        po::value< int >()->default_value(lexical_cast<int>(CurrentValue[*OptionRunner].c_str())) :
                         po::value< int >(),
                   getDescription(*OptionRunner).c_str())
@@ -848,5 +850,5 @@
               (getKeyAndShortForm(*OptionRunner).c_str(),
                   CurrentValue.find(*OptionRunner) != CurrentValue.end() ?
-                        po::value< double >()->default_value(atof(CurrentValue[*OptionRunner].c_str())) :
+                        po::value< double >()->default_value(lexical_cast<double>(CurrentValue[*OptionRunner].c_str())) :
                         po::value< double >(),
                   getDescription(*OptionRunner).c_str())
@@ -894,5 +896,5 @@
               (getKeyAndShortForm(*OptionRunner).c_str(),
                   CurrentValue.find(*OptionRunner) != CurrentValue.end() ?
-                        po::value< int >()->default_value(atoi(CurrentValue[*OptionRunner].c_str())) :
+                        po::value< int >()->default_value(lexical_cast<int>(CurrentValue[*OptionRunner].c_str())) :
                         po::value< int >(),
                   getDescription(*OptionRunner).c_str())
@@ -910,5 +912,5 @@
               (getKeyAndShortForm(*OptionRunner).c_str(),
                   CurrentValue.find(*OptionRunner) != CurrentValue.end() ?
-                        po::value< int >()->default_value(atoi(CurrentValue[*OptionRunner].c_str())) :
+                        po::value< int >()->default_value(lexical_cast<int>(CurrentValue[*OptionRunner].c_str())) :
                         po::value< int >(),
                   getDescription(*OptionRunner).c_str())
@@ -925,5 +927,5 @@
             ListRunner->second->add_options()
               (getKeyAndShortForm(*OptionRunner).c_str(),
-                  po::value< vector<int> >(),
+                  po::value< int >(),
                   getDescription(*OptionRunner).c_str())
               ;
