Index: doc/userguide/userguide.xml
===================================================================
--- doc/userguide/userguide.xml	(revision 369409cedf0b136d6e955af83f6e5c12a6e27d90)
+++ doc/userguide/userguide.xml	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -822,4 +822,12 @@
           from then on.</para>
         </section>
+        <section xml:id="geometry.remove-geometry">
+          <title xml:id="geometry.remove-geometry.title">Remove A stored vector</title>
+          <para>Finally, a stored vector can also be removed.</para>
+          <programlisting>
+  ... --remove-geometry &quot;vector_O1&quot; \
+          </programlisting>
+          <para>this removes  the stored &quot;vector_O1&quot;.</para>
+        </section>
       </section>
       <section xml:id="randomization">
Index: src/Actions/GeometryAction/GeometryRemoveAction.cpp
===================================================================
--- src/Actions/GeometryAction/GeometryRemoveAction.cpp	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
+++ src/Actions/GeometryAction/GeometryRemoveAction.cpp	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -0,0 +1,103 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2017 Frederik Heber. All rights reserved.
+ * 
+ *
+ *   This file is part of MoleCuilder.
+ *
+ *    MoleCuilder is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    MoleCuilder is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with MoleCuilder.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * GeometryRemoveAction.cpp
+ *
+ *  Created on: Mar 31, 2017
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+//#include "CodePatterns/MemDebug.hpp"
+
+#include "CodePatterns/Log.hpp"
+
+#include <string>
+
+#include "Geometry/GeometryObject.hpp"
+#include "Geometry/GeometryRegistry.hpp"
+
+#include "Actions/GeometryAction/GeometryRemoveAction.hpp"
+
+using namespace MoleCuilder;
+
+// and construct the stuff
+#include "../GeometryAction/GeometryRemoveAction.def"
+#include "Action_impl_pre.hpp"
+/** =========== define the function ====================== */
+ActionState::ptr GeometryRemoveAction::performCall() {
+  // check preconditions
+  if (!GeometryRegistry::getInstance().isPresentByName(params.name.get())) {
+    STATUS("Name "+params.name.get()+" is not present in registry.");
+    return Action::failure;
+  }
+  if (GeometryRegistry::getInstance().isProtectedName(params.name.get())) {
+    STATUS("Name "+params.name.get()+" is protected and cannot be removed.");
+    return Action::failure;
+  }
+
+  // get and create UndoState
+  GeometryObject *gobject = GeometryRegistry::getInstance().getByName(params.name.get());
+  const Vector vec = gobject->getVector();
+
+  LOG(4, "DEBUG: Removing geometry object " << vec);
+  GeometryRegistry::getInstance().removeGeometry(params.name.get());
+  gobject = NULL;
+
+  GeometryRemoveState *UndoState = new GeometryRemoveState(vec, params);
+  return ActionState::ptr(UndoState);
+}
+
+ActionState::ptr GeometryRemoveAction::performUndo(ActionState::ptr _state) {
+  GeometryRemoveState *state = assert_cast<GeometryRemoveState*>(_state.get());
+
+  const GeometryObject vec(state->vec, params.name.get());
+  LOG(4, "DEBUG: Re-adding geometry object " << vec);
+  GeometryRegistry::getInstance().addGeometry(vec);
+
+  return ActionState::ptr(_state);
+}
+
+ActionState::ptr GeometryRemoveAction::performRedo(ActionState::ptr _state){
+//  GeometryRemoveState *state = assert_cast<GeometryRemoveState*>(_state.get());
+
+  GeometryObject *vec = GeometryRegistry::getInstance().getByName(params.name.get());
+  LOG(4, "DEBUG: Removing again geometry object " << *vec);
+  GeometryRegistry::getInstance().removeGeometry(params.name.get());
+  vec = NULL;
+
+  return ActionState::ptr(_state);
+}
+
+bool GeometryRemoveAction::canUndo() {
+  return true;
+}
+
+bool GeometryRemoveAction::shouldUndo() {
+  return true;
+}
+/** =========== end of function ====================== */
Index: src/Actions/GeometryAction/GeometryRemoveAction.def
===================================================================
--- src/Actions/GeometryAction/GeometryRemoveAction.def	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
+++ src/Actions/GeometryAction/GeometryRemoveAction.def	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -0,0 +1,35 @@
+/*
+ * GeometryInputToVectorAction.cpp
+ *
+ *  Created on: Mar 31, 2017
+ *      Author: heber
+ */
+
+// all includes and forward declarations necessary for non-integral types below
+#include "Parameters/Validators/Specific/PresentGeometryNameValidator.hpp"
+
+// i.e. there is an integer with variable name Z that can be found in
+// ValueStorage by the token "Z" -> first column: int, Z, "Z"
+// "undefine" if no parameters are required, use (NOPARAM_DEFAULT) for each (undefined) default value
+//#define paramtypes (const element *)(BoxVector) TODO: use a validator
+#define paramtypes (std::string)
+#define paramtokens ("remove-geometry")
+#define paramdescriptions ("name for geometry object to remove") 
+#define paramreferences (name)
+#define paramdefaults (NOPARAM_DEFAULT())
+#define paramvalids \
+(GeometryNameValidator())
+
+#define statetypes (Vector)
+#define statereferences (vec)
+
+// some defines for all the names, you may use ACTION, STATE and PARAMS
+#define CATEGORY Geometry
+#define MENUNAME "geometry"
+#define MENUPOSITION 5
+#define ACTIONNAME Remove
+#define TOKEN "remove-geometry"
+
+// finally the information stored in the ActionTrait specialization
+#define DESCRIPTION "removes a stored geometry object"
+#undef SHORTFORM
Index: src/Actions/GeometryAction/GeometryRemoveAction.hpp
===================================================================
--- src/Actions/GeometryAction/GeometryRemoveAction.hpp	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
+++ src/Actions/GeometryAction/GeometryRemoveAction.hpp	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -0,0 +1,22 @@
+/*
+ * GeometryRemoveAction.hpp
+ *
+ *  Created on: Mar 31, 2017
+ *      Author: heber
+ */
+
+#ifndef GEOMETRYREMOVEACTION_HPP_
+#define GEOMETRYREMOVEACTION_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include "Actions/Action.hpp"
+
+#include "../GeometryAction/GeometryRemoveAction.def"
+#include "Action_impl_header.hpp"
+
+#endif /* GEOMETRYREMOVEACTION_HPP_ */
Index: src/Actions/GlobalListOfActions.hpp
===================================================================
--- src/Actions/GlobalListOfActions.hpp	(revision 369409cedf0b136d6e955af83f6e5c12a6e27d90)
+++ src/Actions/GlobalListOfActions.hpp	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -73,4 +73,5 @@
   (GeometryPlaneToVector) \
   (GeometryPositionToVector) \
