diff --git a/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx b/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx
index 6bd9a8a90db42472419f808f0d842e103fa1129c..b53746465f8198bcc403b5b2677c12d205327192 100644
--- a/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx
+++ b/Applications/CartographicDBValidation/otbComputePolylineFeatureFromImage.cxx
@@ -73,27 +73,18 @@ public:
 ;
 
 private:
-  ComputePolylineFeatureFromImage()
+  void DoInit()
   {
     SetName("ComputePolylineFeatureFromImage");
-    SetDescription(
-                   "Compute a polyline feature descriptors from an input image which are part of the polyline pixels that verify the FeatureExpression");
+    SetDescription("Compute a polyline feature descriptors from an input image which are part of the polyline pixels that verify the FeatureExpression");
 
     SetDocName("Compute Polyline Feature From Image Application");
     SetDocLongDescription("This application computes a polyline feature descriptors from an input image which are part of the polyline pixels that verify the FeatureExpression.");
     SetDocLimitations("Since it do not rely on streaming process, take care of the size of input image before launching application.");
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso(" ");
-   
     AddDocTag(Tags::FeatureExtraction);
-  }
 
-  virtual ~ComputePolylineFeatureFromImage()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
     SetParameterDescription("in", "An image from which to compute description.");
 
diff --git a/Applications/CartographicDBValidation/otbDSFuzzyModelEstimation.cxx b/Applications/CartographicDBValidation/otbDSFuzzyModelEstimation.cxx
index 968f9856910b67fb4571dd839d25a4aaf53a684e..aacd52a5348e1e9b99956944da69996cdde7d364 100644
--- a/Applications/CartographicDBValidation/otbDSFuzzyModelEstimation.cxx
+++ b/Applications/CartographicDBValidation/otbDSFuzzyModelEstimation.cxx
@@ -115,9 +115,7 @@ public:
   itkTypeMacro(DSFuzzyModelEstimation, otb::Application);
 
 private:
-
-
-  DSFuzzyModelEstimation()
+  void DoInit()
   {
     SetName("DSFuzzyModelEstimation");
     SetDescription("Estimate feature fuzzy model parameters using 2 vector data (ground truth samples and wrong samples).");
@@ -129,15 +127,6 @@ private:
     SetDocSeeAlso(" ");
   
     AddDocTag(Tags::FeatureExtraction);
-  }
-
-
-  virtual ~DSFuzzyModelEstimation()
-  {
-  }
-
-  void DoInit()
-  {
 
     AddParameter(ParameterType_InputVectorData, "psin", "Input Positive Vector Data");
     SetParameterDescription("psin", "Ground truth vector data for positive samples");
diff --git a/Applications/CartographicDBValidation/otbVectorDataDSValidation.cxx b/Applications/CartographicDBValidation/otbVectorDataDSValidation.cxx
index 9dd8e09e71b0164198fd325f829a07f2d5856777..3be57e06d51ff935d2599f239b1e2911a2c92c2a 100644
--- a/Applications/CartographicDBValidation/otbVectorDataDSValidation.cxx
+++ b/Applications/CartographicDBValidation/otbVectorDataDSValidation.cxx
@@ -58,9 +58,7 @@ public:
   itkTypeMacro(VectorDataDSValidation, otb::Application);
 
 private:
-
-
-  VectorDataDSValidation()
+  void DoInit()
   {
     SetName("VectorDataDSValidation");
     SetDescription("Vector data validation based on the fusion of features using Dempster-Shafer evidence theory framework.");
@@ -72,15 +70,8 @@ private:
     SetDocSeeAlso(" ");
    
     AddDocTag(Tags::FeatureExtraction);
-  }
 
 
-  virtual ~VectorDataDSValidation()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputVectorData, "in", "Input Vector Data");
     SetParameterDescription("in", "Input vector data for validation");
 
diff --git a/Applications/ChangeDetection/otbMultivariateAlterationDetector.cxx b/Applications/ChangeDetection/otbMultivariateAlterationDetector.cxx
index dbe0e46d72cca50579703cfc108814e1b3c1d96f..7a5e9174db1ce074eec28dcf720b4e20f2fe7f01 100644
--- a/Applications/ChangeDetection/otbMultivariateAlterationDetector.cxx
+++ b/Applications/ChangeDetection/otbMultivariateAlterationDetector.cxx
@@ -40,7 +40,7 @@ public:
   itkTypeMacro(MultivariateAlterationDetector, otb::Wrapper::Application);
 
 private:
-  MultivariateAlterationDetector()
+  void DoInit()
   {
     SetName("MultivariateAlterationDetector");
     SetDescription("Multivariate Alteration Detector");
@@ -53,14 +53,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::FeatureExtraction);
-  }
 
-  virtual ~MultivariateAlterationDetector()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in1", "Input Image 1");
     AddParameter(ParameterType_InputImage,  "in2", "Input Image 2");
     AddParameter(ParameterType_OutputImage, "out", "Change Map");
diff --git a/Applications/Classification/otbComputeImagesStatistics.cxx b/Applications/Classification/otbComputeImagesStatistics.cxx
index 4fc25ecd2fe3dc1e1d55b9f3cae8b201551066a6..5ef7a048264aae7c90cb98e5823a726dce8062e1 100644
--- a/Applications/Classification/otbComputeImagesStatistics.cxx
+++ b/Applications/Classification/otbComputeImagesStatistics.cxx
@@ -41,7 +41,7 @@ public:
   itkTypeMacro(ComputeImagesStatistics, otb::Application);
 
 private:
-  ComputeImagesStatistics()
+  void DoInit()
   {
     SetName("ComputeImagesStatistics");
     SetDescription("Computes global mean and standard deviation for each band from a set of images and optionally saves the results in an XML file.");
@@ -53,14 +53,7 @@ private:
  
     AddDocTag(Tags::Learning);
     AddDocTag(Tags::Analysis);
-  }
 
-  virtual ~ComputeImagesStatistics()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImageList, "il", "Input images");
     SetParameterDescription( "il", "List of input images filenames." );
 
diff --git a/Applications/Classification/otbImageSVMClassifier.cxx b/Applications/Classification/otbImageSVMClassifier.cxx
index c7a62b59f66ff5a74cc007ed5457d86cd6deb4b0..a2705be995de03cc03ccf5d058b2f4524f2a296e 100644
--- a/Applications/Classification/otbImageSVMClassifier.cxx
+++ b/Applications/Classification/otbImageSVMClassifier.cxx
@@ -56,7 +56,7 @@ public:
   typedef ModelType::Pointer                                                            ModelPointerType;
 
 private:
-  ImageSVMClassifier()
+  void DoInit()
   {
     SetName("ImageSVMClassifier");
     SetDescription("Performs a SVM classification of the input image according to a SVM model file.");
@@ -70,14 +70,7 @@ private:
     SetDocSeeAlso("TrainSVMImagesClassifier, ValidateSVMImagesClassifier, ComputeImagesStatistics");
  
     AddDocTag(Tags::Learning);
-  }
 
-  virtual ~ImageSVMClassifier()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in",  "Input Image");
     SetParameterDescription( "in", "The input Image to classify.");
 
diff --git a/Applications/Classification/otbKMeansClassification.cxx b/Applications/Classification/otbKMeansClassification.cxx
index 38e6825b4231d4412e87a6e1ef0f2aafa8eecc8b..cc70215343c165bf3c097730789df7ba583c7a07 100644
--- a/Applications/Classification/otbKMeansClassification.cxx
+++ b/Applications/Classification/otbKMeansClassification.cxx
@@ -169,7 +169,7 @@ public:
   itkTypeMacro(KMeansClassification, otb::Application);
 
 private:
