diff --git a/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx b/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx
index 2d867ec80a50322e87bc7bec7805d8def751616f..7ada745f86e51536a58b3e28f03c2c221066c015 100644
--- a/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx
+++ b/Modules/Applications/AppClassification/app/otbTrainVectorClassifier.cxx
@@ -83,25 +83,34 @@ private:
       }
     else
       {
-      WriteContingencyTable();
+      ContingencyTable<ClassLabelType> table = ComputeContingencyTable(predictedList,classificationListSamples.labeledListSample);
+      
+      WriteContingencyTable(table);
       }
   }
 
-
-  void WriteContingencyTable()
+  ContingencyTable<ClassLabelType> ComputeContingencyTable(const TargetListSampleType::Pointer &predictedListSample,
+                                                           const TargetListSampleType::Pointer &performanceLabeledListSample)
   {
-    // Compute contingency table
     typedef ContingencyTableCalculator<ClassLabelType> ContigencyTableCalcutaltorType;
+
     ContigencyTableCalcutaltorType::Pointer contingencyTableCalculator = ContigencyTableCalcutaltorType::New();
-    contingencyTableCalculator->Compute(predictedList->Begin(), predictedList->End(),
-                                        classificationListSamples.labeledListSample->Begin(),
-                                        classificationListSamples.labeledListSample->End());
-    ContingencyTable<ClassLabelType> contingencyTable = contingencyTableCalculator->GetContingencyTable();
-
-    // Write contingency table
-    std::ofstream outFile;
-    outFile.open( this->GetParameterString( "io.confmatout" ).c_str() );
-    outFile << contingencyTable.to_csv();
+    contingencyTableCalculator->Compute(performanceLabeledListSample->Begin(),
+                                        performanceLabeledListSample->End(),predictedListSample->Begin(), predictedListSample->End());
+    
+    return contingencyTableCalculator->GetContingencyTable();
+  }
+  
+
+  void WriteContingencyTable(const ContingencyTable<ClassLabelType> & table)
+  {
+    if(IsParameterEnabled("io.confmatout"))
+      {
+      // Write contingency table
+      std::ofstream outFile;
+      outFile.open( this->GetParameterString( "io.confmatout" ).c_str() );
+      outFile << table.to_csv();
+      }
   }