Index: LinearAlgebra/src/LinearAlgebra/Line.cpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/Line.cpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/Line.cpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -31,4 +31,5 @@
 #include "defs.hpp"
 #include "Exceptions.hpp"
+#include "LinePoint.hpp"
 #include "MatrixContent.hpp"
 #include "Plane.hpp"
@@ -308,50 +309,5 @@
 }
 
-/******************************** Points on the line ********************/
-
-LinePoint::LinePoint(const LinePoint &src) :
-  line(src.line),param(src.param)
-{}
-
-LinePoint::LinePoint(const Line &_line, double _param) :
-  line(_line),param(_param)
-{}
-
-LinePoint& LinePoint::operator=(const LinePoint &src){
-  line=src.line;
-  param=src.param;
-  return *this;
-}
-
-Vector LinePoint::getPoint() const{
-  ASSERT(!isInfinite(),"getPoint() on infinite LinePoint called");
-  return (*line.origin)+param*(*line.direction);
-}
-
-Line LinePoint::getLine() const{
-  return line;
-}
-
-bool LinePoint::isInfinite() const{
-  return isPosInfinity() || isNegInfinity();
-}
-bool LinePoint::isPosInfinity() const{
-  return param == numeric_limits<double>::infinity();
-}
-bool LinePoint::isNegInfinity() const{
-  return param ==-numeric_limits<double>::infinity();
-}
-
-bool operator==(const LinePoint &x, const LinePoint &y){
-  ASSERT(x.line==y.line,"Operation on two points of different lines");
-  return x.param == y.param;
-
-}
-bool operator<(const LinePoint &x, const LinePoint &y){
-  ASSERT(x.line==y.line,"Operation on two points of different lines");
-  return x.param<y.param;
-}
-
-ostream& operator<<(ostream& ost, const Line& m)
+std::ostream& operator<<(std::ostream& ost, const Line& m)
 {
   const Vector origin = m.getOrigin();
@@ -373,2 +329,4 @@
 };
 
+
+/******************************** Points on the line ********************/
Index: LinearAlgebra/src/LinearAlgebra/Line.hpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/Line.hpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/Line.hpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -25,4 +25,10 @@
 class LinePoint;
 