-  KMeansClassification()
+  void DoInit()
   {
     SetName("KMeansClassification");
     SetDescription("Unsupervised KMeans image classification");
@@ -179,36 +179,25 @@ private:
     SetDocLimitations("None");
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso(" ");
-  
-    // Build lut map
-
-      m_LutMap["Red"]=ColorMapFilterType::Red;
-      m_LutMap["Green"]=ColorMapFilterType::Green;
-      m_LutMap["Blue"]=ColorMapFilterType::Blue;
-      m_LutMap["Grey"]=ColorMapFilterType::Grey;
-      m_LutMap["Hot"]=ColorMapFilterType::Hot;
-      m_LutMap["Cool"]=ColorMapFilterType::Cool;
-      m_LutMap["Spring"]=ColorMapFilterType::Spring;
-      m_LutMap["Summer"]=ColorMapFilterType::Summer;
-      m_LutMap["Autumn"]=ColorMapFilterType::Autumn;
-      m_LutMap["Winter"]=ColorMapFilterType::Winter;
-      m_LutMap["Copper"]=ColorMapFilterType::Copper;
-      m_LutMap["Jet"]=ColorMapFilterType::Jet;
-      m_LutMap["HSV"]=ColorMapFilterType::HSV;
-      m_LutMap["OverUnder"]=ColorMapFilterType::OverUnder;
 
+    // Build lut map
+    m_LutMap["Red"]       = ColorMapFilterType::Red;
+    m_LutMap["Green"]     = ColorMapFilterType::Green;
+    m_LutMap["Blue"]      = ColorMapFilterType::Blue;
+    m_LutMap["Grey"]      = ColorMapFilterType::Grey;
+    m_LutMap["Hot"]       = ColorMapFilterType::Hot;
+    m_LutMap["Cool"]      = ColorMapFilterType::Cool;
+    m_LutMap["Spring"]    = ColorMapFilterType::Spring;
+    m_LutMap["Summer"]    = ColorMapFilterType::Summer;
+    m_LutMap["Autumn"]    = ColorMapFilterType::Autumn;
+    m_LutMap["Winter"]    = ColorMapFilterType::Winter;
+    m_LutMap["Copper"]    = ColorMapFilterType::Copper;
+    m_LutMap["Jet"]       = ColorMapFilterType::Jet;
+    m_LutMap["HSV"]       = ColorMapFilterType::HSV;
+    m_LutMap["OverUnder"] = ColorMapFilterType::OverUnder;
 
     AddDocTag(Tags::Segmentation);
     AddDocTag(Tags::Learning);
-  }
-
-  virtual ~KMeansClassification()
-  {
-  }
-
-  void DoInit()
-  {
-
     AddParameter(ParameterType_InputImage, "in", "Input Image");
     SetParameterDescription("in", "Input image filename.");
     AddParameter(ParameterType_OutputImage, "out", "Output Image");
diff --git a/Applications/Classification/otbSOMClassification.cxx b/Applications/Classification/otbSOMClassification.cxx
index 8bd83ed0b89cd141d56fbd8582fbef4585e89936..50ecbd706304a6aa305e433a2545b8749dc3f0f3 100644
--- a/Applications/Classification/otbSOMClassification.cxx
+++ b/Applications/Classification/otbSOMClassification.cxx
@@ -68,7 +68,7 @@ public:
 
   
 private:
-  SOMClassification()
+  void DoInit()
   {
     SetName("SOMClassification");
     SetDescription("SOM image classification.");
@@ -82,14 +82,7 @@ private:
 
     AddDocTag(Tags::Segmentation);
     AddDocTag(Tags::Learning);
-  }
 
-  virtual ~SOMClassification()
-  {
-  }
-
-  void DoInit()
-    {
     AddParameter(ParameterType_InputImage,  "in",   "InputImage");
     SetParameterDescription("in", "Input image.");
     
@@ -180,12 +173,12 @@ private:
     SetDocExampleParameterValue("bi", "1.0");
     SetDocExampleParameterValue("bf", "0.1");
     SetDocExampleParameterValue("iv", "0");
-    }
+  }
   
   void DoUpdateParameters()
-    {
+  {
     // Nothing to do
-    }
+  }
   
   void DoExecute()
   {
diff --git a/Applications/Classification/otbTrainSVMImagesClassifier.cxx b/Applications/Classification/otbTrainSVMImagesClassifier.cxx
index 8c8087d9e145b73904b87fe1c0c1a93329dc31dd..388340ebb946c6bbd6e41d6be4b3f01e519f4999 100644
--- a/Applications/Classification/otbTrainSVMImagesClassifier.cxx
+++ b/Applications/Classification/otbTrainSVMImagesClassifier.cxx
@@ -124,7 +124,7 @@ public:
   typedef otb::VectorDataIntoImageProjectionFilter<VectorDataType, VectorImageType> VectorDataReprojectionType;
 
 private:
-  TrainSVMImagesClassifier()
+  void DoInit()
   {
     SetName("TrainSVMImagesClassifier");
     SetDescription("Train a SVM classifier from multiple pairs of images and training vector data.");
@@ -138,14 +138,6 @@ private:
  
     AddDocTag(Tags::Learning);
 
-  }
-
-  virtual ~TrainSVMImagesClassifier()
-  {
-  }
-
-  void DoInit()
-  {
     //Group IO
     AddParameter(ParameterType_Group,"io","Input and output data");
     SetParameterDescription("io","This group of parameters allows to set input and output data.");
diff --git a/Applications/Classification/otbValidateSVMImagesClassifier.cxx b/Applications/Classification/otbValidateSVMImagesClassifier.cxx
index 27d9b5b992257b3e8bcd7026c0a4e0895c3a9707..c957411092c4aa5f326ec5451c9e4fcb4be77d9e 100644
--- a/Applications/Classification/otbValidateSVMImagesClassifier.cxx
+++ b/Applications/Classification/otbValidateSVMImagesClassifier.cxx
@@ -115,7 +115,7 @@ public:
  typedef otb::VectorDataIntoImageProjectionFilter<VectorDataType, VectorImageType> VectorDataReprojectionType;
 
 private:
-  ValidateSVMImagesClassifier()
+  void DoInit()
   {
     SetName("ValidateSVMImagesClassifier");
     SetDescription("Estimate the performance of the SVM model with a new set of validation samples and another image.");
@@ -128,14 +128,6 @@ private:
  
     AddDocTag(Tags::Learning);
 
-  }
-
-  virtual ~ValidateSVMImagesClassifier()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImageList, "il", "Input Image List");
     SetParameterDescription("il", "Input image list filename.");
     AddParameter(ParameterType_InputVectorDataList, "vd", "Vector Data List");
diff --git a/Applications/DimensionnalityReduction/otbMaximumAutocorrelationFactor.cxx b/Applications/DimensionnalityReduction/otbMaximumAutocorrelationFactor.cxx
index afb3b8987dc6315eef5886c1d9ea5a474482ec70..21d8c390e3c6d75b12810d8e422861314e718b82 100644
--- a/Applications/DimensionnalityReduction/otbMaximumAutocorrelationFactor.cxx
+++ b/Applications/DimensionnalityReduction/otbMaximumAutocorrelationFactor.cxx
@@ -40,7 +40,7 @@ public:
   itkTypeMacro(MaximumAutocorrelationFactor, otb::Wrapper::Application);
 
 private:
-  MaximumAutocorrelationFactor()
+  void DoInit()
   {
     SetName("MaximumAutocorrelationFactor");
     SetDescription("Perform a Maximum Auto-correlation Factor (MAF) decomposition of the input image.");
@@ -53,14 +53,6 @@ private:
     AddDocTag(Tags::DimensionReduction);
     AddDocTag(Tags::Filter);
 
-  }
-
-  virtual ~MaximumAutocorrelationFactor()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in", "Input Image");
     SetParameterDescription("in","The input image to apply MAF decomposition on.");
     AddParameter(ParameterType_OutputImage, "out", "MAF output");
diff --git a/Applications/DisparityMap/otbFineRegistration.cxx b/Applications/DisparityMap/otbFineRegistration.cxx
index 6c0daba904de8470e9150133c5286b98a8394ed3..8c02e785102d0bc881db0f535eb11a0d268046e8 100644
--- a/Applications/DisparityMap/otbFineRegistration.cxx
+++ b/Applications/DisparityMap/otbFineRegistration.cxx
@@ -111,8 +111,8 @@ public:
   typedef otb::ImageFileReader<VectorImageType>         InternalReaderType;
 
 private:
-  FineRegistration()
-    {
+  void DoInit()
+  {
     SetName("FineRegistration");
     SetDescription("Estimate disparity map between two images.");
 
@@ -123,14 +123,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Stereo);
-    }
-
-  virtual ~FineRegistration()
-  {
-  }
 
-  void DoInit()
-    {
     AddParameter(ParameterType_InputImage,  "ref",   "Reference Image");
     SetParameterDescription( "ref", "The reference image." );
     
@@ -232,15 +225,15 @@ private:
     SetDocExampleParameterValue("ery", "2");
     SetDocExampleParameterValue("mrx", "3");
     SetDocExampleParameterValue("mry", "3");
-    }
+  }
 
   void DoUpdateParameters()
