Index: src/Descriptors/MoleculeFormulaDescriptor.cpp
===================================================================
--- src/Descriptors/MoleculeFormulaDescriptor.cpp	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ src/Descriptors/MoleculeFormulaDescriptor.cpp	(revision b88fe4cde25eb17a90126edc680f80f5b35c49c9)
@@ -23,4 +23,5 @@
 #include "MoleculeFormulaDescriptor_impl.hpp"
 
+#include "Formula.hpp"
 #include "molecule.hpp"
 
Index: src/Descriptors/MoleculeFormulaDescriptor.hpp
===================================================================
--- src/Descriptors/MoleculeFormulaDescriptor.hpp	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ src/Descriptors/MoleculeFormulaDescriptor.hpp	(revision b88fe4cde25eb17a90126edc680f80f5b35c49c9)
@@ -16,7 +16,6 @@
 
 #include "Descriptors/MoleculeDescriptor.hpp"
-#include "Exceptions/FormulaStringParseException.hpp"
 
-class Formula;
+#include "Formula.hpp"
 
 MoleculeDescriptor MoleculeByFormula(const Formula&);
Index: src/Exceptions/FormulaStringParseException.cpp
===================================================================
--- src/Exceptions/FormulaStringParseException.cpp	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ 	(revision )
@@ -1,32 +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.
- */
-
-/*
- * FormulaStringParseException.cpp
- *
- *  Created on: Jul 21, 2010
- *      Author: crueger
- */
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "CodePatterns/MemDebug.hpp"
-
-#include "FormulaStringParseException.hpp"
-
-FormulaStringParseException::FormulaStringParseException(std::string file, int line) :
-  CustomException(file,line)
-{}
-
-FormulaStringParseException::~FormulaStringParseException() throw(){}
-
-const char* FormulaStringParseException::what() const throw(){
-  return "Could not parse string";
-}
Index: src/Exceptions/FormulaStringParseException.hpp
===================================================================
--- src/Exceptions/FormulaStringParseException.hpp	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/*
- * FormulaStringParseException.hpp
- *
- *  Created on: Jul 21, 2010
- *      Author: crueger
- */
-
-#ifndef PARSEERROR_HPP_
-#define PARSEERROR_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "Exceptions/CustomException.hpp"
-
-class FormulaStringParseException : public CustomException
-{
-public:
-  FormulaStringParseException(std::string file, int line);
-  virtual ~FormulaStringParseException() throw();
-
-  virtual const char* what() const throw();
-};
-
-#endif /* PARSEERROR_HPP_ */
Index: src/Exceptions/Makefile.am
===================================================================
--- src/Exceptions/Makefile.am	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ src/Exceptions/Makefile.am	(revision b88fe4cde25eb17a90126edc680f80f5b35c49c9)
@@ -12,6 +12,5 @@
   MissingValueException.cpp \
   NotOnSurfaceException.cpp \
-  ShapeException.cpp \
-  FormulaStringParseException.cpp
+  ShapeException.cpp
 	
 				  
@@ -20,6 +19,5 @@
   IllegalTypeException.hpp \
   MissingValueException.hpp \
-  NotOnSurfaceException.hpp \
-  FormulaStringParseException.hpp
+  NotOnSurfaceException.hpp
 
 
Index: src/Formula.cpp
===================================================================
--- src/Formula.cpp	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ src/Formula.cpp	(revision b88fe4cde25eb17a90126edc680f80f5b35c49c9)
@@ -103,5 +103,5 @@
       sub.parseFromString(++it,end,nextdelim);
       if(!sub.getElementCount()){
-        throw(FormulaStringParseException(__FILE__,__LINE__));
+        throw FormulaStringParseException() << FormulaString( string(it, end) );
       }
       int count = parseMaybeNumber(++it,end);
@@ -112,5 +112,5 @@
     // Atom names start with a capital letter
     if(!CapitalLetters.isInRange(*it))
-      throw(FormulaStringParseException(__FILE__,__LINE__));
+      throw FormulaStringParseException() << FormulaString( string(it, end) );
     shorthand+=(*it++);
     // the rest of the name follows
@@ -120,10 +120,10 @@
     // test if the shorthand exists
     if(!World::getInstance().getPeriode()->FindElement(shorthand))
-      throw(FormulaStringParseException(__FILE__,__LINE__));
+      throw FormulaStringParseException() << FormulaString( string(it, end) );
     // done, we can get the next one
     addElements(shorthand,count);
   }
   if(it==end && delimiter!=0){
-    throw(FormulaStringParseException(__FILE__,__LINE__));
+    throw FormulaStringParseException() << FormulaString( string(it, end) );
   }
 }
Index: src/Formula.hpp
===================================================================
--- src/Formula.hpp	(revision 00bb38e01da38a92854e72c77a6654dea58e2626)
+++ src/Formula.hpp	(revision b88fe4cde25eb17a90126edc680f80f5b35c49c9)
@@ -19,12 +19,29 @@
 #include <iterator>
 
-#include "Exceptions/FormulaStringParseException.hpp"
-
 #include "types.hpp"
 
 #include "CodePatterns/enumeration.hpp"
 
+#include <exception>
+#include <boost/exception.hpp>
+
+/** ============================= Begin of Exceptions ===================== */
+
+/** Base class for all exceptions regarding Formula.
+ *
+ */
+struct FormulaException : virtual std::exception, virtual boost::exception { };
+
+/** Exception information for FormulaException: string.
+ */
+typedef boost::error_info<struct tag_FormulaString, const std::string> FormulaString;
+
+/** Exception thrown when a string cannot be parsed as a formula.
+ */
+struct FormulaStringParseException : virtual FormulaException { };
+
+/** ============================== end of Exceptions ====================== */
+
 class element;
-
 
 class Formula
