Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision e2b47c937167a3e72fb72e019f375a4bbd32d280)
+++ src/Actions/MapOfActions.cpp	(revision 77b2d7c74ef5d3d1f96600b9768c905b445340ac)
@@ -268,5 +268,5 @@
 //	generic.insert("subspace-dissect");
   generic.insert("suspend-in-water");
-//  generic.insert("translate-mol");
+  generic.insert("translate-mol");
 	generic.insert("verbose");
 //  generic.insert("verlet-integrate");
Index: src/Actions/MoleculeAction/TranslateAction.cpp
===================================================================
--- src/Actions/MoleculeAction/TranslateAction.cpp	(revision e2b47c937167a3e72fb72e019f375a4bbd32d280)
+++ src/Actions/MoleculeAction/TranslateAction.cpp	(revision 77b2d7c74ef5d3d1f96600b9768c905b445340ac)
@@ -56,6 +56,8 @@
   dialog->queryMolecule("molecule-by-id", &mol, MapOfActions::getInstance().getDescription("molecule-by-id"));
   dialog->queryBoolean("periodic", &periodic, MapOfActions::getInstance().getDescription("periodic"));
+  cout << "pre-dialog" << endl;
 
   if(dialog->display()) {
+    cout << "post-dialog" << endl;
     DoLog(1) && (Log() << Verbose(1) << "Translating all ions by given vector." << endl);
     if (periodic)
Index: src/UIElements/CommandLineUI/CommandLineWindow.cpp
===================================================================
--- src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision e2b47c937167a3e72fb72e019f375a4bbd32d280)
+++ src/UIElements/CommandLineUI/CommandLineWindow.cpp	(revision 77b2d7c74ef5d3d1f96600b9768c905b445340ac)
@@ -34,4 +34,5 @@
 #include "Actions/MoleculeAction/SaveBondsAction.hpp"
 #include "Actions/MoleculeAction/SaveTemperatureAction.hpp"
+#include "Actions/MoleculeAction/TranslateAction.hpp"
 #include "Actions/MoleculeAction/VerletIntegrationAction.hpp"
 #include "Actions/ParserAction/LoadXyzAction.hpp"
@@ -126,4 +127,5 @@
   new MoleculeSaveBondsAction();
   new MoleculeSaveTemperatureAction();
+  new MoleculeTranslateAction();
   new MoleculeVerletIntegrationAction();
 }
Index: src/builder.cpp
===================================================================
--- src/builder.cpp	(revision e2b47c937167a3e72fb72e019f375a4bbd32d280)
+++ src/builder.cpp	(revision 77b2d7c74ef5d3d1f96600b9768c905b445340ac)
@@ -2016,32 +2016,18 @@
             case 't':
               if (ExitFlag == 0) ExitFlag = 1;
-              if ((argptr+2 >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
+              if ((argptr+4 >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
                 ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z>" << endl);
+                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for translation: -t <x> <y> <z> --molecule-by-id <molecule_id> --periodic <0/1>" << endl);
                 performCriticalExit();
               } else {
-                if (ExitFlag == 0) ExitFlag = 1;
-                SaveFlag = true;
-                DoLog(1) && (Log() << Verbose(1) << "Translating all ions by given vector." << endl);
-                for (int i=NDIM;i--;)
-                  x[i] = atof(argv[argptr+i]);
-                mol->Translate((const Vector *)&x);
-                argptr+=3;
-              }
-              break;
-            case 'T':
-              if (ExitFlag == 0) ExitFlag = 1;
-              if ((argptr+2 >= argc) || (!IsValidNumber(argv[argptr])) || (!IsValidNumber(argv[argptr+1])) || (!IsValidNumber(argv[argptr+2])) ) {
-                ExitFlag = 255;
-                DoeLog(0) && (eLog()<< Verbose(0) << "Not enough or invalid arguments given for periodic translation: -T <x> <y> <z>" << endl);
-                performCriticalExit();
-              } else {
-                if (ExitFlag == 0) ExitFlag = 1;
-                SaveFlag = true;
-                DoLog(1) && (Log() << Verbose(1) << "Translating all ions periodically by given vector." << endl);
-                for (int i=NDIM;i--;)
-                  x[i] = atof(argv[argptr+i]);
-                mol->TranslatePeriodically((const Vector *)&x);
-                argptr+=3;
+                ArgcList.insert(argptr-1);
+                ArgcList.insert(argptr);
+                ArgcList.insert(argptr+1);
+                ArgcList.insert(argptr+2);
+                ArgcList.insert(argptr+3);
+                ArgcList.insert(argptr+4);
+                ArgcList.insert(argptr+5);
+                ArgcList.insert(argptr+6);
+                argptr+=7;
               }
               break;