-    {
+  {
     // Nothing to do
-    }
+  }
 
   void DoExecute()
-    {
+  {
     FloatVectorImageType::Pointer refImage = GetParameterImage("ref"); // fixed
     FloatVectorImageType::Pointer secImage = GetParameterImage("sec"); // moved
     
@@ -466,7 +459,7 @@ private:
       otbAppLogINFO("Doing warping : OFF");
       }
     
-    }
+  }
 
   IntensityFilterType::Pointer m_IntensityRef;
   IntensityFilterType::Pointer m_IntensitySec;
diff --git a/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx b/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx
index e6bf56a33e229827294269ecdcd9da2accd9d8cf..c29b5603b809ea19529a603a3d4e4e0b7f800814 100644
--- a/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx
+++ b/Applications/DisparityMap/otbStereoSensorModelToElevationMap.cxx
@@ -61,7 +61,7 @@ public:
   
 
 private:
-  StereoSensorModelToElevationMap()
+  void DoInit()
   {
     SetName("StereoSensorModelToElevationMap");
     SetDescription("Convert a stereo sensor model to elevation map.");
@@ -75,14 +75,7 @@ private:
  
     AddDocTag(Tags::Manip);
     AddDocTag(Tags::Stereo);
-  }
 
-  virtual ~StereoSensorModelToElevationMap()
-  {
-  }
-
-  void DoInit()
-  {
     // Mandatory parameters
     AddParameter(ParameterType_InputImage,  "ref",   "Reference");
     SetParameterDescription("ref", "The reference image.");
diff --git a/Applications/FeatureExtraction/otbLineSegmentDetection.cxx b/Applications/FeatureExtraction/otbLineSegmentDetection.cxx
index b67e9f0b9502f4fe2a194344f059bc6da0027cec..82396a495cf517593756e97f942356c2c3c49fb5 100644
--- a/Applications/FeatureExtraction/otbLineSegmentDetection.cxx
+++ b/Applications/FeatureExtraction/otbLineSegmentDetection.cxx
@@ -50,7 +50,7 @@ public:
   itkTypeMacro(LineSegmentDetection, otb::Wrapper::Application);
 
 private:
-  LineSegmentDetection()
+  void DoInit()
   {
     SetName("LineSegmentDetection");
     SetDescription("Detect line segments in raster");
@@ -63,17 +63,9 @@ private:
     SetDocSeeAlso("On Line demonstration of the LSD algorithm is available here: http://www.ipol.im/pub/algo/gjmr_line_segment_detector/\n");
 
     AddDocTag(Tags::FeatureExtraction);
-  }
-
-  virtual ~LineSegmentDetection()
-  {
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
 
-
     AddParameter(ParameterType_OutputVectorData, "out", "Output Detected lines");
     SetParameterDescription("out"," Output detected line segments (vector data).");
     AddParameter(ParameterType_Directory, "dem", "Digital Elevation Model directory");
diff --git a/Applications/Hyperspectral/otbHyperspectralUnmixing.cxx b/Applications/Hyperspectral/otbHyperspectralUnmixing.cxx
index 840b7f2bb5a572e644c38289bd0c6418fe30235e..da7fe46342db7a91e0e2cd880afa3ed8671c6dfe 100644
--- a/Applications/Hyperspectral/otbHyperspectralUnmixing.cxx
+++ b/Applications/Hyperspectral/otbHyperspectralUnmixing.cxx
@@ -99,8 +99,7 @@ public:
   itkTypeMacro(HyperspectralUnmixing, otb::Application);
 
 private:
-
-  HyperspectralUnmixing()
+  void DoInit()
   {
     SetName("HyperspectralUnmixing");
     SetDescription("Estimate abundance maps from an hyperspectral image and a set of endmembers.");
@@ -113,14 +112,7 @@ private:
     SetDocSeeAlso("VertexComponentAnalysis");
 
     AddDocTag(Tags::Hyperspectral);
-  }
-
-  virtual ~HyperspectralUnmixing()
-  {
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image Filename");
     SetParameterDescription("in","The hyperspectral data cube to unmix");
 
diff --git a/Applications/Hyperspectral/otbVertexComponentAnalysis.cxx b/Applications/Hyperspectral/otbVertexComponentAnalysis.cxx
index 57518c900d5eac5d2fb348fe243fdfc54744bae7..adc42ab75bc5abac51094620edf6e693a9711cda 100644
--- a/Applications/Hyperspectral/otbVertexComponentAnalysis.cxx
+++ b/Applications/Hyperspectral/otbVertexComponentAnalysis.cxx
@@ -57,8 +57,7 @@ public:
   itkTypeMacro(VertexComponentAnalysis, otb::Application);
 
 private:
-
-  VertexComponentAnalysis()
+  void DoInit()
   {
     SetName("VertexComponentAnalysis");
     SetDescription("Find endmembers in hyperspectral images with Vertex Component Analysis");
@@ -73,14 +72,6 @@ private:
     AddDocTag(Tags::Hyperspectral);
     AddDocTag(Tags::DimensionReduction);
 
-  }
-
-  virtual ~VertexComponentAnalysis()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     SetParameterDescription("in","Input hyperspectral data cube");
 
diff --git a/Applications/Projections/otbBundleToPerfectSensor.cxx b/Applications/Projections/otbBundleToPerfectSensor.cxx
index be2abe5fef5e9985ffbb877c515f6775cb83c2c9..5f48608fe1acb602c6beb9ad66f1d07ab4b4649e 100644
--- a/Applications/Projections/otbBundleToPerfectSensor.cxx
+++ b/Applications/Projections/otbBundleToPerfectSensor.cxx
@@ -47,7 +47,7 @@ public:
 
 private:
 
-  BundleToPerfectSensor()
+  void DoInit()
   {
     SetName("BundleToPerfectSensor");
     SetDescription("Perform P+XS pansharpening");
@@ -62,14 +62,7 @@ private:
     AddDocTag(Tags::Geometry);
     AddDocTag(Tags::Manip);
     AddDocTag(Tags::Pansharpening);
-  }
 
-  virtual ~BundleToPerfectSensor()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,   "inp",   "Input PAN Image");
     AddParameter(ParameterType_InputImage,   "inxs",  "Input XS Image");
     AddParameter(ParameterType_Directory,    "dem",   "DEM directory");
diff --git a/Applications/Projections/otbConvertCartoToGeoPoint.cxx b/Applications/Projections/otbConvertCartoToGeoPoint.cxx
index 6ba5351e685adec9611542dc1c28da4cf49665dd..5166a3d39215e2a13b57f16e228c6cd635a233ba 100644
--- a/Applications/Projections/otbConvertCartoToGeoPoint.cxx
+++ b/Applications/Projections/otbConvertCartoToGeoPoint.cxx
@@ -57,7 +57,7 @@ public:
   itkTypeMacro(ConvertCartoToGeoPoint, otb::Application);
   
 private:
-  ConvertCartoToGeoPoint()
+  void DoInit()
   {
     SetName("ConvertCartoToGeoPoint");
     SetDescription("Convert cartographic coordinates to geographic one.");
@@ -71,14 +71,7 @@ private:
   
     AddDocTag(Tags::Coordinates);
     AddDocTag(Tags::Geometry);
-  }
 
-  virtual ~ConvertCartoToGeoPoint()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_Group, "carto", "Input cartographic coordinates");
     AddParameter(ParameterType_Float, "carto.x", "X cartographic coordinates");
     SetParameterDescription("carto.x", "X cartographic coordinates in the specified projection.");
diff --git a/Applications/Projections/otbConvertSensorToGeoPoint.cxx b/Applications/Projections/otbConvertSensorToGeoPoint.cxx
index 0013ea01a284116b8536b84a4dd4710bfe8c5cfc..e3612a8115eb6d15d2ea1815d627114b5e1b3db5 100644
--- a/Applications/Projections/otbConvertSensorToGeoPoint.cxx
+++ b/Applications/Projections/otbConvertSensorToGeoPoint.cxx
@@ -46,7 +46,8 @@ public:
   typedef itk::Point<double, 2>           PointType;
 
 private:
-  ConvertSensorToGeoPoint()
+
+  void DoInit()
   {
     SetName("ConvertSensorToGeoPoint");
     SetDescription("Convert Sensor Point To Geographic Point using a Forward Sensor Model");
@@ -59,14 +60,7 @@ private:
     SetDocSeeAlso("ConvertCartoToGeoPoint application, otbObtainUTMZoneFromGeoPoint application");
   
     AddDocTag(Tags::Geometry);
-  }
-
-  virtual ~ConvertSensorToGeoPoint()
-  {
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Sensor image");
 
     AddParameter(ParameterType_Group, "input", "Point Coordinates");
diff --git a/Applications/Projections/otbImageEnvelope.cxx b/Applications/Projections/otbImageEnvelope.cxx
index 9b6baf4deb0fa0213ca2cada869c4c149a12f2f2..eff4df5bf1653bb3b15efdb037b79a2667a7ce70 100644
--- a/Applications/Projections/otbImageEnvelope.cxx
+++ b/Applications/Projections/otbImageEnvelope.cxx
@@ -44,7 +44,7 @@ public:
       <FloatVectorImageType, VectorDataType>          EnvelopeFilterType;
 
 private:
-  ImageEnvelope()
+  void DoInit()
   {
     SetName("ImageEnvelope");
     SetDescription("Extracts an image envelope.");
@@ -57,14 +57,7 @@ private:
     SetDocSeeAlso(" ");
  
     AddDocTag(Tags::Geometry);
-  }
-
-  virtual ~ImageEnvelope()
-  {
-  }
 
-  void DoInit()
-    {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     SetParameterDescription("in", "Input image.");
     
@@ -87,15 +80,15 @@ private:
    // Doc example parameter settings
     SetDocExampleParameterValue("in", "sensor_stereo_left.tif");
     SetDocExampleParameterValue("out", "ImageEnvelope.shp");
-    }
+  }
 
   void DoUpdateParameters()
-    {
+  {
     // Nothing to be done
-    }
+  }
 
   void DoExecute()
-    {
+  {
     FloatVectorImageType::Pointer input = GetParameterImage("in");
     
     m_Envelope = EnvelopeFilterType::New();
@@ -116,7 +109,7 @@ private:
       }
     
     SetParameterOutputVectorData("out", m_Envelope->GetOutput());
-    }
+  }
 
   EnvelopeFilterType::Pointer m_Envelope;
 
