Index: lemon/bits/invalid.h
===================================================================
--- lemon/bits/invalid.h	(revision 13)
+++ lemon/bits/invalid.h	(revision 7)
@@ -25,5 +25,5 @@
 namespace lemon {
 
-  /// \brief Dummy type to make it easier to create invalid iterators.
+  /// \brief Dummy type to make it easier to make invalid iterators.
   ///
   /// See \ref INVALID for the usage.
@@ -35,6 +35,6 @@
   };
   
-  /// \brief Invalid iterators.
-  ///
+  /// Invalid iterators.
+  
   /// \ref Invalid is a global type that converts to each iterator
   /// in such a way that the value of the target iterator will be invalid.
Index: lemon/dim2.h
===================================================================
--- lemon/dim2.h	(revision 8)
+++ lemon/dim2.h	(revision 15)
@@ -35,7 +35,4 @@
 /// the rectangular bounding box of a set of
 /// \ref lemon::dim2::Point "dim2::Point"'s.
-///
-///\author Attila Bernath
-
 
 namespace lemon {
@@ -63,7 +60,7 @@
       typedef T Value;
 
-      ///First co-ordinate
+      ///First coordinate
       T x;
-      ///Second co-ordinate
+      ///Second coordinate
       T y;     
       
@@ -76,6 +73,6 @@
       ///The dimension of the vector.
 
-      ///This class give back always 2.
-      ///
+      ///The dimension of the vector.
+      ///This function always returns 2. 
       int size() const { return 2; }
 
@@ -139,5 +136,5 @@
       }
 
-      ///Return the neg of the vectors
+      ///Return the negative of the vector
       Point<T> operator-() const {
         Point<T> b=*this;
@@ -176,7 +173,7 @@
     };
 
-  ///Return an Point 
-
-  ///Return an Point
+  ///Return a Point 
+
+  ///Return a Point.
   ///\relates Point
   template <typename T>
@@ -187,5 +184,5 @@
   ///Return a vector multiplied by a scalar
 
