Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision b5c53d0007611f38495bf2e4a8c7348258cf1e7e)
+++ src/Actions/MapOfActions.cpp	(revision e41c48e834f26d3742f334149b34497a3b8c486c)
@@ -42,4 +42,6 @@
 #include "Actions/AtomAction/ChangeElementAction.hpp"
 #include "Actions/AtomAction/RemoveAction.hpp"
+#include "Actions/AtomAction/RotateAroundOriginByAngleAction.hpp"
+#include "Actions/AtomAction/TranslateAction.hpp"
 #include "Actions/CmdAction/BondLengthTableAction.hpp"
 #include "Actions/CmdAction/ElementDbAction.hpp"
@@ -55,5 +57,4 @@
 #include "Actions/MoleculeAction/FillWithMoleculeAction.hpp"
 #include "Actions/MoleculeAction/LinearInterpolationofTrajectoriesAction.hpp"
-#include "Actions/MoleculeAction/RotateAroundOriginByAngleAction.hpp"
 #include "Actions/MoleculeAction/RotateAroundSelfByAngleAction.hpp"
 #include "Actions/MoleculeAction/RotateToPrincipalAxisSystemAction.hpp"
@@ -62,16 +63,25 @@
 #include "Actions/MoleculeAction/SaveTemperatureAction.hpp"
 #include "Actions/MoleculeAction/SuspendInWaterAction.hpp"
-#include "Actions/MoleculeAction/TranslateAction.hpp"
 #include "Actions/MoleculeAction/VerletIntegrationAction.hpp"
 #include "Actions/ParserAction/LoadXyzAction.hpp"
 #include "Actions/ParserAction/SaveXyzAction.hpp"
 #include "Actions/SelectionAction/AllAtomsAction.hpp"
+#include "Actions/SelectionAction/AllAtomsInsideCuboidAction.hpp"
+#include "Actions/SelectionAction/AllAtomsInsideSphereAction.hpp"
+#include "Actions/SelectionAction/AllAtomsOfMoleculeAction.hpp"
 #include "Actions/SelectionAction/AllMoleculesAction.hpp"
 #include "Actions/SelectionAction/AtomByIdAction.hpp"
+#include "Actions/SelectionAction/ClearAllAtomsAction.hpp"
+#include "Actions/SelectionAction/ClearAllMoleculesAction.hpp"
 #include "Actions/SelectionAction/MoleculeByIdAction.hpp"
+#include "Actions/SelectionAction/MoleculeOfAtomAction.hpp"
 #include "Actions/SelectionAction/NotAllAtomsAction.hpp"
+#include "Actions/SelectionAction/NotAllAtomsInsideCuboidAction.hpp"
+#include "Actions/SelectionAction/NotAllAtomsInsideSphereAction.hpp"
+#include "Actions/SelectionAction/NotAllAtomsOfMoleculeAction.hpp"
 #include "Actions/SelectionAction/NotAllMoleculesAction.hpp"
 #include "Actions/SelectionAction/NotAtomByIdAction.hpp"
 #include "Actions/SelectionAction/NotMoleculeByIdAction.hpp"
+#include "Actions/SelectionAction/NotMoleculeOfAtomAction.hpp"
 #include "Actions/TesselationAction/ConvexEnvelopeAction.hpp"
 #include "Actions/TesselationAction/NonConvexEnvelopeAction.hpp"
@@ -83,5 +93,4 @@
 #include "Actions/WorldAction/InputAction.hpp"
 #include "Actions/WorldAction/OutputAction.hpp"
-#include "Actions/WorldAction/RemoveSphereOfAtomsAction.hpp"
 #include "Actions/WorldAction/RepeatBoxAction.hpp"
 #include "Actions/WorldAction/ScaleBoxAction.hpp"
@@ -184,4 +193,6 @@
   DescriptionMap["change-element"] = "change the element of an atom";
   DescriptionMap["change-molname"] = "change the name of a molecule";
+  DescriptionMap["clear-atom-selection"] = "clear the atom selection";
+  DescriptionMap["clear-molecule-selection"] = "clear the molecule selection";
   DescriptionMap["convex-envelope"] = "create the convex envelope for a molecule";
   DescriptionMap["default-molname"] = "set the default name of new molecules";
@@ -202,8 +213,8 @@
   DescriptionMap["point-correlation"] = "pair correlation analysis between element and point";
   DescriptionMap["principal-axis-system"] = "calculate the principal axis system of the specified molecule";
