--- include/investigator.h.orig	2013-06-04 14:33:44.000000000 +0200
+++ include/investigator.h	2013-06-04 14:34:16.000000000 +0200
@@ -69,6 +69,8 @@
     /// \retval true  There are unvisited arcs in the incidence list of v
     virtual bool Active(TNode v) const throw(ERRange) = 0;
 
+    virtual ~investigator() throw() {}
+
 };
 
 /// @}
--- include/mixedGraph.h.orig	2013-06-04 14:34:21.000000000 +0200
+++ include/mixedGraph.h	2013-06-04 14:37:20.000000000 +0200
@@ -79,6 +79,8 @@
 
     lineGraph(abstractMixedGraph& G,TOption = LG_DIRECTED) throw(ERRejected);
 
+    ~lineGraph() throw() {};
+
 };
 
 /// \brief  Subgraph of a given mixed graph induced by a specified node or arc set
@@ -96,6 +98,7 @@
     inducedSubgraph(abstractMixedGraph&,const indexSet<TNode>&,
         const indexSet<TArc>&,const TOption = OPT_PARALLELS)
         throw(ERRejected);
+    ~inducedSubgraph() throw() {}
 
 };
 
@@ -110,6 +113,7 @@
 public:
 
     colourContraction(abstractMixedGraph&,const TOption = 0) throw();
+    ~colourContraction () throw() {}
 
 };
 
@@ -125,6 +129,7 @@
 
     explicitSurfaceGraph(abstractMixedGraph&,nestedFamily<TNode>&,
             TFloat*,TArc*) throw();
+    ~explicitSurfaceGraph () throw() {}
 
 };
 
@@ -136,6 +141,7 @@
 public:
 
     explicitSubdivision(abstractMixedGraph&,const TOption = 0) throw();
+    ~explicitSubdivision () throw() {}
 
 };
 
--- include/sparseGraph.h.orig	2013-06-04 14:37:25.000000000 +0200
+++ include/sparseGraph.h	2013-06-04 14:43:39.000000000 +0200
@@ -77,6 +77,7 @@
 public:
 
     complementaryGraph(abstractMixedGraph& G,TOption = 0) throw(ERRejected);
+    ~complementaryGraph() throw() {}
 
 };
 
@@ -96,6 +97,7 @@
 public:
 
     planarLineGraph(abstractMixedGraph& G,TOption = 0) throw(ERRejected);
+    ~planarLineGraph() throw() {}
 
 };
 
@@ -112,6 +114,7 @@
 public:
 
     vertexTruncation(abstractMixedGraph& _G,TOption = 0) throw(ERRejected);
+    ~vertexTruncation() throw() {}
 
 };
 
@@ -135,6 +138,7 @@
     };
 
     facetSeparation(abstractMixedGraph& G,TOptRotation mode = ROT_NONE) throw(ERRejected);
+    ~facetSeparation() throw() {}
 
 };
 
@@ -151,6 +155,7 @@
 public:
 
     dualGraph(abstractMixedGraph& G,TOption = 0) throw(ERRejected);
+    ~dualGraph() throw() {}
 
 };
 
@@ -170,6 +175,7 @@
 public:
 
     spreadOutRegular(abstractMixedGraph& G,TOption = 0) throw(ERRejected);
+    ~spreadOutRegular() throw() {}
 
 };
 
@@ -208,6 +214,8 @@
     /// \param _CT  The controller to handle this object
     mycielskianGraph(unsigned k,goblinController& _CT = goblinDefaultContext) throw(ERRejected);
 
+    ~mycielskianGraph() throw() {}
+
 };
 
 /// @}
@@ -256,6 +264,7 @@
 
     triangularGraph(TNode cardinality,
         goblinController& _CT = goblinDefaultContext) throw();
+    ~triangularGraph() throw() {}
 
 };
 
@@ -300,6 +309,8 @@
         TNode minimumIntersection,TNode maximumIntersection,
         goblinController& _CT = goblinDefaultContext) throw();
 
+    ~intersectionGraph() throw() {}
+
 };
 
 
@@ -311,6 +322,7 @@
 
     sierpinskiTriangle(TNode depth,
         goblinController& _CT = goblinDefaultContext) throw();
+    ~sierpinskiTriangle() throw() {}
 };
 
 