diff --git a/Applications/Projections/otbObtainUTMZoneFromGeoPoint.cxx b/Applications/Projections/otbObtainUTMZoneFromGeoPoint.cxx
index aaf8ea6d94bb099a0b73b4801660e308e208f2dc..c3de7ddde66c957f37d60f7430d75b724d310c50 100644
--- a/Applications/Projections/otbObtainUTMZoneFromGeoPoint.cxx
+++ b/Applications/Projections/otbObtainUTMZoneFromGeoPoint.cxx
@@ -42,6 +42,14 @@ public:
   
 private:
   ObtainUTMZoneFromGeoPoint()
+  {
+  }
+
+  virtual ~ObtainUTMZoneFromGeoPoint()
+  {
+  }
+
+  void DoInit()
   {
     SetName("ObtainUTMZoneFromGeoPoint");
     SetDescription("UTM zone determination from a geographic point.");
@@ -54,14 +62,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Coordinates);
-  }
 
-  virtual ~ObtainUTMZoneFromGeoPoint()
-  {
-  }
-
-  void DoInit()
-    {
     AddParameter(ParameterType_Float,  "lat", "Latitude");
     SetParameterDescription("lat", "Latitude value of desired point.");
     
@@ -76,19 +77,19 @@ private:
     SetExampleComment("Obtain a UTM Zone", 0);
     SetDocExampleParameterValue("lat","10.0");
     SetDocExampleParameterValue("lon","124.0");
-    }
+  }
   
   void DoUpdateParameters()
-    {
+  {
     // Nothing to do
-    }
+  }
   
   void DoExecute()
-    {
+  {
     int utmZone = otb::Utils::GetZoneFromGeoPoint(GetParameterFloat("lon"),
                                                   GetParameterFloat("lat"));
     SetParameterInt("utm", utmZone);
-    }
+  }
   
 };
 
diff --git a/Applications/Projections/otbOrthoRectification.cxx b/Applications/Projections/otbOrthoRectification.cxx
index dc40928c3c8587c896cf8d130edb1b339e6563ff..46e76c76f707de1cbfa5932dfe133d47bd23ea53 100644
--- a/Applications/Projections/otbOrthoRectification.cxx
+++ b/Applications/Projections/otbOrthoRectification.cxx
@@ -83,7 +83,7 @@ public:
   typedef otb::BCOInterpolateImageFunction<FloatVectorImageType>   BCOInterpolationType;
 
 private:
-  OrthoRectification()
+  void DoInit()
   {
     SetName("OrthoRectification");
     std::ostringstream oss;
@@ -103,10 +103,7 @@ private:
   
     AddDocTag(Tags::Manip);
     AddDocTag(Tags::Geometry);
-  }
 