+  DescriptionMap["redo"] = "redo last action";
   DescriptionMap["remove-atom"] = "remove a specified atom";
-  DescriptionMap["remove-sphere"] = "remove sphere of atoms of around a specified atom";
   DescriptionMap["repeat-box"] = "create periodic copies of the simulation box per axis";
-  DescriptionMap["rotate-origin"] = "rotates molecules by a specific angle around origin";
+  DescriptionMap["rotate-origin"] = "rotate selected atoms by a specific angle around origin";
   DescriptionMap["rotate-self"] = "rotates molecules by a specific angle around own center of gravity";
   DescriptionMap["rotate-to-pas"] = "calculate the principal axis system of the specified molecule and rotate specified axis to align with main axis";
@@ -216,5 +227,9 @@
   DescriptionMap["select-all-molecules"] = "select all molecules";
   DescriptionMap["select-atom-by-id"] = "select an atom by index";
+  DescriptionMap["select-atoms-inside-cuboid"] = "select all atoms inside a cuboid";
+  DescriptionMap["select-atoms-inside-sphere"] = "select all atoms inside a sphere";
   DescriptionMap["select-molecule-by-id"] = "select a molecule by index";
+  DescriptionMap["select-molecule-of-atom"] = "select a molecule to which a given atom belongs";
+  DescriptionMap["select-molecules-atoms"] = "select all atoms of a molecule";
   DescriptionMap["set-basis"] = "set the name of the gaussian basis set for MPQC";
   DescriptionMap["set-output"] = "specify output formats";
@@ -222,9 +237,14 @@
   DescriptionMap["surface-correlation"] = "pair correlation analysis between element and surface";
   DescriptionMap["suspend-in-water"] = "suspend the given molecule in water such that in the domain the mean density is as specified";
-  DescriptionMap["translate-mol"] = "translate molecule by given vector";
+  DescriptionMap["translate-atoms"] = "translate all selected atoms by given vector";
+  DescriptionMap["undo"] = "undo last action";
   DescriptionMap["unselect-all-atoms"] = "unselect all atoms";
   DescriptionMap["unselect-all-molecules"] = "unselect all molecules";
   DescriptionMap["unselect-atom-by-id"] = "unselect an atom by index";
+  DescriptionMap["unselect-atoms-inside-cuboid"] = "unselect all atoms inside a cuboid";
+  DescriptionMap["unselect-atoms-inside-sphere"] = "unselect all atoms inside a sphere";
   DescriptionMap["unselect-molecule-by-id"] = "unselect a molecule by index";
+  DescriptionMap["unselect-molecule-of-atom"] = "unselect a molecule to which a given atom belongs";
+  DescriptionMap["unselect-molecules-atoms"] = "unselect all atoms of a molecule";
   DescriptionMap["verbose"] = "set verbosity level";
   DescriptionMap["verlet-integrate"] = "perform verlet integration of a given force file";
@@ -279,5 +299,4 @@
   ShortFormMap["parse-xyz"] = "p";
   ShortFormMap["remove-atom"] = "r";
-  ShortFormMap["remove-sphere"] = "R";
   ShortFormMap["repeat-box"] = "d";
   ShortFormMap["rotate-to-pas"] = "m";
@@ -290,5 +309,5 @@
   ShortFormMap["subgraph-dissect"] = "I";
   ShortFormMap["suspend-in-water"] = "u";
-  ShortFormMap["translate-mol"] = "t";
+  ShortFormMap["translate-atoms"] = "t";
   ShortFormMap["verbose"] = "v";
   ShortFormMap["verlet-integrate"] = "P";
@@ -304,4 +323,6 @@
   TypeMap["change-element"] = &typeid(const element);
   TypeMap["change-molname"] = &typeid(std::string);
+  TypeMap["clear-atom-selection"] = &typeid(void);
+  TypeMap["clear-molecule-selection"] = &typeid(void);
   TypeMap["convex-envelope"] = &typeid(void);
   TypeMap["default-molname"] = &typeid(std::string);
@@ -320,6 +341,6 @@
   TypeMap["point-correlation"] = &typeid(void);
   TypeMap["principal-axis-system"] = &typeid(void);
+  TypeMap["redo"] = &typeid(void);
   TypeMap["remove-atom"] = &typeid(void);
