Index: src/BoundaryTriangleSet.cpp
===================================================================
--- src/BoundaryTriangleSet.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/BoundaryTriangleSet.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -34,4 +34,5 @@
 #include "CodePatterns/Log.hpp"
 #include "CodePatterns/Verbose.hpp"
+#include "LinearAlgebra/Exceptions.hpp"
 #include "LinearAlgebra/Line.hpp"
 #include "LinearAlgebra/Plane.hpp"
@@ -186,6 +187,6 @@
     return true;
   }
-  catch (MathException &excp) {
-    Log() << Verbose(1) << excp;
+  catch (LinearAlgebraException &excp) {
+    Log() << Verbose(1) << boost::diagnostic_information(excp);
     DoeLog(1) && (eLog() << Verbose(1) << "Alas! Intersection with plane failed - at least numerically - the intersection is not on the plane!" << endl);
     return false;
@@ -218,5 +219,5 @@
     ClosestPoint = Plane(NormalVector, (endpoints[0]->node->getPosition())).GetIntersection(l);
   }
-  catch (MathException &excp) {
+  catch (LinearAlgebraException &excp) {
     (ClosestPoint) = (x);
   }
Index: c/Exceptions/LinearDependenceException.cpp
===================================================================
--- src/Exceptions/LinearDependenceException.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ 	(revision )
@@ -1,36 +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.
- */
-
-/*
- * LinearDependenceException.cpp
- *
- *  Created on: Apr 7, 2010
- *      Author: crueger
- */
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "CodePatterns/MemDebug.hpp"
-
-#include "LinearDependenceException.hpp"
-
-using namespace std;
-
-LinearDependenceException::LinearDependenceException(string _file, int _line) :
-  MathException(_file,_line)
-{}
-
-LinearDependenceException::~LinearDependenceException() throw ()
-{}
-
-const char* LinearDependenceException::what() const throw()
-{
-  return "Given vectors are linear dependent.";
-}
Index: c/Exceptions/LinearDependenceException.hpp
===================================================================
--- src/Exceptions/LinearDependenceException.hpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/*
- * LinearDependenceException.hpp
- *
- *  Created on: Apr 7, 2010
- *      Author: crueger
- */
-
-#ifndef LINEARDEPENDENCEEXCEPTION_HPP_
-#define LINEARDEPENDENCEEXCEPTION_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "Exceptions/MathException.hpp"
-
-class LinearDependenceException : public MathException
-{
-public:
-  LinearDependenceException(std::string _file, int _line);
-  virtual ~LinearDependenceException() throw ();
-
-  virtual const char* what() const throw();
-};
-
-#endif /* LINEARDEPENDENCEEXCEPTION_HPP_ */
Index: src/Exceptions/Makefile.am
===================================================================
--- src/Exceptions/Makefile.am	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/Exceptions/Makefile.am	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -10,6 +10,4 @@
   CustomException.cpp \
   IllegalTypeException.cpp \
-  LinearDependenceException.cpp \
-  MathException.cpp \
   MissingValueException.cpp \
   NotOnSurfaceException.cpp \
@@ -21,6 +19,4 @@
   CustomException.hpp \
   IllegalTypeException.hpp \
-  LinearDependenceException.hpp \
-  MathException.hpp \
   MissingValueException.hpp \
   NotOnSurfaceException.hpp \
Index: c/Exceptions/MathException.cpp
===================================================================
--- src/Exceptions/MathException.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ 	(revision )
@@ -1,29 +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.
- */
-
-/*
- * MathException.cpp
- *
- *  Created on: Apr 30, 2010
- *      Author: crueger
- */
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "CodePatterns/MemDebug.hpp"
-
-#include "MathException.hpp"
-
-MathException::MathException(std::string file, int line) :
-  CustomException(file,line)
-{}
-
-MathException::~MathException() throw ()
-{}
Index: c/Exceptions/MathException.hpp
===================================================================
--- src/Exceptions/MathException.hpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/*
- * MathException.hpp
- *
- *  Created on: Apr 30, 2010
- *      Author: crueger
- */
-
-#ifndef MATHEXCEPTION_HPP_
-#define MATHEXCEPTION_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "Exceptions/CustomException.hpp"
-
-class MathException : public CustomException
-{
-public:
-  MathException(std::string file, int line);
-  virtual ~MathException() throw();
-};
-
-#endif /* MATHEXCEPTION_HPP_ */
Index: c/Exceptions/MultipleSolutionsException.hpp
===================================================================
--- src/Exceptions/MultipleSolutionsException.hpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/*
- * InfiniteSolutionsException.hpp
- *
- *  Created on: May 28, 2010
- *      Author: crueger
- */
-
-#ifndef INFINITESOLUTIONSEXCEPTION_HPP_
-#define INFINITESOLUTIONSEXCEPTION_HPP_
-
-// include config.h
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-
-#include "MathException.hpp"
-
-template<class T>
-class MultipleSolutionsException : public MathException
-{
-public:
-  MultipleSolutionsException(std::string _file, int _line, const T& _solution) :
-    MathException(_file,_line),
-    solution(_solution)
-  {}
-
-  virtual ~MultipleSolutionsException() throw(){}
-
-  virtual const char* what() const throw(){
-    return "Multiple solutions possible....";
-  }
-
-  /**
-   * use this method in case you don't care that there is more than one
-   * solution and just any solution is fine
-   */
-  virtual T getAnySolution(){
-    return solution;
-  }
-
-private:
-  T solution;
-};
-
-#endif /* MULTIPLESOLUTIONSEXCEPTION_HPP_ */
Index: src/LinearAlgebra/Exceptions.hpp
===================================================================
--- src/LinearAlgebra/Exceptions.hpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/Exceptions.hpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -36,13 +36,27 @@
 typedef boost::error_info<struct tag_LinearAlgebraVector, const Vector* const> LinearAlgebraVector;
 
+/** Exception information for LinearAlgebraException: vector.
+ */
+typedef boost::error_info<
+    struct tag_LinearAlgebraVectorPair,
+    const std::pair<const Vector* const, const Vector* const> > LinearAlgebraVectorPair;
+
 /** ============================ Specific exceptions ====================== */
+
+/** Exception thrown when two vectors are parallel, i.e. linear dependent.
+ */
+struct LinearDependenceException : virtual LinearAlgebraException { };
+
+/** Exception thrown when are matrix is not invertiable, i.e. its determinant is NULL.
+ */
+struct MultipleSolutionsException : virtual LinearAlgebraException { };
+
+/** Exception thrown when are matrix is not invertiable, i.e. its determinant is NULL.
+ */
+struct NotInvertibleException : virtual LinearAlgebraException { };
 
 /** Exception thrown when two lines are skew, i.e. do not intersect.
  */
 struct SkewException : virtual LinearAlgebraException { };
-
-/** Exception thrown when are matrix is not invertiable, i.e. its determinant is NULL.
- */
-struct NotInvertibleException : virtual LinearAlgebraException { };
 
 /** Exception thrown when a vector with only zero components is invalidly encountered.
Index: src/LinearAlgebra/Line.cpp
===================================================================
--- src/LinearAlgebra/Line.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/Line.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -29,7 +29,6 @@
 #include "CodePatterns/Log.hpp"
 #include "CodePatterns/Verbose.hpp"
-#include "Exceptions/LinearDependenceException.hpp"
-#include "Exceptions.hpp"
 #include "LinearAlgebra/defs.hpp"
+#include "LinearAlgebra/Exceptions.hpp"
 #include "LinearAlgebra/MatrixContent.hpp"
 #include "LinearAlgebra/Plane.hpp"
@@ -151,5 +150,5 @@
    res.Zero();
    Log() << Verbose(1) << "At least one of the lines is ill-defined, i.e. offset equals second vector." << endl;
-   throw LinearDependenceException(__FILE__,__LINE__);
+   throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&a, &b) );
   }
 
@@ -175,5 +174,5 @@
     Log() << Verbose(1) << "Lines are parallel." << endl;
     res.Zero();
-    throw LinearDependenceException(__FILE__,__LINE__);
+    throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&a, &b) );
   }
 
@@ -304,5 +303,5 @@
 Line makeLineThrough(const Vector &x1, const Vector &x2){
   if(x1==x2){
-    throw LinearDependenceException(__FILE__,__LINE__);
+    throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&x1, &x2) );
   }
   return Line(x1,x1-x2);
Index: src/LinearAlgebra/Plane.cpp
===================================================================
--- src/LinearAlgebra/Plane.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/Plane.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -27,5 +27,4 @@
 #include "CodePatterns/Log.hpp"
 #include "CodePatterns/Verbose.hpp"
-#include "Exceptions/MultipleSolutionsException.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/Exceptions.hpp"
@@ -41,8 +40,14 @@
   normalVector(new Vector())
 {
-  Vector x1 = y1 -y2;
-  Vector x2 = y3 -y2;
-  if ((fabs(x1.Norm()) <= LINALG_MYEPSILON()) || (fabs(x2.Norm()) <= LINALG_MYEPSILON()) || (fabs(x1.Angle(x2)) <= LINALG_MYEPSILON())) {
-    throw LinearDependenceException(__FILE__,__LINE__);
+  Vector x1 = y1 - y2;
+  Vector x2 = y3 - y2;
+  if ((x1.Norm() <= LINALG_MYEPSILON())) {
+    throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&y1, &y2) );
+  }
+  if ((x2.Norm() <= LINALG_MYEPSILON())) {
+    throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&y2, &y3) );
+  }
+  if((fabs(x1.Angle(x2)) <= LINALG_MYEPSILON())) {
+    throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&x1, &x2) );
   }
 //  Log() << Verbose(4) << "relative, first plane coordinates:";
@@ -69,12 +74,12 @@
   Vector x1 = y1;
   Vector x2 = y2;
-  if ((fabs(x1.Norm()) <= LINALG_MYEPSILON())) {
+  if ((x1.Norm() <= LINALG_MYEPSILON())) {
     throw ZeroVectorException() << LinearAlgebraVector(&x1);
   }
-  if ((fabs(x2.Norm()) <= LINALG_MYEPSILON())) {
+  if ((x2.Norm() <= LINALG_MYEPSILON())) {
     throw ZeroVectorException() << LinearAlgebraVector(&x2);
   }
   if((fabs(x1.Angle(x2)) <= LINALG_MYEPSILON())) {
-    throw LinearDependenceException(__FILE__,__LINE__);
+    throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&x1, &x2) );
   }
 //  Log() << Verbose(4) << "relative, first plane coordinates:";
@@ -181,13 +186,16 @@
   Vector res;
 
-  double factor1 = getNormal().ScalarProduct(line.getDirection());
+  res = getNormal();
+  const Vector direction = line.getDirection();
+  double factor1 = res.ScalarProduct(direction);
   if(fabs(factor1) <= LINALG_MYEPSILON()){
     // the plane is parallel... under all circumstances this is bad luck
     // we no have either no or infinite solutions
     if(isContained(line.getOrigin())){
-      throw MultipleSolutionsException<Vector>(__FILE__,__LINE__,line.getOrigin());
+      const Vector origin = line.getOrigin();
+      throw MultipleSolutionsException() << LinearAlgebraVector(&origin);
     }
     else{
-      throw LinearDependenceException(__FILE__,__LINE__);
+      throw LinearDependenceException() << LinearAlgebraVectorPair( make_pair(&res,  &direction) );
     }
   }
Index: src/LinearAlgebra/Plane.hpp
===================================================================
--- src/LinearAlgebra/Plane.hpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/Plane.hpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -21,5 +21,4 @@
 #include "LinearAlgebra/Exceptions.hpp"
 #include "LinearAlgebra/Space.hpp"
-#include "Exceptions/LinearDependenceException.hpp"
 
 class Vector;
Index: src/LinearAlgebra/Vector.cpp
===================================================================
--- src/LinearAlgebra/Vector.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/Vector.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -21,5 +21,4 @@
 #include "CodePatterns/Assert.hpp"
 #include "CodePatterns/Verbose.hpp"
-#include "Exceptions/MathException.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/fast_functions.hpp"
Index: src/LinearAlgebra/unittests/LineUnitTest.cpp
===================================================================
--- src/LinearAlgebra/unittests/LineUnitTest.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/unittests/LineUnitTest.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -21,5 +21,4 @@
 #include "LinearAlgebra/Exceptions.hpp"
 #include "LinearAlgebra/Vector.hpp"
-#include "Exceptions/LinearDependenceException.hpp"
 
 #include <cppunit/CompilerOutputter.h>
Index: src/LinearAlgebra/unittests/VectorUnitTest.cpp
===================================================================
--- src/LinearAlgebra/unittests/VectorUnitTest.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/unittests/VectorUnitTest.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -27,5 +27,4 @@
 
 #include "CodePatterns/Log.hpp"
-#include "Exceptions/LinearDependenceException.hpp"
 #include "LinearAlgebra/defs.hpp"
 #include "LinearAlgebra/Plane.hpp"
Index: src/LinearAlgebra/vector_ops.cpp
===================================================================
--- src/LinearAlgebra/vector_ops.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/LinearAlgebra/vector_ops.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -20,5 +20,4 @@
 #include "CodePatterns/MemDebug.hpp"
 
-#include "Exceptions/LinearDependenceException.hpp"
 #include "CodePatterns/Info.hpp"
 #include "CodePatterns/Log.hpp"
Index: src/molecule.cpp
===================================================================
--- src/molecule.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/molecule.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -33,7 +33,7 @@
 #include "config.hpp"
 #include "element.hpp"
-#include "Exceptions/LinearDependenceException.hpp"
 #include "graph.hpp"
 #include "Graph/BondGraph.hpp"
+#include "LinearAlgebra/Exceptions.hpp"
 #include "LinearAlgebra/leastsquaremin.hpp"
 #include "LinearAlgebra/Plane.hpp"
@@ -431,8 +431,8 @@
         // determine the plane of these two with the *origin
         try {
-          Orthovector1 =Plane(TopOrigin->getPosition(), FirstOtherAtom->getPosition(), SecondOtherAtom->getPosition()).getNormal();
+          Orthovector1 = Plane(TopOrigin->getPosition(), FirstOtherAtom->getPosition(), SecondOtherAtom->getPosition()).getNormal();
         }
         catch(LinearDependenceException &excp){
-          Log() << Verbose(0) << excp;
+          Log() << Verbose(0) << boost::diagnostic_information(excp);
           // TODO: figure out what to do with the Orthovector in this case
           AllWentWell = false;
@@ -528,5 +528,5 @@
       }
       catch(LinearDependenceException &excp) {
-        Log() << Verbose(0) << excp;
+        Log() << Verbose(0) << boost::diagnostic_information(excp);
         AllWentWell = false;
       }
Index: src/tesselation.cpp
===================================================================
--- src/tesselation.cpp	(revision 8b9c43d8a9fd262a308876876cf5a443b3dbb2b8)
+++ src/tesselation.cpp	(revision 783e885947b7814a6e0a4ae6029926646165b744)
@@ -33,11 +33,11 @@
 #include "CodePatterns/Log.hpp"
 #include "CodePatterns/Verbose.hpp"
-#include "Exceptions/LinearDependenceException.hpp"
 #include "Helpers/helpers.hpp"
 #include "IPointCloud.hpp"
+#include "LinearAlgebra/Exceptions.hpp"
+#include "LinearAlgebra/Line.hpp"
+#include "LinearAlgebra/Plane.hpp"
 #include "LinearAlgebra/Vector.hpp"
-#include "LinearAlgebra/Line.hpp"
 #include "LinearAlgebra/vector_ops.hpp"
-#include "LinearAlgebra/Plane.hpp"
 #include "linkedcell.hpp"
 #include "PointCloudAdaptor.hpp"
@@ -2127,5 +2127,5 @@
                   }
                   catch (LinearDependenceException &excp){
-                    Log() << Verbose(1) << excp;
+                    Log() << Verbose(1) << boost::diagnostic_information(excp);
                     Log() << Verbose(1) << "REJECT: Three points from " << *CandidateLine.BaseLine << " and Candidate " << *Candidate << " are linear-dependent." << endl;
                   }