-  void DoInit()
-  {
     // Set the parameters
     AddParameter(ParameterType_Group,"io","Input and output data");
     SetParameterDescription("io","This group of parameters allows to set the input and output images.");
diff --git a/Applications/Projections/otbRigidTransformResample.cxx b/Applications/Projections/otbRigidTransformResample.cxx
index e6f9a03a4aa9480ff3052acd89e088b8b2decf3c..fd540633a15831ee1da946834a3cace84a876bed 100644
--- a/Applications/Projections/otbRigidTransformResample.cxx
+++ b/Applications/Projections/otbRigidTransformResample.cxx
@@ -45,7 +45,7 @@ public:
 
 private:
 
-  RigidTransformResample()
+  void DoInit()
   {
     SetName("RigidTransformResample");
     SetDescription("Resample an image with a rigid transform");
@@ -58,14 +58,7 @@ private:
   
     AddDocTag("Conversion");
     AddDocTag(Tags::Geometry);
-  }
 
-  virtual ~RigidTransformResample()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,   "in",   "Input image");
     AddParameter(ParameterType_OutputImage,  "out",  "Output image");
     AddParameter(ParameterType_Float,        "tx",   "The X translation (in physical units)");
diff --git a/Applications/Projections/otbSuperimpose.cxx b/Applications/Projections/otbSuperimpose.cxx
index 035e804ce8968711bb064ba938cc3b60d7b02dd6..12c86de1da254f0aa4b2a899104a0d9108b9cf65 100644
--- a/Applications/Projections/otbSuperimpose.cxx
+++ b/Applications/Projections/otbSuperimpose.cxx
@@ -48,8 +48,7 @@ public:
                                             UInt16VectorImageType>  ResamplerType;
 
 private:
-
-  Superimpose()
+  void DoInit()
   {
     SetName("Superimpose");
     SetDescription("Using available image metadata, project one image onto another one");
@@ -64,14 +63,7 @@ private:
     AddDocTag(Tags::Geometry);
     AddDocTag(Tags::Manip);
     AddDocTag("Superimposition");
-  }
-
-  virtual ~Superimpose()
-  {
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,   "inr",   "Reference input");
     AddParameter(ParameterType_InputImage,   "inm",   "The image to reproject");
     AddParameter(ParameterType_Directory,    "dem",   "DEM directory");
diff --git a/Applications/RadiometricIndices/otbRadiometricVegetationIndices.cxx b/Applications/RadiometricIndices/otbRadiometricVegetationIndices.cxx
index c815b351e3c87be1d1f30938a54436c58c7a8291..096b8504792b6674c1e678613527f0ef561bb5be 100644
--- a/Applications/RadiometricIndices/otbRadiometricVegetationIndices.cxx
+++ b/Applications/RadiometricIndices/otbRadiometricVegetationIndices.cxx
@@ -79,7 +79,7 @@ public:
   typedef MultiChannelRAndNIRIndexImageFilter<FloatVectorImageType, FloatImageType, LAIFromNDVIFormoFunctor> LAIFromNDVIFormoFilter;
 
 private:
-  RadiometricVegetationIndices()
+  void DoInit()
   {
     SetName("RadiometricVegetationIndices");
     SetDescription("Compute radiometric indices based on Red and NIT channels.");
@@ -93,14 +93,7 @@ private:
  
     AddDocTag("Vegetation Indices");
     AddDocTag(Tags::FeatureExtraction);
-  }
 
-  virtual ~RadiometricVegetationIndices()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
     SetParameterDescription("in", "Input image, with at least red and NIR channels");
 
diff --git a/Applications/Radiometry/otbOpticalCalibration.cxx b/Applications/Radiometry/otbOpticalCalibration.cxx
index d387e4e559461af9395844c3c7d0cd6557ae0322..19d73b7cd67291c9c2d506b682e781ba7d882c45 100644
--- a/Applications/Radiometry/otbOpticalCalibration.cxx
+++ b/Applications/Radiometry/otbOpticalCalibration.cxx
@@ -76,7 +76,7 @@ public:
   typedef AtmosphericCorrectionParametersType::AerosolModelType                     AerosolModelType;
 
 private:
-  OpticalCalibration()
+  void DoInit()
   {
     SetName("OpticalCalibration");
     SetDescription("Perform optical calibration TOA/TOC (Top Of Atmosphere/Top Of Canopy). Supported sensors: QuickBird, Ikonos, WorldView2, Formosat, Spot5");
@@ -89,10 +89,6 @@ private:
  
     AddDocTag(Tags::Calibration);
 
-}
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",  "Input Image Filename");
 
     AddParameter(ParameterType_OutputImage, "out", "Output Image Filename");
diff --git a/Applications/Radiometry/otbSarRadiometricCalibration.cxx b/Applications/Radiometry/otbSarRadiometricCalibration.cxx
index 99f3e670b8cacb4beae0ca8b56047cc4d4d2bfc6..8edb6ffde3a05497be0ac42cb599b02ce91e8370 100644
--- a/Applications/Radiometry/otbSarRadiometricCalibration.cxx
+++ b/Applications/Radiometry/otbSarRadiometricCalibration.cxx
@@ -43,7 +43,7 @@ public:
                                                       ComplexFloatImageType>     CalibrationFilterType;
 
 private:
-  SarRadiometricCalibration()
+  void DoInit()
   {
     SetName("SarRadiometricCalibration");
     SetDescription("Perform SAR calibration on input complex images");
@@ -57,14 +57,7 @@ private:
     
     AddDocTag(Tags::Calibration);
     AddDocTag(Tags::SAR);
-  }
 
-  virtual ~SarRadiometricCalibration()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_ComplexInputImage,  "in", "Input Complex Image");
     AddParameter(ParameterType_ComplexOutputImage,  "out", "Output Image");
     AddParameter(ParameterType_RAM, "ram", "Available RAM");
diff --git a/Applications/Rasterization/otbRasterization.cxx b/Applications/Rasterization/otbRasterization.cxx
index b2bbe18cceaa2de1add670dd1c170a8f6ce455c2..39ebfef4126d664055703fc0ae1facde8d36d41b 100644
--- a/Applications/Rasterization/otbRasterization.cxx
+++ b/Applications/Rasterization/otbRasterization.cxx
@@ -65,7 +65,7 @@ public:
   typedef otb::PipelineMemoryPrintCalculator MemoryCalculatorType;
 
 private:
-   Rasterization()
+  void DoInit()
     {
     SetName("Rasterization");
     SetDescription("Reproject and Rasterize a Vector Data.");
@@ -77,14 +77,7 @@ private:
     SetDocSeeAlso(" ");
    
     AddDocTag(Tags::Vector);
-    }
-
-  virtual ~Rasterization()
-  {
-  }
 