@@ -333,6 +345,7 @@
     /// \param _CT    The controller object to manage the created graph
     openGrid(TNode _k,TNode _l,TOptGrid shape,
         goblinController& _CT = goblinDefaultContext) throw(ERRejected);
+    ~openGrid() throw() {}
 
 };
 
@@ -358,6 +371,8 @@
     polarGrid(TNode _k,TNode _l,TNode _p,TOptPolar facets,TOptPolar dim,
         goblinController& _CT = goblinDefaultContext) throw(ERRejected);
 
+    ~polarGrid() throw() {}
+
 };
 
 
@@ -456,6 +471,8 @@
     toroidalGrid(unsigned short hSkew,unsigned short vSize,short vSkew,unsigned short hSize,
         TOptTorus facets,goblinController& _CT = goblinDefaultContext) throw(ERRejected);
 
+    ~toroidalGrid() throw() {}
+
 };
 
 
@@ -467,6 +484,8 @@
 
     moebiusLadder(TNode _k,goblinController& _CT = goblinDefaultContext) throw(ERRejected);
 
+    ~moebiusLadder() throw() {}
+
 };
 
 
@@ -508,6 +527,8 @@
     /// - <code>generalizedPetersen(10,3)</code> is known as the Desargues graph.
     generalizedPetersen(TNode perimeter,TNode skew,goblinController& _CT = goblinDefaultContext) throw(ERRejected);
 
+    ~generalizedPetersen() throw() {}
+
 };
 
 
@@ -532,6 +553,8 @@
     gridCompletion(TNode dim,TOptShape shape,
         goblinController& _CT = goblinDefaultContext) throw(ERRejected);
 
+    ~gridCompletion() throw() {}
+
 };
 
 
@@ -581,6 +604,8 @@
     /// interval [randMin,..,randMax] are assumed.
     void GenerateThis(TFloat threshold,TFloat* nodeWeight,long randMin,long randMax) throw();
 
+    ~thresholdGraph() throw() {}
+
 };
 
 
@@ -601,6 +626,8 @@
     /// is generated.
     permutationGraph(TNode numNodes,TNode* map = NULL,goblinController& _CT = goblinDefaultContext) throw();
 
+    ~permutationGraph() throw() {}
+
 };
 
 
@@ -650,6 +677,8 @@
     /// intervals are specified, random intervals are generated.
     void GenerateThis(TFloat* minRange,TFloat* maxRange,TIndex valueRange) throw();
 
+    ~intervalGraph() throw() {}
+
 };
 
 /// @}
--- include/sparseBigraph.h.orig	2013-06-04 14:43:47.000000000 +0200
+++ include/sparseBigraph.h	2013-06-04 14:44:05.000000000 +0200
@@ -80,6 +80,8 @@
     inducedBigraph(abstractMixedGraph&,const indexSet<TNode>&,
         const indexSet<TNode>&,const TOption = OPT_PARALLELS) throw(ERRejected);
 
+    ~inducedBigraph() throw() {}
+
 };
 
 /// @}
--- include/sparseDigraph.h.orig	2013-06-04 14:44:29.000000000 +0200
+++ include/sparseDigraph.h	2013-06-04 14:46:58.000000000 +0200
@@ -116,6 +116,8 @@
 
     inducedOrientation(abstractMixedGraph &G,TOption options = 0) throw(ERRejected);
 
+    ~inducedOrientation() throw() {}
+
 };
 
 
@@ -151,6 +153,8 @@
     /// non-adjacent.
     void MapEdgeCut() throw();
 
+    ~nodeSplitting() throw() {}
+
 };
 
 /// @}
@@ -168,6 +172,8 @@
     regularTree(TNode _depth,TNode deg,TNode _n = NoNode,
         goblinController& thisContext = goblinDefaultContext) throw(ERRejected);
 
+    ~regularTree() throw() {}
+
 };
 
 
@@ -194,6 +200,8 @@
     /// \param thisContext  The context to which this graph object is attached
     butterflyGraph(TNode length,TNode base=2,goblinController& thisContext = goblinDefaultContext) throw();
 
+    ~butterflyGraph() throw() {}
+
 };
 
 
@@ -215,6 +223,8 @@
     /// \param thisContext  The context to which this graph object is attached
     cyclicButterfly(TNode length,TNode base=2,goblinController& thisContext = goblinDefaultContext) throw();
 
