Index: lemon/graph_adaptor.h
===================================================================
--- lemon/graph_adaptor.h	(revision 1536)
+++ lemon/graph_adaptor.h	(revision 1538)
@@ -1216,5 +1216,4 @@
   };
 
-  /// \e
   template <typename _Graph>
   class NewEdgeSetAdaptorBase {
@@ -1414,4 +1413,18 @@
   };
 
+
+  /// \brief Graph adaptor using a node set of another graph and an
+  /// own edge set.
+  ///
+  /// This structure can be used to establish another graph over a node set
+  /// of an existing one. The node iterator will go through the nodes of the
+  /// original graph.
+  ///
+  /// \param _Graph The type of the graph which shares its node set with 
+  /// this class. Its interface must conform to the \ref skeleton::StaticGraph
+  /// "StaticGraph" concept.
+  ///
+  /// In the edge extension and removing it conforms to the 
+  /// \ref skeleton::ExtendableGraph "ExtendableGraph" concept.
   template <typename _Graph>
   class NewEdgeSetAdaptor :
@@ -1476,4 +1489,7 @@
   public:
 
+    /// \brief Constructor of the adaptor.
+    /// 
+    /// Constructor of the adaptor.
     NewEdgeSetAdaptor(const _Graph& _graph) : nodes(*this, _graph) {
       Parent::initalize(_graph, nodes);
@@ -1481,9 +1497,105 @@
 
     void clear() {
+      Parent::getNotifier(Edge()).clear();      
+
       Parent::edges.clear();
       Parent::first_edge = -1;
       Parent::first_free_edge = -1;
-
+    }
+    
+  };
+
+  /// \brief Graph adaptor using a node set of another graph and an
+  /// own undir edge set.
+  ///
+  /// This structure can be used to establish another undirected graph over 
+  /// a node set of an existing one. The node iterator will go through the 
+  /// nodes of the original graph.
+  ///
+  /// \param _Graph The type of the graph which shares its node set with 
+  /// this class. Its interface must conform to the \ref skeleton::StaticGraph
+  /// "StaticGraph" concept.
+  ///
+  /// In the edge extension and removing it conforms to the 
+  /// \ref skeleton::ExtendableGraph "ExtendableGraph" concept.
+  template <typename _Graph>
+  class NewUndirEdgeSetAdaptor :
+    public ErasableUndirGraphExtender<
+    ClearableUndirGraphExtender<
+    ExtendableUndirGraphExtender<
+    MappableUndirGraphExtender<
+    IterableUndirGraphExtender<
+    AlterableUndirGraphExtender<
+    UndirGraphExtender<
+    NewEdgeSetAdaptorBase<_Graph> > > > > > > > {
+
+  public:
+
+    typedef ErasableUndirGraphExtender<
+      ClearableUndirGraphExtender<
+      ExtendableUndirGraphExtender<
+      MappableUndirGraphExtender<
+      IterableUndirGraphExtender<
+      AlterableUndirGraphExtender<
+      UndirGraphExtender<
+      NewEdgeSetAdaptorBase<_Graph> > > > > > > > Parent;
+    
+
+    typedef typename Parent::Node Node;
+    typedef typename Parent::Edge Edge;
+    typedef typename Parent::UndirEdge UndirEdge;
+
+  private:
+
+    virtual void _clear() {
+      Parent::edges.clear();
+      Parent::first_edge = -1;
+      Parent::first_free_edge = -1;
+      Parent::getNotifier(Edge()).clear();
+      Parent::getNotifier(Node()).clear();
+    }
+
+    virtual void _add(const Node& node) {
+      Parent::getNotifier(Node()).add(node);
+    }
+
+    virtual void _erase(const Node& node) {
+      Edge edge;
+      Parent::firstOut(edge, node);
+      while (edge != INVALID) {
+	Parent::erase(edge);
+	Parent::firstOut(edge, node);
+      }
+
+      Parent::firstIn(edge, node);
+      while (edge != INVALID) {
+	Parent::erase(edge);
+	Parent::firstIn(edge, node);
+      }
+      
+      Parent::getNotifier(Node()).erase(node);
+    }
+
+    typedef typename Parent::NodesImpl NodesImpl;
+
+    NodesImpl nodes;
+    
+  public:
+
+
+    /// \brief Constructor of the adaptor.
+    /// 
+    /// Constructor of the adaptor.
+    NewUndirEdgeSetAdaptor(const _Graph& _graph) : nodes(*this, _graph) {
+      Parent::initalize(_graph, nodes);
+    }
+
+    void clear() {
       Parent::getNotifier(Edge()).clear();      
+      Parent::getNotifier(UndirEdge()).clear();      
+
+      Parent::edges.clear();
+      Parent::first_edge = -1;
+      Parent::first_free_edge = -1;
     }
     
Index: lemon/graph_utils.h
===================================================================
--- lemon/graph_utils.h	(revision 1536)
+++ lemon/graph_utils.h	(revision 1538)
@@ -740,4 +740,6 @@
     }
 
+  public:
+
     /// \brief Gives back the \e descriptor of the item.
     ///
