diff --git a/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx b/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx
index 4366fa3be315a3e78e10e34fd1af04af07821f08..de72549233c0976860b89dedccd07e6f177bc3ee 100644
--- a/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx
+++ b/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx
@@ -83,11 +83,11 @@ public:
 
 
 private:
-  Int32ImageType* input;
-  Int32ImageType::Pointer reference;
-  RAMDrivenAdaptativeStreamingManagerType::Pointer streamingManager;
-  otb::ogr::DataSource::Pointer ogrRef;
-  RasterizeFilterType::Pointer rasterizeReference = RasterizeFilterType::New();
+  Int32ImageType* m_Input;
+  Int32ImageType::Pointer m_Reference;
+  RAMDrivenAdaptativeStreamingManagerType::Pointer m_StreamingManager;
+  otb::ogr::DataSource::Pointer m_OgrRef;
+  RasterizeFilterType::Pointer m_RasterizeReference;
 
   struct StreamingInitializationData
   {
@@ -146,17 +146,25 @@ private:
   SetParameterDescription("ref.vector.field","Field name containing the label values");
   SetListViewSingleSelectionMode("ref.vector.field",true);
   
-  AddParameter(ParameterType_Int,"refnodatalabel","Value for nodata pixels in ref");
-  SetDefaultParameterInt("refnodatalabel",0);
-  SetParameterDescription("refnodatalabel","Label to be treated as no data in ref. Please note that this value is always used in vector mode, to generate default values. Please set it to a value that does not correspond to a class label.");
-  MandatoryOff("refnodatalabel");
-  DisableParameter("refnodatalabel");
-  AddParameter(ParameterType_Int,"prodnodatalabel","Value for nodata pixels in input image");
-  SetParameterDescription("prodnodatalabel","Label to be treated as no data in input image");
-  SetDefaultParameterInt("prodnodatalabel",0);
+  AddParameter(ParameterType_Int,"ref.raster.nodata","Value for nodata pixels in ref raster");
+  SetDefaultParameterInt("ref.raster.nodata",0);
+  SetParameterDescription("ref.raster.nodata","Label to be treated as no data in ref raster.");
+  MandatoryOff("ref.raster.nodata");
+  DisableParameter("ref.raster.nodata");
+
+  AddParameter(ParameterType_Int,"ref.vector.nodata","Value for nodata pixels in ref vector");
+  SetDefaultParameterInt("ref.vector.nodata",0);
+  SetParameterDescription("ref.vector.nodata","Label to be treated as no data in ref vector. Please note that this value is always used in vector mode, to generate default values. Please set it to a value that does not correspond to a class label.");
+  MandatoryOff("ref.vector.nodata");
+  DisableParameter("ref.vector.nodata");
+
+
+  AddParameter(ParameterType_Int,"nodatalabel","Value for nodata pixels in input image");
+  SetParameterDescription("nodatalabel","Label to be treated as no data in input image");
+  SetDefaultParameterInt("nodatalabel",0);
   
-  MandatoryOff("prodnodatalabel");
-  DisableParameter("prodnodatalabel");
+  MandatoryOff("nodatalabel");
+  DisableParameter("nodatalabel");
 
   AddRAMParameter();
 
@@ -166,7 +174,7 @@ private:
   SetDocExampleParameterValue("ref", "vector");
   SetDocExampleParameterValue("ref.vector.in","VectorData_QB1_bis.shp");
   SetDocExampleParameterValue("ref.vector.field","Class");
-  SetDocExampleParameterValue("refnodatalabel","255");
+  SetDocExampleParameterValue("ref.vector.nodata","255");
   }
 
   void DoUpdateParameters() ITK_OVERRIDE
@@ -204,7 +212,7 @@ private:
     otbAppLogINFO("Contingency table: reference labels (rows) vs. produced labels (cols)\n" << contingencyTable);
   }
 