+    ~cyclicButterfly() throw() {}
+
 };
 
 /// @}
@@ -239,6 +249,8 @@
 
     directedDual(abstractMixedGraph &G,TOption options = 0) throw(ERRejected);
 
+    ~directedDual() throw() {}
+
 };
 
 /// @}
@@ -258,6 +270,8 @@
 
     transitiveClosure(abstractDiGraph &G,TOption options = 0) throw(ERRejected);
 
+    ~transitiveClosure() throw() {}
+
 };
 
 
@@ -272,6 +286,8 @@
 
     intransitiveReduction(abstractDiGraph &G,TOption options = 0) throw(ERRejected);
 
+    ~intransitiveReduction() throw() {}
+
 };
 
 /// @}
--- include/balancedDigraph.h.orig	2013-06-04 14:47:05.000000000 +0200
+++ include/balancedDigraph.h	2013-06-04 14:47:25.000000000 +0200
@@ -72,6 +72,8 @@
     TNode DefaultSourceNode() const throw() {return n-1;};
     TNode DefaultTargetNode() const throw() {return n-2;};
 
+    ~splitGraph() throw() {}
+
 };
 
 #endif
--- include/denseGraph.h.orig	2013-06-04 14:47:31.000000000 +0200
+++ include/denseGraph.h	2013-06-04 14:47:50.000000000 +0200
@@ -95,6 +95,8 @@
 
     metricGraph(abstractGraph &G) throw(ERRejected);
 
+    ~metricGraph() throw() {}
+
 };
 
 /// @}
--- include/branchScheme.h.orig	2013-06-04 14:48:23.000000000 +0200
+++ include/branchScheme.h	2013-06-04 14:48:43.000000000 +0200
@@ -131,7 +131,9 @@
 {
 public:
 
-    branchTree(goblinController &) throw();
+    branchTree(goblinController &) throw(); 
+
+    ~branchTree() throw() {}
 
 };
 
--- include/abstractSubgraph.h.orig	2013-06-04 14:48:50.000000000 +0200
+++ include/abstractSubgraph.h	2013-06-04 14:49:12.000000000 +0200
@@ -102,7 +102,9 @@
     virtual TArc    M() const throw() = 0;     //!<returns the number of edges
     virtual unsigned long   Allocated() const throw();
 
-    virtual TArc    Reverse(TArc a) const throw(ERRange);
+    virtual TArc    Reverse(TArc a) const throw(ERRange); 
+
+    ~abstractSubgraph() throw() {}
 
 };
 
--- include/denseDigraph.h.orig	2013-06-04 14:51:07.000000000 +0200
+++ include/denseDigraph.h	2013-06-04 14:51:30.000000000 +0200
@@ -92,6 +92,8 @@
 
     distanceGraph(abstractMixedGraph &G) throw(ERRejected);
 
+    ~distanceGraph() throw() {}
+
 };
 
 /// @}
--- include/goblinQueue.h.orig	2013-06-05 09:19:40.000000000 +0200
+++ include/goblinQueue.h	2013-06-05 09:22:11.000000000 +0200
@@ -66,6 +66,8 @@
     /// \return   The queue cardinality
     virtual TItem  Cardinality() const throw() = 0;
 
+    ~goblinQueue() throw() {}
+
 };
 
 /// @}
--- include/movingLineModel.h.orig	2013-06-05 09:41:41.000000000 +0200
+++ include/movingLineModel.h	2013-06-05 09:42:12.000000000 +0200
@@ -66,6 +66,8 @@
     /// \brief  Modify the drawing of the original graph in terms of a closed walk in the stripe dissection model
     void PerformBlockMove() throw();
 
+    ~movingLineModel() throw() {}
+
 };
 
 /// @}
--- include/stripeDissectionModel.h.orig	2013-06-05 09:42:36.000000000 +0200
+++ include/stripeDissectionModel.h	2013-06-05 09:42:48.000000000 +0200
@@ -51,6 +51,8 @@
     /// \brief  Update the drawing of the original graph in terms of an st-flow of the stripe dissection model
     void UpdateDrawing() throw();
 
+    ~stripeDissectionModel() throw() {}
+
 };
 
 /// @}