-  TypeMap["remove-sphere"] = &typeid(double);
   TypeMap["repeat-box"] = &typeid(VectorValue);
   TypeMap["rotate-origin"] = &typeid(double);
@@ -330,4 +351,12 @@
   TypeMap["save-temperature"] = &typeid(std::string);
   TypeMap["scale-box"] = &typeid(VectorValue);
+  TypeMap["select-all-atoms"] = &typeid(void);
+  TypeMap["select-all-molecules"] = &typeid(void);
+  TypeMap["select-atom-by-id"] = &typeid(atom);
+  TypeMap["select-atoms-inside-cuboid"] = &typeid(VectorValue);
+  TypeMap["select-atoms-inside-sphere"] = &typeid(double);
+  TypeMap["select-molecule-by-id"] = &typeid(molecule);
+  TypeMap["select-molecule-of-atom"] = &typeid(atom);
+  TypeMap["select-molecules-atoms"] = &typeid(molecule);
   TypeMap["set-basis"] = &typeid(std::string);
   TypeMap["set-output"] = &typeid(std::vector<std::string>);
@@ -335,5 +364,14 @@
   TypeMap["surface-correlation"] = &typeid(void);
   TypeMap["suspend-in-water"] = &typeid(double);
-  TypeMap["translate-mol"] = &typeid(VectorValue);
+  TypeMap["translate-atoms"] = &typeid(VectorValue);
+  TypeMap["undo"] = &typeid(void);
+  TypeMap["unselect-all-atoms"] = &typeid(void);
+  TypeMap["unselect-all-molecules"] = &typeid(void);
+  TypeMap["unselect-atom-by-id"] = &typeid(atom);
+  TypeMap["unselect-atoms-inside-cuboid"] = &typeid(VectorValue);
+  TypeMap["unselect-atoms-inside-sphere"] = &typeid(double);
+  TypeMap["unselect-molecule-by-id"] = &typeid(molecule);
+  TypeMap["unselect-molecule-of-atom"] = &typeid(atom);
+  TypeMap["unselect-molecules-atoms"] = &typeid(molecule);
   TypeMap["verlet-integrate"] = &typeid(std::string);
   TypeMap["verbose"] = &typeid(int);
@@ -361,13 +399,5 @@
   TypeMap["periodic"] = &typeid(bool);
   TypeMap["position"] = &typeid(VectorValue);
-  TypeMap["select-all-atoms"] = &typeid(void);
-  TypeMap["select-all-molecules"] = &typeid(void);
-  TypeMap["select-atom-by-id"] = &typeid(atom);
-  TypeMap["select-molecule-by-id"] = &typeid(molecule);
   TypeMap["start-step"] = &typeid(int);
-  TypeMap["unselect-all-atoms"] = &typeid(void);
-  TypeMap["unselect-all-molecules"] = &typeid(void);
-  TypeMap["unselect-atom-by-id"] = &typeid(atom);
-  TypeMap["unselect-molecule-by-id"] = &typeid(molecule);
 
   TypeEnumMap[&typeid(void)] = None;
@@ -414,4 +444,5 @@
   MenuContainsActionMap.insert( pair<std::string, std::string> ("atom", "change-element") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("atom", "remove-atom") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("atom", "translate-atoms") );
 
   MenuContainsActionMap.insert( pair<std::string, std::string> ("command", "bond-table") );
@@ -436,5 +467,4 @@
   MenuContainsActionMap.insert( pair<std::string, std::string> ("molecule", "save-temperature") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("molecule", "suspend-in-water") );
-  MenuContainsActionMap.insert( pair<std::string, std::string> ("molecule", "translate-mol") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("molecule", "verlet-integrate") );
 
@@ -442,8 +472,22 @@
   MenuContainsActionMap.insert( pair<std::string, std::string> ("parser", "SaveXyz") );
 
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "clear-atom-selection") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "clear-molecule-selection") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-all-atoms") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-all-molecules") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atom-by-id") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atoms-inside-cuboid") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-atoms-inside-sphere") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecule-by-id") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecule-of-atom") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "select-molecules-atoms") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-all-atoms") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-all-molecules") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atom-by-id") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atoms-inside-cuboid") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-atoms-inside-sphere") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-molecule-by-id") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-molecule-of-atom") );
+  MenuContainsActionMap.insert( pair<std::string, std::string> ("selection", "unselect-molecules-atoms") );
 
   MenuContainsActionMap.insert( pair<std::string, std::string> ("tesselation", "convex-envelope") );