+/** This class represents a line in space stretching to infinity.
+ *
+ * It is defined by its origin and a direction.
+ *
+ * \sa LinePoint and LineSegment
+ */
 class Line : public Space
 {
@@ -74,36 +80,3 @@
 Line makeLineThrough(const Vector &x1, const Vector &x2);
 
-/**
- * Class for representing points on a line
- * These objects allow comparison of points on the same line as well as specifying the
- * infinite "endpoints" of a line.
- */
-class LinePoint{
-  friend class Line;
-  friend bool operator==(const LinePoint&, const LinePoint&);
-  friend bool operator<(const LinePoint&, const LinePoint&);
-public:
-  LinePoint(const LinePoint&);
-  LinePoint& operator=(const LinePoint&);
-  Vector getPoint() const;
-  Line getLine() const;
-  bool isInfinite() const;
-  bool isPosInfinity() const;
-  bool isNegInfinity() const;
-
-private:
-  LinePoint(const Line&,double);
-  Line line;
-  double param;
-};
-
-bool operator==(const LinePoint&, const LinePoint&);
-bool operator<(const LinePoint&, const LinePoint&);
-
-inline bool operator!= (const LinePoint& x, const LinePoint& y) { return !(x==y); }
-inline bool operator>  (const LinePoint& x, const LinePoint& y) { return y<x; }
-inline bool operator<= (const LinePoint& x, const LinePoint& y) { return !(y<x); }
-inline bool operator>= (const LinePoint& x, const LinePoint& y) { return !(x<y); }
-
-
 #endif /* LINE_HPP_ */
Index: LinearAlgebra/src/LinearAlgebra/LinePoint.cpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/LinePoint.cpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
+++ LinearAlgebra/src/LinearAlgebra/LinePoint.cpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -0,0 +1,73 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010-2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * LinePoint.cpp
+ *
+ *  Created on: Jan 28, 2012
+ *      Author: crueger
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "LinePoint.hpp"
+
+#include <limits>
+
+#include "CodePatterns/Assert.hpp"
+#include "defs.hpp"
+#include "Line.hpp"
+#include "Vector.hpp"
+
+LinePoint::LinePoint(const LinePoint &src) :
+  line(src.line),param(src.param)
+{}
+
+LinePoint::LinePoint(const Line &_line, double _param) :
+  line(_line),param(_param)
+{}
+
+LinePoint& LinePoint::operator=(const LinePoint &src){
+  line=src.line;
+  param=src.param;
+  return *this;
+}
+
+Vector LinePoint::getPoint() const{
+  ASSERT(!isInfinite(),"getPoint() on infinite LinePoint called");
+  return (*line.origin)+param*(*line.direction);
+}
+
+Line LinePoint::getLine() const{
+  return line;
+}
+
+bool LinePoint::isInfinite() const{
+  return isPosInfinity() || isNegInfinity();
+}
+bool LinePoint::isPosInfinity() const{
+  return param == std::numeric_limits<double>::infinity();
+}
+bool LinePoint::isNegInfinity() const{
+  return param == -std::numeric_limits<double>::infinity();
+}
+
+bool operator==(const LinePoint &x, const LinePoint &y){
+  ASSERT(x.line==y.line,"Operation on two points of different lines");
+  return x.param == y.param;
+
+}
+bool operator<(const LinePoint &x, const LinePoint &y){
+  ASSERT(x.line==y.line,"Operation on two points of different lines");
+  return x.param<y.param;
+}
+
Index: LinearAlgebra/src/LinearAlgebra/LinePoint.hpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/LinePoint.hpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
+++ LinearAlgebra/src/LinearAlgebra/LinePoint.hpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -0,0 +1,62 @@
+/*
+ * LinePoint.hpp
+ *
+ *  Created on: Jan 28, 2012
+ *      Author: crueger
+ */
+
+#ifndef LINEPOINT_HPP_
+#define LINEPOINT_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+
+#include <iosfwd>
+#include <memory>
+#include <vector>
+
+#include "Line.hpp"
+
+class Vector;
+
+/**
+ * Class for representing points on a line
+ *
+ * These objects allow comparison of points on the same line as well as
+ * specifying the infinite "endpoints" of a line.
+ *
+ * Note that LinePoint::param is not in [0,1] but has any real value relative
+ * to the Line::origin and Line::destination of a which a point it is.
+ */
+class LinePoint{
+  friend class Line;
+  friend bool operator==(const LinePoint&, const LinePoint&);
+  friend bool operator<(const LinePoint&, const LinePoint&);
+public:
+  LinePoint(const LinePoint&);
+  LinePoint& operator=(const LinePoint&);
+  Vector getPoint() const;
+  Line getLine() const;
+  bool isInfinite() const;
+  bool isPosInfinity() const;
+  bool isNegInfinity() const;
+
+private:
+  LinePoint(const Line&,double);
+  Line line;
+  double param;
+};
+
+bool operator==(const LinePoint&, const LinePoint&);
+bool operator<(const LinePoint&, const LinePoint&);
+
+inline bool operator!= (const LinePoint& x, const LinePoint& y) { return !(x==y); }
+inline bool operator>  (const LinePoint& x, const LinePoint& y) { return y<x; }
+inline bool operator<= (const LinePoint& x, const LinePoint& y) { return !(y<x); }
+inline bool operator>= (const LinePoint& x, const LinePoint& y) { return !(x<y); }
+
+
+#endif /* LINEPOINT_HPP_ */
Index: LinearAlgebra/src/LinearAlgebra/LineSegment.cpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/LineSegment.cpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/LineSegment.cpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -24,4 +24,5 @@
 
 #include "Line.hpp"
+#include "LinePoint.hpp"
 #include "Vector.hpp"
 
Index: LinearAlgebra/src/LinearAlgebra/LineSegment.hpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/LineSegment.hpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/LineSegment.hpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -21,4 +21,8 @@
 class LinePoint;
 
+/** This class represents a specific segment of a line, defined through
+ * two points on the same line that form start and end.
+ *
+ */
 class LineSegment
 {
Index: LinearAlgebra/src/LinearAlgebra/LineSegmentSet.cpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/LineSegmentSet.cpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/LineSegmentSet.cpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -24,4 +24,5 @@
 #include "CodePatterns/Assert.hpp"
 #include "Line.hpp"
+#include "LinePoint.hpp"
 #include "LineSegment.hpp"
 
Index: LinearAlgebra/src/LinearAlgebra/LineSegmentSet.hpp
===================================================================
--- LinearAlgebra/src/LinearAlgebra/LineSegmentSet.hpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/LineSegmentSet.hpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -22,4 +22,11 @@
 class LineSegment;
 
+/** This class represents a continous set of LineSegment's all on the same
+ * underlying line.
+ *
+ * Hence, it is basically a sorted container for LinePoints but
+ * we iterate over it segment-wise.
+ *
+ */
 class LineSegmentSet {
   friend LineSegmentSet merge(const LineSegmentSet&,const LineSegmentSet&);
Index: LinearAlgebra/src/LinearAlgebra/Makefile.am
===================================================================
--- LinearAlgebra/src/LinearAlgebra/Makefile.am	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/LinearAlgebra/Makefile.am	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -11,4 +11,5 @@
   leastsquaremin.cpp \
   Line.cpp \
+  LinePoint.cpp \
   LineSegment.cpp \
   LineSegmentSet.cpp \
@@ -31,4 +32,5 @@
   leastsquaremin.hpp \
   Line.hpp \
+  LinePoint.hpp \
   LineSegment.hpp \
   LineSegmentSet.hpp \
Index: LinearAlgebra/src/documentation/lines.dox
===================================================================
--- LinearAlgebra/src/documentation/lines.dox	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
+++ LinearAlgebra/src/documentation/lines.dox	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+/**
+ * \file lines.dox
+ *
+ * Herein, we explain the structural ideas behind lines and line segments.
+ *
+ * Created on: Jan 28, 2012
+ *    Author: heber
+ */
+
+/**
+ * \page lines Lines
+ *
+ * \section lines-types Types of Lines
+ * 
+ * We have many different classes that all seem to have something to do with
+ * lines. Let us here briefly explain which is which:
+ * -# Line A line represents a two-dimensional object in Space stretching from
+ *    and to infinity on either end.
+ * -# LineSegment the segment of a line is defined through two points which form
+ *    its start and end.
+ * -# LinePoint a point on a specific line, identifiable and more so, alignable
+ *    by its parameter LinePoint::param.
+ * -# LineSegmentSet a continous set of segments of lines, i.e. such that the
+ *    end point of the last is the starting point of the next. 
+ *
+ * \date 2012-01-28
+ *
+ */
Index: LinearAlgebra/src/documentation/mainpage.dox
===================================================================
--- LinearAlgebra/src/documentation/mainpage.dox	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ LinearAlgebra/src/documentation/mainpage.dox	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -25,4 +25,6 @@
  *
  *
+ * \ref lines Lines and subtypes
+ *
  * \date 2011-11-02
  *
Index: src/Shapes/Shape_impl.hpp
===================================================================
--- src/Shapes/Shape_impl.hpp	(revision e9ad4343d882a9eb00d1566d22d9d03580a62a77)
+++ src/Shapes/Shape_impl.hpp	(revision 7672551588bebb7aede173ab33a7c92d8ee6bed7)
@@ -24,4 +24,5 @@
 #include "Shapes/ShapeType.hpp"
 #include "LinearAlgebra/Line.hpp"
+#include "LinearAlgebra/LinePoint.hpp"
 #include "LinearAlgebra/LineSegment.hpp"
 #include "LinearAlgebra/LineSegmentSet.hpp"