-  void DoInit()
-    {
     AddParameter(ParameterType_InputVectorData,  "in",   "InputVectorData");
     SetParameterDescription( "in", "The input vector data to be rasterized" );
     
diff --git a/Applications/Segmentation/otbConnectedComponentSegmentation.cxx b/Applications/Segmentation/otbConnectedComponentSegmentation.cxx
index 71b86c9b41c5ab757241c35a6a663307908f80dc..36c615ce6e44e774bf2b13bbdcc6a71a5b940c62 100644
--- a/Applications/Segmentation/otbConnectedComponentSegmentation.cxx
+++ b/Applications/Segmentation/otbConnectedComponentSegmentation.cxx
@@ -64,7 +64,7 @@ public:
         <VectorDataType, VectorDataType>                     VectorDataProjectionFilterType;
 
 private:
-  ConnectedComponentSegmentation()
+  void DoInit()
   {
     SetName("ConnectedComponentSegmentation");
     SetDescription("Connected component segmentation and object based image filtering of the input image according to user-defined criterions.");
@@ -76,14 +76,7 @@ private:
  
     AddDocTag(Tags::Analysis);
     AddDocTag(Tags::Segmentation);
-  }
 
-  virtual ~ConnectedComponentSegmentation()
-  {
-  }
-  
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
     SetParameterDescription("in", "The image to segment.");
     
diff --git a/Applications/Segmentation/otbMeanShiftSegmentation.cxx b/Applications/Segmentation/otbMeanShiftSegmentation.cxx
index c440ea7d2d2783a11c7a1977697985dd0c77cda2..6e5d0750abdc617dbd59a6b2bf468bc89746856b 100644
--- a/Applications/Segmentation/otbMeanShiftSegmentation.cxx
+++ b/Applications/Segmentation/otbMeanShiftSegmentation.cxx
@@ -41,8 +41,7 @@ public:
   itkTypeMacro(MeanShiftSegmentation, otb::Application);
 
 private:
-
-  MeanShiftSegmentation()
+  void DoInit()
   {
     SetName("MeanShiftSegmentation");
     SetDescription("Perform mean shift clustering");
@@ -55,14 +54,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Segmentation);
-    }
 
-  virtual ~MeanShiftSegmentation()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,   "in",     "Input Image");
     AddParameter(ParameterType_OutputImage,  "fout",    "Filtered output");
     AddParameter(ParameterType_OutputImage,  "cout",    "Clustered output");
diff --git a/Applications/Test/otbTestApplication.cxx b/Applications/Test/otbTestApplication.cxx
index 2e15937a4f324db68b9442ec5f957e55abfc3117..6b1bb9cef02841cbbb123dc6c3dcd761b0255015 100644
--- a/Applications/Test/otbTestApplication.cxx
+++ b/Applications/Test/otbTestApplication.cxx
@@ -38,7 +38,7 @@ public:
   itkTypeMacro(TestApplication, otb::Application);
 
 private:
-  TestApplication()
+  void DoInit()
   {
     SetName("TestApplication");
     SetDescription("This application helps developers to test parameters types");
@@ -52,14 +52,6 @@ private:
    
     AddDocTag("Test");
 
-  }
-
-  virtual ~TestApplication()
-  {
-  }
-
-  void DoInit()
-  {
     std::cout << "TestApplication::DoInit" << std::endl;
     AddParameter(ParameterType_Empty, "boolean", "Boolean");
     AddParameter(ParameterType_Int, "int", "Integer");
diff --git a/Applications/Utils/otbBandMath.cxx b/Applications/Utils/otbBandMath.cxx
index fb1fa06333fc6728e578835400363465b0d2d996..8685a22b7b0f2e95015bee7a25e3a1d587ec31ea 100644
--- a/Applications/Utils/otbBandMath.cxx
+++ b/Applications/Utils/otbBandMath.cxx
@@ -50,7 +50,7 @@ public:
 
 
 private:
-  BandMath()
+  void DoInit()
   {
     SetName("BandMath");
     SetDescription("Perform a mathematical operation on monoband images");
@@ -62,10 +62,7 @@ private:
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso(" ");
     AddDocTag("Util");
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImageList,  "il",   "Input image list");
     SetParameterDescription("il", "Image list to perform computation on.");
 
diff --git a/Applications/Utils/otbColorMapping.cxx b/Applications/Utils/otbColorMapping.cxx
index e1bb16f707800602a159638d3a04633fec9499f1..d5be7a6fa32b183e133f5be9555eb5b0a2d7ad70 100644
--- a/Applications/Utils/otbColorMapping.cxx
+++ b/Applications/Utils/otbColorMapping.cxx
@@ -69,7 +69,7 @@ public:
   <PixelType, RGBPixelType>           ReliefColorMapFunctorType;
 
 private:
-  ColorMapping()
+  void DoInit()
   {
     SetName("ColorMapping");
     SetDescription("Maps an input grayscale image into 8-bits RGB using look-up tables.");
@@ -97,14 +97,7 @@ private:
     m_LutMap["Jet"]=ColorMapFilterType::Jet;
     m_LutMap["HSV"]=ColorMapFilterType::HSV;
     m_LutMap["OverUnder"]=ColorMapFilterType::OverUnder;
-  }
 
-  virtual ~ColorMapping()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
     SetParameterDescription("in", "Input image filename");
     AddParameter(ParameterType_OutputImage, "out", "Output Image");
diff --git a/Applications/Utils/otbCompareImages.cxx b/Applications/Utils/otbCompareImages.cxx
index fb4a1e1f80d3f3f6b65048bf1310f810996d7905..d30f5e416fd6df67ba77d195ec0afc305479bc1e 100644
--- a/Applications/Utils/otbCompareImages.cxx
+++ b/Applications/Utils/otbCompareImages.cxx
@@ -46,7 +46,7 @@ public:
   typedef otb::StreamingCompareImageFilter<FloatImageType> StreamingCompareImageFilterType;
 
 private:
-   CompareImages()
+  void DoInit()
   {
     SetName("CompareImages");
     SetDescription("Estimator between 2 images.");
@@ -59,14 +59,7 @@ private:
     SetDocSeeAlso("BandMath application, ImageStatistics application");
   
     AddDocTag("Statistics");
-  }
 
-  virtual ~CompareImages()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_Group, "ref", "Reference image properties");
     AddParameter(ParameterType_InputImage,  "ref.in",   "Reference image");
     SetParameterDescription("ref.in", "Image used as reference in the comparaison");
diff --git a/Applications/Utils/otbConcatenateImages.cxx b/Applications/Utils/otbConcatenateImages.cxx
index 4b1458923a83014aa6724591e92a8d9400c97ca6..f8624e4b52a4047bac34cea375132884e23fb328 100644
--- a/Applications/Utils/otbConcatenateImages.cxx
+++ b/Applications/Utils/otbConcatenateImages.cxx
@@ -53,7 +53,7 @@ public:
   typedef ObjectList<ExtractROIFilterType>                                      ExtractROIFilterListType;
 
 private:
-   ConcatenateImages()
+  void DoInit()
   {
     SetName("ConcatenateImages");
     SetDescription("Concatenate a list of images into a single multi channel one.");
@@ -72,14 +72,7 @@ private:
     m_Concatener = ListConcatenerFilterType::New();
     m_ExtractorList = ExtractROIFilterListType::New();
     m_ImageList = ImageListType::New();
-  }
 
-  virtual ~ConcatenateImages()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImageList,  "il",   "Input image list");
     SetParameterDescription("il", "Image list to concatenate");
 
diff --git a/Applications/Utils/otbConcatenateVectorData.cxx b/Applications/Utils/otbConcatenateVectorData.cxx
index 3aa7a950a86e4b19dfa1aa21cb3403daf0f0bbdc..5b63bd0fc980e0ea7a6de60fdd3c335730470243 100644
--- a/Applications/Utils/otbConcatenateVectorData.cxx
+++ b/Applications/Utils/otbConcatenateVectorData.cxx
@@ -44,7 +44,7 @@ public:
   typedef otb::ConcatenateVectorDataFilter<VectorDataType>  ConcatenateFilterType;
 
 private:
