Index: src/work/marci/graph_concept.h
===================================================================
--- src/work/marci/graph_concept.h	(revision 333)
+++ src/work/marci/graph_concept.h	(revision 334)
@@ -110,53 +110,4 @@
     };
     
-    /// This iterator goes trough the outgoing edges of a node.
-
-    /// This iterator goes trough the \e outgoing edges of a certain node
-    /// of a graph.
-    /// Its usage is quite simple, for example you can count the number
-    /// of outgoing edges of a node \c n
-    /// in graph \c G of type \c Graph as follows.
-    /// \code
-    ///int count=0;
-    ///for(Graph::OutEdgeIt e(G,n);G.valid(e);G.next(e)) count++;
-    /// \endcode
-    
-    class OutEdgeIt : public Edge {
-    public:
-      /// @warning The default constructor sets the iterator
-      /// to an undefined value.
-      OutEdgeIt() {}
-      /// Initialize the iterator to be invalid
-      OutEdgeIt(Invalid) {}
-      /// This constructor sets the iterator to first outgoing edge.
-    
-      /// This constructor set the iterator to the first outgoing edge of
-      /// node
-      ///@param n the node
-      ///@param G the graph
-      OutEdgeIt(const GraphSkeleturo & G, Node n) {}
-    };
-
-    /// This iterator goes trough the incoming edges of a node.
-
-    /// This iterator goes trough the \e incoming edges of a certain node
-    /// of a graph.
-    /// Its usage is quite simple, for example you can count the number
-    /// of outgoing edges of a node \c n
-    /// in graph \c G of type \c Graph as follows.
-    /// \code
-    ///int count=0;
-    ///for(Graph::InEdgeIt e(G,n);G.valid(e);G.next(e)) count++;
-    /// \endcode
-
-    class InEdgeIt : public Edge {
-    public:
-      /// @warning The default constructor sets the iterator
-      /// to an undefined value.
-      InEdgeIt() {}
-      /// Initialize the iterator to be invalid
-      InEdgeIt(Invalid) {}
-      InEdgeIt(const GraphSkeleturo &, Node) {}    
-    };
     //  class SymEdgeIt : public Edge {};
 
@@ -365,4 +316,77 @@
   };
 
+  /// An empty out-edge-iterable graph class.
+  
+  /// An empty graph class which provides a function to 
+  /// iterate on out-edges of any node.
+  class OutEdgeIterableGraphSkeleturo : public GraphSkeleturo
+  {
+  public:
+
+    /// This iterator goes trough the outgoing edges of a node.
+
+    /// This iterator goes trough the \e outgoing edges of a certain node
+    /// of a graph.
+    /// Its usage is quite simple, for example you can count the number
+    /// of outgoing edges of a node \c n
+    /// in graph \c G of type \c Graph as follows.
+    /// \code
+    ///int count=0;
+    ///for(Graph::OutEdgeIt e(G,n); G.valid(e); G.next(e)) ++count;
+    /// \endcode
+    class OutEdgeIt : public Edge {
+    public:
+      /// @warning The default constructor sets the iterator
+      /// to an undefined value.
+      OutEdgeIt() {}
+      /// Initialize the iterator to be invalid
+      OutEdgeIt(Invalid) {}
+      /// This constructor sets the iterator to first outgoing edge.
+    
+      /// This constructor set the iterator to the first outgoing edge of
+      /// node
+      ///@param n the node
+      ///@param G the graph
+      OutEdgeIt(const GraphSkeleturo & G, Node n) {}
+    };
+  };
+
+  /// An empty in-edge-iterable graph class.
+  
+  /// An empty graph class which provides a function to 
+  /// iterate on in-edges of any node.
+  class InEdgeIterableGraphSkeleturo : public GraphSkeleturo
+  {
+  public:
+
+    /// This iterator goes trough the incoming edges of a node.
+
+    /// This iterator goes trough the \e incoming edges of a certain node
+    /// of a graph.
+    /// Its usage is quite simple, for example you can count the number
+    /// of incoming edges of a node \c n
+    /// in graph \c G of type \c Graph as follows.
+    /// \code
+    ///int count=0;
+    ///for(Graph::InEdgeIt e(G,n); G.valid(e); G.next(e)) ++count;
+    /// \endcode
+    class InEdgeIt : public Edge {
+    public:
+      /// @warning The default constructor sets the iterator
+      /// to an undefined value.
+      InEdgeIt() {}
+      /// Initialize the iterator to be invalid
+      InEdgeIt(Invalid) {}
+      /// This constructor sets the iterator to first incomig edge.
+    
+      /// This constructor set the iterator to the first incomig edge of
+      /// node
+      ///@param n the node
+      ///@param G the graph
+      InEdgeIt(const GraphSkeleturo & G, Node n) {}
+    };
+  };
+
+
   /// An empty node-eraseable graph class.
   