-  ///Return a vector multiplied by a scalar
+  ///Return a vector multiplied by a scalar.
   ///\relates Point
   template<typename T> Point<T> operator*(const T &u,const Point<T> &x) {
@@ -195,5 +192,5 @@
   ///Read a plainvector from a stream
 
-  ///Read a plainvector from a stream
+  ///Read a plainvector from a stream.
   ///\relates Point
   ///
@@ -223,5 +220,5 @@
   ///Write a plainvector to a stream
 
-  ///Write a plainvector to a stream
+  ///Write a plainvector to a stream.
   ///\relates Point
   ///
@@ -235,5 +232,5 @@
   ///Rotate by 90 degrees
 
-  ///Returns its parameter rotated by 90 degrees in positive direction.
+  ///Returns the parameter rotated by 90 degrees in positive direction.
   ///\relates Point
   ///
@@ -246,5 +243,5 @@
   ///Rotate by 180 degrees
 
-  ///Returns its parameter rotated by 180 degrees.
+  ///Returns the parameter rotated by 180 degrees.
   ///\relates Point
   ///
@@ -257,5 +254,5 @@
   ///Rotate by 270 degrees
 
-  ///Returns its parameter rotated by 90 degrees in negative direction.
+  ///Returns the parameter rotated by 90 degrees in negative direction.
   ///\relates Point
   ///
@@ -272,5 +269,4 @@
   /// A class to calculate or store the bounding box of plainvectors.
   ///
-  ///\author Attila Bernath
     template<typename T>
     class BoundingBox {
@@ -287,7 +283,9 @@
       ///Construct an instance from two points
       
-      ///Construct an instance from two points
-      ///\warning The coordinates of the bottom-left corner must be no more
-      ///than those of the top-right one
+      ///Construct an instance from two points.
+      ///\param a The bottom left corner.
+      ///\param b The top right corner.
+      ///\warning The coordinates of the bottom left corner must be no more
+      ///than those of the top right one.
       BoundingBox(Point<T> a,Point<T> b)
       {
@@ -299,7 +297,11 @@
       ///Construct an instance from four numbers
 
-      ///Construct an instance from four numbers
-      ///\warning The coordinates of the bottom-left corner must be no more
-      ///than those of the top-right one
+      ///Construct an instance from four numbers.
+      ///\param l The left side of the box.
+      ///\param b The bottom of the box.
+      ///\param r The right side of the box.
+      ///\param t The top of the box.
+      ///\warning The left side must be no more than the right side and
+      ///bottom must be no more than the top. 
       BoundingBox(T l,T b,T r,T t)
       {
@@ -309,5 +311,10 @@
       }
       
-      ///Were any points added?
+      ///Return \c true if the bounding box is empty.
+      
+      ///Return \c true if the bounding box is empty (i.e. return \c false
+      ///if at least one point was added to the box or the coordinates of
+      ///the box were set).
+      ///The coordinates of an empty bounding box are not defined. 
       bool empty() const {
         return _empty;
@@ -330,5 +337,5 @@
 
       ///Set the bottom left corner.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void bottomLeft(Point<T> p) {
 	bottom_left = p;
@@ -346,5 +353,5 @@
 
       ///Set the top right corner.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void topRight(Point<T> p) {
 	top_right = p;
@@ -362,5 +369,5 @@
 
       ///Set the bottom right corner.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void bottomRight(Point<T> p) {
 	top_right.x = p.x;
@@ -379,5 +386,5 @@
 
       ///Set the top left corner.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void topLeft(Point<T> p) {
 	top_right.y = p.y;
@@ -396,5 +403,5 @@
 
       ///Set the bottom of the box.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void bottom(T t) {
 	bottom_left.y = t;
@@ -412,5 +419,5 @@
 
       ///Set the top of the box.
-      ///It should only bee used for non-empty box.
+      ///It should only be used for non-empty box.
       void top(T t) {
 	top_right.y = t;
@@ -428,5 +435,5 @@
 
       ///Set the left side of the box.
-      ///It should only bee used for non-empty box
+      ///It should only be used for non-empty box.
       void left(T t) {
 	bottom_left.x = t;
@@ -444,5 +451,5 @@
 
       ///Set the right side of the box.
-      ///It should only bee used for non-empty box
+      ///It should only be used for non-empty box.
       void right(T t) {
 	top_right.x = t;
@@ -466,5 +473,5 @@
 
       ///Checks whether a point is inside a bounding box
-      bool inside(const Point<T>& u){
+      bool inside(const Point<T>& u) const {
         if (_empty)
           return false;
@@ -476,4 +483,7 @@
   
       ///Increments a bounding box with a point
+
+      ///Increments a bounding box with a point.
+      ///
       BoundingBox& add(const Point<T>& u){
         if (_empty){
@@ -490,5 +500,8 @@
       }
     
-      ///Increments a bounding to contain another bounding box
+      ///Increments a bounding box to contain another bounding box
+      
+      ///Increments a bounding box to contain another bounding box.
+      ///
       BoundingBox& add(const BoundingBox &u){
         if ( !u.empty() ){
@@ -500,12 +513,19 @@
   
       ///Intersection of two bounding boxes
-      BoundingBox operator &(const BoundingBox& u){
+
+      ///Intersection of two bounding boxes.
+      ///
+      BoundingBox operator&(const BoundingBox& u) const {
         BoundingBox b;
-	b.bottom_left.x=std::max(this->bottom_left.x,u.bottom_left.x);
-	b.bottom_left.y=std::max(this->bottom_left.y,u.bottom_left.y);
-	b.top_right.x=std::min(this->top_right.x,u.top_right.x);
-	b.top_right.y=std::min(this->top_right.y,u.top_right.y);
-	b._empty = this->_empty || u._empty ||
-	  b.bottom_left.x>top_right.x && b.bottom_left.y>top_right.y;
+        if (this->_empty || u._empty) {
+	  b._empty = true;
+	} else {
+	  b.bottom_left.x = std::max(this->bottom_left.x,u.bottom_left.x);
+	  b.bottom_left.y = std::max(this->bottom_left.y,u.bottom_left.y);
+	  b.top_right.x = std::min(this->top_right.x,u.top_right.x);
+	  b.top_right.y = std::min(this->top_right.y,u.top_right.y);
+	  b._empty = b.bottom_left.x > b.top_right.x ||
+	             b.bottom_left.y > b.top_right.y;
+	} 
         return b;
       }
@@ -514,8 +534,8 @@
 
 
-  ///Map of x-coordinates of a dim2::Point<>-map
-
-  ///\ingroup maps
-  ///Map of x-coordinates of a dim2::Point<>-map
+  ///Map of x-coordinates of a \ref Point "Point"-map
+
+  ///\ingroup maps
+  ///Map of x-coordinates of a \ref Point "Point"-map.
   ///
   template<class M>
@@ -571,5 +591,5 @@
   ///Returns a \ref ConstXMap class
 
-  ///This function just returns an \ref ConstXMap class.
+  ///This function just returns a \ref ConstXMap class.
   ///
   ///\ingroup maps
@@ -581,8 +601,8 @@
   }
 
-  ///Map of y-coordinates of a dim2::Point<>-map
+  ///Map of y-coordinates of a \ref Point "Point"-map
     
   ///\ingroup maps
-  ///Map of y-coordinates of a dim2::Point<>-map
+  ///Map of y-coordinates of a \ref Point "Point"-map.
   ///
   template<class M>
@@ -600,7 +620,7 @@
   };
 
-  ///Returns an \ref YMap class
-
-  ///This function just returns an \ref YMap class.
+  ///Returns a \ref YMap class
+
+  ///This function just returns a \ref YMap class.
   ///
   ///\ingroup maps
@@ -638,5 +658,5 @@
   ///Returns a \ref ConstYMap class
 
-  ///This function just returns an \ref ConstYMap class.
+  ///This function just returns a \ref ConstYMap class.
   ///
   ///\ingroup maps
@@ -650,8 +670,8 @@
 
     ///\brief Map of the \ref Point::normSquare() "normSquare()"
-    ///of an \ref Point "Point"-map
+    ///of a \ref Point "Point"-map
     ///
     ///Map of the \ref Point::normSquare() "normSquare()"
-    ///of an \ref Point "Point"-map
+    ///of a \ref Point "Point"-map.
     ///\ingroup maps
     ///
@@ -671,5 +691,5 @@
   ///Returns a \ref NormSquareMap class
 
-  ///This function just returns an \ref NormSquareMap class.
+  ///This function just returns a \ref NormSquareMap class.
   ///
   ///\ingroup maps