-  ConcatenateVectorData()
+  void DoInit()
   {
     SetName("ConcatenateVectorData");
     SetDescription("Concatenate VectorDatas");
@@ -57,14 +57,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Vector);
-  }
 
-  virtual ~ConcatenateVectorData()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputVectorDataList, "vd", "Input VectorDatas to concatenate");
     SetParameterDescription("vd", "VectorData files to be concatenated in an unique VectorData");
 
diff --git a/Applications/Utils/otbConvert.cxx b/Applications/Utils/otbConvert.cxx
index 317ee89f55e064f5bb1faf2e36ac3fa5e8a3a063..fa0b833e6e11c9f84dab06c2bd61eb98a436824d 100644
--- a/Applications/Utils/otbConvert.cxx
+++ b/Applications/Utils/otbConvert.cxx
@@ -76,7 +76,7 @@ public:
 
 
 private:
-   Convert()
+  void DoInit()
   {
     SetName("Convert");
     SetDescription("Convert an image to a different format, eventually rescaling the data"
@@ -90,15 +90,6 @@ private:
     AddDocTag("Conversion");
     AddDocTag("Image Dynamic");
 
-    itk::ProcessObject::Pointer m_FinalCaster;
-  }
-
-  virtual ~Convert()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input image");
     SetParameterDescription("in", "Input image");
 
diff --git a/Applications/Utils/otbDEMConvert.cxx b/Applications/Utils/otbDEMConvert.cxx
index f9e9d633fca1fde4e81ba026d3b662cfc6a3a19b..a03c5b5babb4b30510145c7b51674602995c2d5f 100644
--- a/Applications/Utils/otbDEMConvert.cxx
+++ b/Applications/Utils/otbDEMConvert.cxx
@@ -43,7 +43,7 @@ public:
   itkTypeMacro(DEMConvert, otb::Application);
 
 private:
-  DEMConvert()
+  void DoInit()
   {
     SetName("DEMConvert");
     SetDescription("Convert a DEM file into a general raster ");
@@ -55,14 +55,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag("Image manipulation");
-  }
-
-  virtual ~DEMConvert()
-  {
-  }
 
-void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",  "Input Image");
     SetParameterDescription("in", "Input image to filter.");
 
@@ -78,11 +71,11 @@ void DoInit()
     SetDocExampleParameterValue("out", "outputDEM.any");
 }
 