+  (GeometryRemove) \
   (GraphUpdateMolecules) \
   (GraphCorrectBondDegree) \
Index: src/Actions/Makefile.am
===================================================================
--- src/Actions/Makefile.am	(revision 369409cedf0b136d6e955af83f6e5c12a6e27d90)
+++ src/Actions/Makefile.am	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -293,15 +293,18 @@
 	Actions/GeometryAction/GeometryInputToVectorAction.cpp \
 	Actions/GeometryAction/GeometryPlaneToVectorAction.cpp \
-	Actions/GeometryAction/GeometryPositionToVectorAction.cpp
+	Actions/GeometryAction/GeometryPositionToVectorAction.cpp \
+	Actions/GeometryAction/GeometryRemoveAction.cpp
 GEOMETRYACTIONHEADER = \
 	Actions/GeometryAction/GeometryDistanceToVectorAction.hpp \
 	Actions/GeometryAction/GeometryInputToVectorAction.hpp \
 	Actions/GeometryAction/GeometryPlaneToVectorAction.hpp \
-	Actions/GeometryAction/GeometryPositionToVectorAction.hpp
+	Actions/GeometryAction/GeometryPositionToVectorAction.hpp \
+	Actions/GeometryAction/GeometryRemoveAction.hpp
 GEOMETRYACTIONDEFS = \
 	Actions/GeometryAction/GeometryDistanceToVectorAction.def \
 	Actions/GeometryAction/GeometryInputToVectorAction.def \
 	Actions/GeometryAction/GeometryPlaneToVectorAction.def \
-	Actions/GeometryAction/GeometryPositionToVectorAction.def
+	Actions/GeometryAction/GeometryPositionToVectorAction.def \
+	Actions/GeometryAction/GeometryRemoveAction.def
 
 GRAPHACTIONSOURCE = \
Index: tests/Python/AllActions/options.dat
===================================================================
--- tests/Python/AllActions/options.dat	(revision 369409cedf0b136d6e955af83f6e5c12a6e27d90)
+++ tests/Python/AllActions/options.dat	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -162,4 +162,5 @@
 random-number-distribution-parameters	"max=20;"
 random-number-engine-parameters	"seed=2;"
+remove-geometry	"named_vector"
 repeat-box	"1 1 1"
 reset	1