@@ -457,5 +501,4 @@
   MenuContainsActionMap.insert( pair<std::string, std::string> ("world", "input") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("world", "output") );
-  MenuContainsActionMap.insert( pair<std::string, std::string> ("world", "remove-sphere") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("world", "repeat-box") );
   MenuContainsActionMap.insert( pair<std::string, std::string> ("world", "scale-box") );
@@ -474,5 +517,7 @@
 	generic.insert("change-box");
 //  generic.insert("change-molname");
-	generic.insert("change-element");
+  generic.insert("change-element");
+  generic.insert("clear-atom-selection");
+  generic.insert("clear-molecule-selection");
   generic.insert("convex-envelope");
 	generic.insert("default-molname");
@@ -492,6 +537,6 @@
   generic.insert("point-correlation");
 //  generic.insert("principal-axis-system");
+  generic.insert("redo");
   generic.insert("remove-atom");
-  generic.insert("remove-sphere");
   generic.insert("repeat-box");
   generic.insert("rotate-origin");
@@ -505,5 +550,9 @@
   generic.insert("select-all-molecules");
   generic.insert("select-atom-by-id");
+  generic.insert("select-atoms-inside-cuboid");
+  generic.insert("select-atoms-inside-sphere");
   generic.insert("select-molecule-by-id");
+  generic.insert("select-molecule-of-atom");
+  generic.insert("select-molecules-atoms");
   generic.insert("set-basis");
   generic.insert("set-output");
@@ -511,9 +560,14 @@
   generic.insert("surface-correlation");
   generic.insert("suspend-in-water");
-  generic.insert("translate-mol");
+  generic.insert("translate-atoms");
+  generic.insert("undo");
   generic.insert("unselect-all-atoms");
   generic.insert("unselect-all-molecules");
   generic.insert("unselect-atom-by-id");
+  generic.insert("unselect-atoms-inside-cuboid");
+  generic.insert("unselect-atoms-inside-sphere");
   generic.insert("unselect-molecule-by-id");
+  generic.insert("unselect-molecule-of-atom");
+  generic.insert("unselect-molecules-atoms");
 	generic.insert("verbose");
   generic.insert("verlet-integrate");
@@ -801,4 +855,6 @@
   new AtomChangeElementAction();
   new AtomRemoveAction();
+  new AtomRotateAroundOriginByAngleAction();
+  new AtomTranslateAction();
 
   new CommandLineBondLengthTableAction();
@@ -817,5 +873,4 @@
   new MoleculeFillWithMoleculeAction();
   new MoleculeLinearInterpolationofTrajectoriesAction();
-  new MoleculeRotateAroundOriginByAngleAction();
   new MoleculeRotateAroundSelfByAngleAction();
   new MoleculeRotateToPrincipalAxisSystemAction();
@@ -824,5 +879,4 @@
   new MoleculeSaveTemperatureAction();
   new MoleculeSuspendInWaterAction();
-  new MoleculeTranslateAction();
   new MoleculeVerletIntegrationAction();
 
@@ -830,12 +884,22 @@
   new ParserSaveXyzAction();
 
+  new SelectionClearAllAtomsAction();
+  new SelectionClearAllMoleculesAction();
   new SelectionAllAtomsAction();
+  new SelectionAllAtomsInsideCuboidAction();
+  new SelectionAllAtomsInsideSphereAction();
+  new SelectionAllAtomsOfMoleculeAction();
   new SelectionAllMoleculesAction();
   new SelectionAtomByIdAction();
   new SelectionMoleculeByIdAction();
+  new SelectionMoleculeOfAtomAction();
   new SelectionNotAllAtomsAction();
+  new SelectionNotAllAtomsInsideCuboidAction();
+  new SelectionNotAllAtomsInsideSphereAction();
+  new SelectionNotAllAtomsOfMoleculeAction();
   new SelectionNotAllMoleculesAction();
   new SelectionNotAtomByIdAction();
   new SelectionNotMoleculeByIdAction();
+  new SelectionNotMoleculeOfAtomAction();
 
   new TesselationConvexEnvelopeAction();
@@ -849,5 +913,4 @@
   new WorldInputAction();
   new WorldOutputAction();
-  new WorldRemoveSphereOfAtomsAction();
   new WorldRepeatBoxAction();
   new WorldScaleBoxAction();