-  void DoUpdateParameters()
-  {
-    // nothing to update
-  }
-  
+void DoUpdateParameters()
+{
+  // nothing to update
+}
+
 /* The main is simple : read image using OTB and write it as a tif.
 *  Read this tif using OSSIM and convert it as a general raster file
 *  (.ras, .geom and . omd)
diff --git a/Applications/Utils/otbExtractROI.cxx b/Applications/Utils/otbExtractROI.cxx
index 2ca14c290ac90411dbfd3c858ebaf226ebde240f..da2f22d1485d247f639c364191d8e4aa2ba13a52 100644
--- a/Applications/Utils/otbExtractROI.cxx
+++ b/Applications/Utils/otbExtractROI.cxx
@@ -47,7 +47,7 @@ public:
                                       FloatVectorImageType::InternalPixelType> ExtractROIFilterType;
   
 private:
-  ExtractROI()
+  void DoInit()
   {
     SetName("ExtractROI");
     SetDescription("Extract a ROI defined by the user.");
@@ -60,14 +60,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Manip);
-  }
 
-  virtual ~ExtractROI()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     SetParameterDescription("in", "Input image.");
     AddParameter(ParameterType_OutputImage, "out",  "Output Image");
diff --git a/Applications/Utils/otbKmzExport.cxx b/Applications/Utils/otbKmzExport.cxx
index 26ede2897e147eada331900260cc235035d58100..35d64452b717a4a99b50291e4f9982817ec91edb 100644
--- a/Applications/Utils/otbKmzExport.cxx
+++ b/Applications/Utils/otbKmzExport.cxx
@@ -41,7 +41,7 @@ public:
   itkTypeMacro(KmzExport, otb::Application);
 
 private:
-   KmzExport()
+  void DoInit()
   {
     SetName("KmzExport");
     SetDescription("Export the input image in a KMZ product.");
@@ -54,14 +54,7 @@ private:
 
     AddDocTag("KMZ");
     AddDocTag("Export");
-  }
 
-  virtual ~KmzExport()
-  {
-  }
-  
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input image");
     SetParameterDescription("in", "Input image");
     
diff --git a/Applications/Utils/otbMultiResolutionPyramid.cxx b/Applications/Utils/otbMultiResolutionPyramid.cxx
index 05c2e888ef25ec17c288c916e9c3041135321bc9..3c0894d998913a748ed679407e94ee5690f7eed3 100644
--- a/Applications/Utils/otbMultiResolutionPyramid.cxx
+++ b/Applications/Utils/otbMultiResolutionPyramid.cxx
@@ -57,7 +57,7 @@ public:
                                  FloatVectorImageType>              ShrinkFilterType;
 
 private:
-  MultiResolutionPyramid()
+  void DoInit()
   {
     SetName("MultiResolutionPyramid");
     SetDescription("Build a multi-resolution pyramid of the image.");
@@ -73,10 +73,7 @@ private:
     AddDocTag(Tags::Manip);
     AddDocTag(Tags::Multi);
     AddDocTag("Util");
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
 
     AddParameter(ParameterType_Filename, "out", "Output Image");
diff --git a/Applications/Utils/otbOSMDownloader.cxx b/Applications/Utils/otbOSMDownloader.cxx
index 88c6743332d3af1e47343d54145e148f8d5062ee..1e968cf0e5f5ac23b3179d0e3b63ace8c7bb258a 100644
--- a/Applications/Utils/otbOSMDownloader.cxx
+++ b/Applications/Utils/otbOSMDownloader.cxx
@@ -46,7 +46,7 @@ public:
   typedef otb::OSMDataToVectorDataGenerator  VectorDataProviderType;
 
 private:
-   OSMDownloader()
+  void DoInit()
   {
     SetName("OSMDownloader");
     SetDescription("Generate a vector data from OSM on the input image extend");
@@ -58,14 +58,7 @@ private:
     SetDocSeeAlso("Convertion");
 
     AddDocTag(Tags::Meta);
-  }
 
-  virtual ~OSMDownloader()
-  {
-  }
-  
-  void DoInit()
-  {
     AddParameter(ParameterType_OutputVectorData,  "out",   "Output vector data");
     SetParameterDescription("out", "Generated output vector data path");
 
diff --git a/Applications/Utils/otbQuicklook.cxx b/Applications/Utils/otbQuicklook.cxx
index fb9856f6c4e9cdd446d1af176228f44ff52fe3d2..11f09ffe695576c548c026af3845970a17f3184d 100644
--- a/Applications/Utils/otbQuicklook.cxx
+++ b/Applications/Utils/otbQuicklook.cxx
@@ -50,7 +50,7 @@ public:
         <ExtractROIFilterType::OutputImageType, ExtractROIFilterType::OutputImageType> ShrinkImageFilterType;
   
 private:
-  Quicklook()
+  void DoInit()
   {
     SetName("Quicklook");
     SetDescription("Generates a subsampled version of an image extract");
@@ -62,14 +62,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Manip);
-  }
-  
-  virtual ~Quicklook()
-  {
-  }
-  
-  void DoInit()
-  {
+
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     SetParameterDescription( "in", "The image to read" );
     
diff --git a/Applications/Utils/otbReadImageInfo.cxx b/Applications/Utils/otbReadImageInfo.cxx
index 97199ef08256c7197be21fc3fa00ec70cd91b256..581fe895a232553d6df5ceeab198882c9c8bed97 100644
--- a/Applications/Utils/otbReadImageInfo.cxx
+++ b/Applications/Utils/otbReadImageInfo.cxx
@@ -39,7 +39,7 @@ public:
   itkTypeMacro(ReadImageInfo, otb::Application);
 
 private:
-  ReadImageInfo()
+  void DoInit()
   {
     SetName("ReadImageInfo");
     SetDescription("Get information about the image");
@@ -53,14 +53,7 @@ private:
 
     AddDocTag("Utilities");
     AddDocTag(Tags::Meta);
-  }
 
-  virtual ~ReadImageInfo()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     
     AddParameter(ParameterType_Empty, "keywordlist", "Display the OSSIM keywordlist");
diff --git a/Applications/Utils/otbRescale.cxx b/Applications/Utils/otbRescale.cxx
index 306d755088eaf486168b28c7a163c3675f942216..da02f08e86ef6973515d82defbd567d403f2d85b 100644
--- a/Applications/Utils/otbRescale.cxx
+++ b/Applications/Utils/otbRescale.cxx
@@ -46,7 +46,7 @@ public:
   typedef otb::VectorRescaleIntensityImageFilter<FloatVectorImageType> RescaleImageFilterType;
 
 private:
-   Rescale()
+  void DoInit()
   {
     SetName("Rescale");
     SetDescription("Rescale the image between two given values.");
@@ -59,14 +59,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Manip);
-  }
 
-  virtual ~Rescale()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     SetParameterDescription( "in", "The image to scale." );
     AddParameter(ParameterType_OutputImage, "out",  "Output Image");
diff --git a/Applications/Utils/otbSmoothing.cxx b/Applications/Utils/otbSmoothing.cxx
index e00d7b69d586b13f123ef29be4118548d452b898..b5c853bbfcfb5e2b5422a5d6c6a2342b033b3e0e 100644
--- a/Applications/Utils/otbSmoothing.cxx
+++ b/Applications/Utils/otbSmoothing.cxx
@@ -52,7 +52,7 @@ public:
   itkTypeMacro(Smoothing, otb::Application);
 
 private:
-  Smoothing()
+  void DoInit()
   {
     SetName("Smoothing");
     SetDescription("Apply a smoothing filter to an image");
@@ -65,14 +65,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Filter);
-  }
 
-  virtual ~Smoothing()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage,  "in",   "Input Image");
     SetParameterDescription("in", "Input image to filter.");
     AddParameter(ParameterType_OutputImage, "out",  "Output Image");
diff --git a/Applications/Utils/otbSplitImage.cxx b/Applications/Utils/otbSplitImage.cxx
index 76d82d825dca9050af0793a72a64064d0ae70eec..4a4bb9fdde3ecc41cd9caff1cb872c468833c59b 100644
--- a/Applications/Utils/otbSplitImage.cxx
+++ b/Applications/Utils/otbSplitImage.cxx
@@ -48,7 +48,7 @@ public:
                                             FloatVectorImageType::InternalPixelType> FilterType;
 
 private:
-  SplitImage()
+  void DoInit()
   {
     SetName("SplitImage");
     SetDescription("Split a N multiband image into N images");
@@ -60,10 +60,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Manip);
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputImage, "in", "Input Image");
     SetParameterDescription("in","Input image filename.");
 
diff --git a/Applications/Utils/otbVectorDataExtractROIApplication.cxx b/Applications/Utils/otbVectorDataExtractROIApplication.cxx
index fadd53fcde4b121cc4418b8005d2f7709f16d7c1..6cda0af93f66a0a63cb4de0a66d69c5809f466df 100644
--- a/Applications/Utils/otbVectorDataExtractROIApplication.cxx
+++ b/Applications/Utils/otbVectorDataExtractROIApplication.cxx
@@ -62,7 +62,7 @@ public:
   typedef otb::RemoteSensingRegion<double>                RemoteSensingRegionType;
 
 private:
-  VectorDataExtractROIApplication()
+  void DoInit()
   {
     SetName("VectorDataExtractROIApplication");
     SetDescription("Perform an extract ROI on the input vector data according to the input image extent");
@@ -74,14 +74,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Vector);
-  }
 
-  virtual ~VectorDataExtractROIApplication()
-  {
-  }
-
-  void DoInit()
-  {
     AddParameter(ParameterType_Group,"io","Input and output data");
     AddParameter(ParameterType_InputVectorData, "io.vd", "Input Vector data");
     AddParameter(ParameterType_InputImage,      "io.in", "Support image");
diff --git a/Applications/Utils/otbVectorDataSetField.cxx b/Applications/Utils/otbVectorDataSetField.cxx
index 57070da9696e6e82a32a99eb794441dfe1be8592..7461796815b7404a2a70be39b095c70d233c3e9f 100644
--- a/Applications/Utils/otbVectorDataSetField.cxx
+++ b/Applications/Utils/otbVectorDataSetField.cxx
@@ -18,12 +18,7 @@
 
 #include "otbWrapperApplication.h"
 #include "otbWrapperApplicationFactory.h"
-
-//#include <iostream>
-
 #include "otbVectorData.h"
-//#include "otbVectorDataFileWriter.h"
-//#include "otbVectorDataFileReader.h"
 
 namespace otb
 {
@@ -44,14 +39,8 @@ public:
 
   itkTypeMacro(VectorDataSetField, otb::Application);
 
-  /** Filters typedef */
-  //typedef otb::MultiChannelExtractROI<FloatVectorImageType::InternalPixelType,
-  //                                    FloatVectorImageType::InternalPixelType> ExtractROIFilterType;
-
-
 private:
-  
-  VectorDataSetField()
+  void DoInit()
   {
     SetName("VectorDataSetField");
     SetDescription("Set a field in vector data.");
@@ -64,14 +53,7 @@ private:
     SetDocSeeAlso(" ");
 
     AddDocTag(Tags::Vector);
-  }
 
-  virtual ~VectorDataSetField()
-  {
-  }
-  
-  void DoInit()
-  {
     AddParameter(ParameterType_InputVectorData, "in", "Input");
     SetParameterDescription("in", "Input Vector Data");
     AddParameter(ParameterType_OutputVectorData, "out", "Output");
diff --git a/Applications/Utils/otbVectorDataTransform.cxx b/Applications/Utils/otbVectorDataTransform.cxx
index a9da4fb9f16ba8e870e4b0eb3f1acf77166afdcb..908852c724774649b1e9de602f8ebd14aacd1fd3 100644
--- a/Applications/Utils/otbVectorDataTransform.cxx
+++ b/Applications/Utils/otbVectorDataTransform.cxx
@@ -51,7 +51,7 @@ public:
   typedef itk::CenteredSimilarity2DTransform<double>       TransformType;
 
 private:
-  VectorDataTransform()
+  void DoInit()
   {
     SetName("VectorDataTransform");
     SetDescription("Apply a transform to each vertex of the input VectorData");
@@ -63,10 +63,7 @@ private:
     SetDocSeeAlso(" ");
   
     AddDocTag(Tags::Vector);
-  }
 
-  void DoInit()
-  {
     AddParameter(ParameterType_InputVectorData, "vd", "Input Vector data");
     AddParameter(ParameterType_OutputVectorData,"out","Output Vector data");