Index: tests/regression/Geometry/Remove/post/test.xyz
===================================================================
--- tests/regression/Geometry/Remove/post/test.xyz	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
+++ tests/regression/Geometry/Remove/post/test.xyz	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -0,0 +1,3 @@
+1
+	created for regression test InputToVector on 2017-03-31 10:07
+C	4	4	4
Index: tests/regression/Geometry/Remove/pre/test.xyz
===================================================================
--- tests/regression/Geometry/Remove/pre/test.xyz	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
+++ tests/regression/Geometry/Remove/pre/test.xyz	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -0,0 +1,3 @@
+1
+	created for regression test InputToVector on 2017-03-31 10:07
+C	2	2	2
Index: tests/regression/Geometry/Remove/testsuite-geometry-remove.at
===================================================================
--- tests/regression/Geometry/Remove/testsuite-geometry-remove.at	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
+++ tests/regression/Geometry/Remove/testsuite-geometry-remove.at	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -0,0 +1,61 @@
+#
+#    MoleCuilder - creates and alters molecular systems
+#    Copyright (C) 2017 Frederik Heber
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+### remove
+
+AT_SETUP([Geometry - remove geometry])
+AT_KEYWORDS([geometry remove-geometry])
+file=test.xyz
+AT_CHECK([cp -f ${abs_top_srcdir}/tests/regression/Geometry/Remove/pre/$file $file], 0, [ignore], [ignore])
+AT_CHECK([chmod +w $file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder -i $file -v 5 \
+	--select-atom-by-id 0 --position-to-vector "testvector" --unselect-all-atoms \
+	--remove-geometry "testvector" \
+	--select-atom-by-element C --translate-atoms --position "testvector"], 5, [ignore], [ignore])
+AT_CLEANUP
+
+AT_SETUP([Geometry - remove invalid geometry])
+AT_KEYWORDS([geometry remove-geometry])
+file=test.xyz
+AT_CHECK([cp -f ${abs_top_srcdir}/tests/regression/Geometry/Remove/pre/$file $file], 0, [ignore], [ignore])
+AT_CHECK([chmod +w $file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder -i $file -v 5 \
+	--select-atom-by-id 0 --position-to-vector "testvector" --unselect-all-atoms \
+	--remove-geometry "zeroVector"], 5, [ignore], [ignore])
+AT_CLEANUP
+
+AT_SETUP([Geometry - remove geometry Undo])
+AT_KEYWORDS([geometry remove-geometry undo])
+file=test.xyz
+AT_CHECK([cp -f ${abs_top_srcdir}/tests/regression/Geometry/Remove/pre/$file $file], 0, [ignore], [ignore])
+AT_CHECK([chmod +w $file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder -i $file -v 5 \
+	--select-atom-by-id 0 --position-to-vector "testvector" --unselect-all-atoms \
+	--remove-geometry "testvector"  --undo \
+	--select-atom-by-element C --translate-atoms --position "testvector"], 0, [ignore], [ignore])
+AT_CHECK([diff -I '.*reated.*' $file ${abs_top_srcdir}/tests/regression/Geometry/Remove/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
+
+AT_SETUP([Geometry - remove geometry Redo])
+AT_KEYWORDS([geometry remove-geometry undo redo])
+file=test.xyz
+AT_CHECK([cp -f ${abs_top_srcdir}/tests/regression/Geometry/Remove/pre/$file $file], 0, [ignore], [ignore])
+AT_CHECK([chmod +w $file], 0, [ignore], [ignore])
+AT_CHECK([../../molecuilder -i $file -v 5 \
+	--remove-geometry "testvector" --undo --redo \
+	--select-atom-by-element C --translate-atoms --position "testvector"], 5, [ignore], [ignore])
+AT_CLEANUP
Index: tests/regression/Geometry/testsuite-geometry.at
===================================================================
--- tests/regression/Geometry/testsuite-geometry.at	(revision 369409cedf0b136d6e955af83f6e5c12a6e27d90)
+++ tests/regression/Geometry/testsuite-geometry.at	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -32,2 +32,5 @@
 # Input to Vector
 m4_include([Geometry/InputToVector/testsuite-geometry-input-to-vector.at])
+
+# Remove
+m4_include([Geometry/Remove/testsuite-geometry-remove.at])
Index: tests/regression/Makefile.am
===================================================================
--- tests/regression/Makefile.am	(revision 369409cedf0b136d6e955af83f6e5c12a6e27d90)
+++ tests/regression/Makefile.am	(revision 5f0ddd9ae95a96e52c52f9016244833d8dcc0c5a)
@@ -125,4 +125,5 @@
 	$(srcdir)/Geometry/PlaneToVector/testsuite-geometry-plane-to-vector.at \
 	$(srcdir)/Geometry/PositionToVector/testsuite-geometry-position-to-vector.at \
+	$(srcdir)/Geometry/Remove/testsuite-geometry-remove.at \
 	$(srcdir)/Graph/testsuite-graph.at \
 	$(srcdir)/Graph/CreateAdjacency/testsuite-graph-create-adjacency.at \