-  void writeContingencyTable(const ContingencyTableType& contingencyTable)
+  void m_WriteContingencyTable(const ContingencyTableType& contingencyTable)
   {
     std::ofstream outFile;
     outFile.open( this->GetParameterString( "out" ).c_str() );
@@ -289,28 +297,26 @@ private:
 
     StreamingInitializationData sid;
 
-    input = this->GetParameterInt32Image("in");
+    m_Input = this->GetParameterInt32Image("in");
 
     std::string field;
 
-    rasterizeReference = RasterizeFilterType::New();
-    sid.refnodata = this->GetParameterInt("refnodatalabel");
-    sid.refhasnodata = this->IsParameterEnabled("refnodatalabel");
-    sid.prodnodata = this->GetParameterInt("prodnodatalabel");
-    sid.prodhasnodata = this->IsParameterEnabled("prodnodatalabel");
+    sid.prodnodata = this->GetParameterInt("nodatalabel");
+    sid.prodhasnodata = this->IsParameterEnabled("nodatalabel");
 
-
-    
     if (GetParameterString("ref") == "raster")
       {
-      reference = this->GetParameterInt32Image("ref.raster.in");
+      sid.refnodata = this->GetParameterInt("ref.raster.nodata");
+      sid.refhasnodata = this->IsParameterEnabled("ref.raster.nodata");
+      m_Reference = this->GetParameterInt32Image("ref.raster.in");
       }
     else
       {
       // Force nodata to true since it will be generated during rasterization
       sid.refhasnodata = true;
+      sid.refnodata = this->GetParameterInt("ref.vector.nodata");
       
-      ogrRef = otb::ogr::DataSource::New(GetParameterString("ref.vector.in"), otb::ogr::DataSource::Modes::Read);
+      m_OgrRef = otb::ogr::DataSource::New(GetParameterString("ref.vector.in"), otb::ogr::DataSource::Modes::Read);
 
       // Get field name
       std::vector<int> selectedCFieldIdx = GetSelectedItems("ref.vector.field");
@@ -323,27 +329,28 @@ private:
       std::vector<std::string> cFieldNames = GetChoiceNames("ref.vector.field");
       field = cFieldNames[selectedCFieldIdx.front()];
 
-      rasterizeReference->AddOGRDataSource(ogrRef);
-      rasterizeReference->SetOutputParametersFromImage(input);
-      rasterizeReference->SetBackgroundValue(sid.refnodata);
-      rasterizeReference->SetBurnAttribute(field.c_str());
+      m_RasterizeReference = RasterizeFilterType::New();
+      m_RasterizeReference->AddOGRDataSource(m_OgrRef);
+      m_RasterizeReference->SetOutputParametersFromImage(m_Input);
+      m_RasterizeReference->SetBackgroundValue(sid.refnodata);
+      m_RasterizeReference->SetBurnAttribute(field.c_str());
 
-      reference = rasterizeReference->GetOutput();
-      reference->UpdateOutputInformation();
+      m_Reference = m_RasterizeReference->GetOutput();
+      m_Reference->UpdateOutputInformation();
       }
 
     // Prepare local streaming
 
 
-    streamingManager = RAMDrivenAdaptativeStreamingManagerType::New();
+    m_StreamingManager = RAMDrivenAdaptativeStreamingManagerType::New();
     int availableRAM = GetParameterInt("ram");
-    streamingManager->SetAvailableRAMInMB( static_cast<unsigned int>( availableRAM ) );
+    m_StreamingManager->SetAvailableRAMInMB( static_cast<unsigned int>( availableRAM ) );
     float bias = 2.0; // empiric value;
-    streamingManager->SetBias(bias);
+    m_StreamingManager->SetBias(bias);
 
-    streamingManager->PrepareStreaming(input, input->GetLargestPossibleRegion());
+    m_StreamingManager->PrepareStreaming(m_Input, m_Input->GetLargestPossibleRegion());
 
-    sid.numberOfStreamDivisions = streamingManager->GetNumberOfSplits();
+    sid.numberOfStreamDivisions = m_StreamingManager->GetNumberOfSplits();
 
     otbAppLogINFO("Number of stream divisions : "<<sid.numberOfStreamDivisions);
 
@@ -371,20 +378,20 @@ private:
 
     for (unsigned int index = 0; index < sid.numberOfStreamDivisions; index++)
       {
-      RegionType streamRegion = streamingManager->GetSplit( index );
+      RegionType streamRegion = m_StreamingManager->GetSplit( index );
 
-      input->SetRequestedRegion( streamRegion );
-      input->PropagateRequestedRegion();
-      input->UpdateOutputData();
+      m_Input->SetRequestedRegion( streamRegion );
+      m_Input->PropagateRequestedRegion();
+      m_Input->UpdateOutputData();
 
-      reference->SetRequestedRegion( streamRegion );
-      reference->PropagateRequestedRegion();
-      reference->UpdateOutputData();
+      m_Reference->SetRequestedRegion( streamRegion );
+      m_Reference->PropagateRequestedRegion();
+      m_Reference->UpdateOutputData();
 
-      ImageIteratorType itInput( input, streamRegion );
+      ImageIteratorType itInput( m_Input, streamRegion );
       itInput.GoToBegin();
 
-      ImageIteratorType itRef( reference, streamRegion );
+      ImageIteratorType itRef( m_Reference, streamRegion );
       itRef.GoToBegin();
 
       calculator->Compute( itRef, itInput,sid.refhasnodata,sid.refnodata,sid.prodhasnodata,sid.prodnodata);
@@ -392,7 +399,7 @@ private:
 
     ContingencyTableType contingencyTable = calculator->BuildContingencyTable();
     LogContingencyTable(contingencyTable);
-    writeContingencyTable(contingencyTable);
+    m_WriteContingencyTable(contingencyTable);
   }
 
   void DoExecuteConfusionMatrix(const StreamingInitializationData& sid)
@@ -406,20 +413,20 @@ private:
 
     for (unsigned int index = 0; index < sid.numberOfStreamDivisions; index++)
       {
-      RegionType streamRegion = streamingManager->GetSplit(index);
+      RegionType streamRegion = m_StreamingManager->GetSplit(index);
 
-      input->SetRequestedRegion(streamRegion);
-      input->PropagateRequestedRegion();
-      input->UpdateOutputData();
+      m_Input->SetRequestedRegion(streamRegion);
+      m_Input->PropagateRequestedRegion();
+      m_Input->UpdateOutputData();
 
-      reference->SetRequestedRegion(streamRegion);
-      reference->PropagateRequestedRegion();
-      reference->UpdateOutputData();
+      m_Reference->SetRequestedRegion(streamRegion);
+      m_Reference->PropagateRequestedRegion();
+      m_Reference->UpdateOutputData();
 
-      ImageIteratorType itInput(input, streamRegion);
+      ImageIteratorType itInput(m_Input, streamRegion);
       itInput.GoToBegin();
 
-      ImageIteratorType itRef(reference, streamRegion);
+      ImageIteratorType itRef(m_Reference, streamRegion);
       itRef.GoToBegin();
 
       while (!itRef.IsAtEnd())