Index: src/lemon/graph_to_eps.h
===================================================================
--- src/lemon/graph_to_eps.h	(revision 1202)
+++ src/lemon/graph_to_eps.h	(revision 1234)
@@ -27,4 +27,5 @@
 #include<vector>
 
+#include<lemon/invalid.h>
 #include<lemon/xy.h>
 #include<lemon/maps.h>
@@ -192,9 +193,4 @@
   ConstMap<typename Graph::Edge,double > _edgeWidths;
 
-  static const double A4HEIGHT = 841.8897637795276;
-  static const double A4WIDTH  = 595.275590551181;
-  static const double A4BORDER = 15;
-
-  
   double _edgeWidthScale;
   
@@ -272,4 +268,56 @@
 template<class T> class GraphToEps : public T 
 {
+  // Can't believe it is required by the C++ standard
+  using T::g;
+  using T::os;
+
+  using T::_coords;
+  using T::_nodeSizes;
+  using T::_nodeShapes;
+  using T::_nodeColors;
+  using T::_edgeColors;
+  using T::_edgeWidths;
+
+  using T::_edgeWidthScale;
+  using T::_nodeScale;
+  using T::_xBorder;
+  using T::_yBorder;
+  using T::_scale;
+  using T::_nodeBorderQuotient;
+  
+  using T::_drawArrows;
+  using T::_arrowLength;
+  using T::_arrowWidth;
+  
+  using T::_showNodes;
+  using T::_showEdges;
+
+  using T::_enableParallel;
+  using T::_parEdgeDist;
+
+  using T::_showNodeText;
+  using T::_nodeTexts;  
+  using T::_nodeTextSize;
+
+  using T::_showNodePsText;
+  using T::_nodePsTexts;  
+  using T::_nodePsTextsPreamble;
+  
+  using T::_undir;
+  using T::_pleaseRemoveOsStream;
+
+  using T::_scaleToA4;
+
+  using T::_title;
+  using T::_copyright;
+
+  using T::NodeTextColorType;
+  using T::CUST_COL;
+  using T::DIST_COL;
+  using T::DIST_BW;
+  using T::_nodeTextColorType;
+  using T::_nodeTextColors;
+  // dradnats ++C eht yb deriuqer si ti eveileb t'naC
+
   typedef typename T::Graph Graph;
   typedef typename Graph::Node Node;
@@ -281,4 +329,7 @@
 
   static const int INTERPOL_PREC=20;
+  static const double A4HEIGHT = 841.8897637795276;
+  static const double A4WIDTH  = 595.275590551181;
+  static const double A4BORDER = 15;
 
   bool dontPrint;
@@ -324,6 +375,8 @@
   bool isParallel(Edge e,Edge f) const
   {
-    return (g.source(e)==g.source(f)&&g.target(e)==g.target(f))||
-      (g.source(e)==g.target(f)&&g.target(e)==g.source(f));
+    return (g.source(e)==g.source(f)&&
+	    g.target(e)==g.target(f)) ||
+      (g.source(e)==g.target(f)&&
+       g.target(e)==g.source(f));
   }
   template<class TT>
@@ -584,5 +637,5 @@
   ///\sa nodePsTexts()
   GraphToEps<T> & nodePsTextsPreamble(const char *str) {
-    _nodePsTextsPreamble=s ;return *this;
+    _nodePsTextsPreamble=str ;return *this;
   }
   ///Sets whether the the graph is undirected
Index: src/lemon/max_matching.h
===================================================================
--- src/lemon/max_matching.h	(revision 1177)
+++ src/lemon/max_matching.h	(revision 1234)
@@ -263,14 +263,15 @@
 		    UFE& blossom, UFE& tree);
 
-    void normShrink(Node v, typename Graph::NodeMap<Node>& ear,  
+    void normShrink(Node v, typename Graph::template NodeMap<Node>& ear,  
 		    UFE& blossom, UFE& tree);
 
-    bool noShrinkStep(Node x, typename Graph::NodeMap<Node>& ear,  
+    bool noShrinkStep(Node x, typename Graph::template NodeMap<Node>& ear,  
 		      UFE& blossom, UFE& tree, std::queue<Node>& Q);
 
-    void shrinkStep(Node& top, Node& middle, Node& bottom, typename Graph::NodeMap<Node>& ear,  
+    void shrinkStep(Node& top, Node& middle, Node& bottom,
+		    typename Graph::template NodeMap<Node>& ear,  
 		    UFE& blossom, UFE& tree, std::queue<Node>& Q);
 
-    void augment(Node x, typename Graph::NodeMap<Node>& ear,  
+    void augment(Node x, typename Graph::template NodeMap<Node>& ear,  
 		 UFE& blossom, UFE& tree);
 
@@ -387,7 +388,8 @@
 
   template <typename Graph>
-  void MaxMatching<Graph>::normShrink(Node v, typename Graph::NodeMap<Node>& ear,  
+  void MaxMatching<Graph>::normShrink(Node v,
+				      typename Graph::template
+				      NodeMap<Node>& ear,  
 				      UFE& blossom, UFE& tree) {
-
     std::queue<Node> Q;   //queue of the unscanned nodes
     Q.push(v);  
@@ -491,6 +493,9 @@
 
   template <typename Graph>
-  bool MaxMatching<Graph>::noShrinkStep(Node x, typename Graph::NodeMap<Node>& ear,  
-					UFE& blossom, UFE& tree, std::queue<Node>& Q) {
+  bool MaxMatching<Graph>::noShrinkStep(Node x,
+					typename Graph::template 
+					NodeMap<Node>& ear,  
+					UFE& blossom, UFE& tree,
+					std::queue<Node>& Q) {
     for( IncEdgeIt e(g,x); e!= INVALID; ++e ) {
       Node y=g.runningNode(e);
@@ -520,6 +525,9 @@
 
   template <typename Graph>
-  void MaxMatching<Graph>::shrinkStep(Node& top, Node& middle, Node& bottom, typename Graph::NodeMap<Node>& ear,  
-				      UFE& blossom, UFE& tree, std::queue<Node>& Q) {
+  void MaxMatching<Graph>::shrinkStep(Node& top, Node& middle, Node& bottom,
+				      typename Graph::template
+				      NodeMap<Node>& ear,  
+				      UFE& blossom, UFE& tree,
+				      std::queue<Node>& Q) {
     ear.set(top,bottom);
     Node t=top;
@@ -543,5 +551,6 @@
 
   template <typename Graph>
-  void MaxMatching<Graph>::augment(Node x, typename Graph::NodeMap<Node>& ear,  
+  void MaxMatching<Graph>::augment(Node x,
+				   typename Graph::template NodeMap<Node>& ear,  
 				   UFE& blossom, UFE& tree) { 
     Node v=_mate[x];
