Index: src/Actions/Action.cpp
===================================================================
--- src/Actions/Action.cpp	(revision 88267818974ad107d18379d2ec3d0d19c96351bd)
+++ src/Actions/Action.cpp	(revision 336e331077ae1495a8fb791f9f59393e6adcb006)
@@ -28,5 +28,5 @@
 #include "Actions/OptionRegistry.hpp"
 #include "Actions/OptionTrait.hpp"
-#include "Exceptions/MissingValueException.hpp"
+//#include "Actions/ValueStorage.hpp"
 #include "UIElements/Dialog.hpp"
 #include "CodePatterns/Assert.hpp"
Index: src/Actions/ValueStorage.cpp
===================================================================
--- src/Actions/ValueStorage.cpp	(revision 88267818974ad107d18379d2ec3d0d19c96351bd)
+++ src/Actions/ValueStorage.cpp	(revision 336e331077ae1495a8fb791f9f59393e6adcb006)
@@ -59,10 +59,10 @@
   if (typeid( atom *) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     atomID = lexical_cast<int>(CurrentValueMap[name].c_str());
     CurrentValueMap.erase(name);
   } else if (typeid( const atom *) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     atomID = lexical_cast<int>(CurrentValueMap[name].c_str());
     CurrentValueMap.erase(name);
@@ -80,5 +80,5 @@
   if (typeid(const element *) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     Z = lexical_cast<int>(CurrentValueMap[name].c_str());
     CurrentValueMap.erase(name);
@@ -96,5 +96,5 @@
   if (typeid( const molecule *) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     molID = lexical_cast<int>(CurrentValueMap[name].c_str());
     CurrentValueMap.erase(name);
@@ -113,5 +113,5 @@
   if (typeid( Box ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     std::istringstream stream(CurrentValueMap[name]);
     stream >> tmp;
@@ -197,5 +197,5 @@
   if (typeid( std::vector<const atom *> ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     std::istringstream stream(CurrentValueMap[name]);
     CurrentValueMap.erase(name);
@@ -228,5 +228,5 @@
   if (typeid( std::vector<const element *> ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     std::istringstream stream(CurrentValueMap[name]);
     CurrentValueMap.erase(name);
@@ -258,5 +258,5 @@
   if (typeid( std::vector<const molecule *> ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     std::istringstream stream(CurrentValueMap[name]);
     CurrentValueMap.erase(name);
@@ -287,5 +287,5 @@
   if (typeid( boost::filesystem::path ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) {
     if (CurrentValueMap.find(name) == CurrentValueMap.end())
-      throw MissingValueException(__FILE__, __LINE__);
+      throw MissingValueException() << ValueStorageOptionName(name);
     std::istringstream stream(CurrentValueMap[name]);
     CurrentValueMap.erase(name);
Index: src/Actions/ValueStorage.hpp
===================================================================
--- src/Actions/ValueStorage.hpp	(revision 88267818974ad107d18379d2ec3d0d19c96351bd)
+++ src/Actions/ValueStorage.hpp	(revision 336e331077ae1495a8fb791f9f59393e6adcb006)
@@ -27,5 +27,4 @@
 #include "Actions/OptionTrait.hpp"
 #include "Actions/OptionRegistry.hpp"
-#include "Exceptions/MissingValueException.hpp"
 #include "CodePatterns/Assert.hpp"
 #include "CodePatterns/Singleton.hpp"
@@ -63,4 +62,9 @@
  */
 struct IllegalTypeException : virtual ValueStorageException { };
+
+/** Exception thrown when ValueStorage is missing a requested value.
+ */
+struct MissingValueException : virtual ValueStorageException { };
+
 
 class MapOfActionsTest;
@@ -123,5 +127,5 @@
     if (typeid( T ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) { // constructor of type_info is private, hence can only store by ref or ptr
       if (CurrentValueMap.find(name) == CurrentValueMap.end())
-        throw MissingValueException(__FILE__, __LINE__);
+        throw MissingValueException() << ValueStorageOptionName(name);
       _T = lexical_cast<T>(CurrentValueMap[name].c_str());
       CurrentValueMap.erase(name);
@@ -138,5 +142,5 @@
     if (typeid( std::vector<T> ) == *(OptionRegistry_instance.getOptionByName(name)->getType())) { // constructor of type_info is private, hence can only store by ref or ptr
       if (CurrentValueMap.find(name) == CurrentValueMap.end())
-        throw MissingValueException(__FILE__, __LINE__);
+        throw MissingValueException() << ValueStorageOptionName(name);
       std::istringstream stream(CurrentValueMap[name]);
       CurrentValueMap.erase(name);
Index: src/Exceptions/Makefile.am
===================================================================
--- src/Exceptions/Makefile.am	(revision 88267818974ad107d18379d2ec3d0d19c96351bd)
+++ src/Exceptions/Makefile.am	(revision 336e331077ae1495a8fb791f9f59393e6adcb006)
@@ -8,11 +8,9 @@
 
 EXCEPTIONSOURCE = \
-  CustomException.cpp \
-  MissingValueException.cpp
+  CustomException.cpp
 	
 				  
 EXCEPTIONHEADER = \
-  CustomException.hpp \
-  MissingValueException.hpp
+  CustomException.hpp
 
 
Index: c/Exceptions/MissingValueException.cpp
===================================================================
--- src/Exceptions/MissingValueException.cpp	(revision 88267818974ad107d18379d2ec3d0d19c96351bd)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/*
- * Project: MoleCuilder
- * Description: creates and alters molecular systems
- * Copyright (C)  2010 University of Bonn. All rights reserved.
- * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
- */
-
-/*
- * MissingValueException.cpp
- *
- *  Created on: Jul 23, 2010
- *      Author: heber
- */
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "CodePatterns/MemDebug.hpp"
-
-#include "MissingValueException.hpp"
-
-using namespace std;
-
-MissingValueException::MissingValueException(string _file, int _line) :
-  CustomException(_file,_line)
-{}
-
-MissingValueException::~MissingValueException() throw ()
-{}
-
-const char* MissingValueException::what() const throw(){
-  return "Value necessary for Action not present in ValueStorage";
-}
Index: c/Exceptions/MissingValueException.hpp
===================================================================
--- src/Exceptions/MissingValueException.hpp	(revision 88267818974ad107d18379d2ec3d0d19c96351bd)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/*
- * MissingValueException.hpp
- *
- *  Created on: Jul 23, 2010
- *      Author: heber
- */
-
-#ifndef MISSINGVALUEEXCEPTION_HPP_
-#define MISSINGVALUEEXCEPTION_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "Exceptions/CustomException.hpp"
-
-class MissingValueException : public CustomException
-{
-public:
-  MissingValueException(std::string _file, int _line);
-  virtual ~MissingValueException() throw ();
-
-  virtual const char* what() const throw();
-};
-
-#endif /* MISSINGVALUEEXCEPTION_HPP_ */
