Index: src/work/list_graph.h
===================================================================
--- src/work/list_graph.h	(revision 335)
+++ src/work/list_graph.h	(revision 354)
@@ -506,5 +506,5 @@
       //node_item* v;
       //protected:
-    public: //for alpar
+    protected: //for alpar
       SymEdgeIt(const Node& _v) /*: v(_v.node)*/ { 
 	out_or_in=1;
@@ -537,44 +537,10 @@
 	return (out_or_in) ? Node(edge->_head) : Node(edge->_tail); }
     };
-
   };
 
-//   template< typename T >
-//   T ListGraph::first() const { 
-//     std::cerr << "Invalid use of template<typemane T> T ListGraph::first<T>();" << std::endl; 
-//     return T(); 
-//   }
-
-//   template<>
-//   ListGraph::NodeIt ListGraph::first<ListGraph::NodeIt>() const { 
-//     return firstNode(); 
-//   }
-
-//   template<>
-//   ListGraph::EdgeIt ListGraph::first<ListGraph::EdgeIt>() const { 
-//     return firstEdge(); 
-//   }
-
-//   template< typename T >
-//   T ListGraph::first(ListGraph::Node v) const {
-//     std::cerr << "Invalid use of template<typemane T> T ListGraph::first<T>(ListGRaph::Node);" << std::endl; 
-//     return T(); 
-//   } 
-
-//   template<>
-//   ListGraph::OutEdgeIt ListGraph::first<ListGraph::OutEdgeIt>(const ListGraph::Node v) const { 
-//     return firstOutEdge(v); 
-//   }
-
-//   template<>
-//   ListGraph::InEdgeIt ListGraph::first<ListGraph::InEdgeIt>(const ListGraph::Node v) const { 
-//     return firstInEdge(v); 
-//   }
-
-//   template<>
-//   ListGraph::SymEdgeIt ListGraph::first<ListGraph::SymEdgeIt>(const ListGraph::Node v) const { 
-//     return firstSymEdge(v); 
-//   }
-
+  class UndirListGraph : public ListGraph {
+    typedef SymEdgeIt OutEdgeIt;
+    typedef SymEdgeIt InEdgeIt;
+  };
 
 } //namespace hugo
