diff --git a/CMake/OTBCheckTargetSystemArch.cmake b/CMake/OTBCheckTargetSystemArch.cmake
new file mode 100755
index 0000000000000000000000000000000000000000..5764a219bdd7570a476ac7773224e61a03588b90
--- /dev/null
+++ b/CMake/OTBCheckTargetSystemArch.cmake
@@ -0,0 +1,51 @@
+macro(OTB_CHECK_TARGET_SYSTEM_ARCH _RESULT1 _RESULT2)
+  set(${_RESULT1} "x64")
+  set(${_RESULT2} TRUE)
+
+  if(MSVC)
+    execute_process(
+      COMMAND ${CMAKE_C_COMPILER}
+      ERROR_VARIABLE ev
+      OUTPUT_VARIABLE ov
+      OUTPUT_QUIET
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+
+    if("${ev}" MATCHES "x86")
+      set(${_RESULT1} "x86")
+      set(${_RESULT2} FALSE)
+    endif()
+  endif() #MSVC
+
+  if(UNIX)
+    execute_process(
+      COMMAND uname -m
+      ERROR_VARIABLE ev
+      OUTPUT_VARIABLE ov
+      OUTPUT_STRIP_TRAILING_WHITESPACE
+      )
+    
+    set(${_RESULT1} "${ov}")
+    set(${_RESULT2} FALSE)
+    if("${ov}" STREQUAL "x86_64")
+      set(${_RESULT2} TRUE)
+    endif()
+  endif()
+
+  if(WIN32 AND NOT MSVC)
+    if(MXE_TARGET_DIR)
+      if(MXE_TARGET_DIR MATCHES "i686")
+	set(${_RESULT1} "i686")
+	set(${_RESULT2} FALSE)
+      elseif(MXE_TARGET_DIR MATCHES "x86_64")
+	set(${_RESULT1} "x86_64")
+	set(${_RESULT2} TRUE)
+      endif()
+    else()
+      message(STATUS "MXE_TARGET_DIR not set!")
+    endif()
+  endif()
+endmacro()
+
+#call macro
+OTB_CHECK_TARGET_SYSTEM_ARCH(OTB_TARGET_SYSTEM_ARCH OTB_TARGET_SYSTEM_ARCH_IS_X64)
diff --git a/CMake/i18n_qt4.cmake b/CMake/i18n_qt4.cmake
index 5f2232636ff5ce673ea3548c31255df1cd72f3f9..4d02dda908ee68c307634faf0e51823bd49cb78a 100644
--- a/CMake/i18n_qt4.cmake
+++ b/CMake/i18n_qt4.cmake
@@ -19,20 +19,14 @@ function( add_to_qt4_i18n_files RESULT )
 
     get_filename_component( ABS_FILE ${F} ABSOLUTE )
 
-    set( ${RESULT}
-      "${${RESULT}} ${ABS_FILE}"
-      CACHE INTERNAL "" FORCE
-      )
+    set(${RESULT} ${${RESULT}} ${ABS_FILE} CACHE INTERNAL "")
   endforeach()
 endfunction()
 
 #
 #
 macro( add_to_qt4_i18n_include_path DIRECTORY )
-  set( OTB_I18N_INCLUDE_PATH
-    "${OTB_I18N_INCLUDE_PATH} ${DIRECTORY}"
-    CACHE INTERNAL "" FORCE
-    )
+  set(OTB_I18N_INCLUDE_PATH ${OTB_I18N_INCLUDE_PATH} ${DIRECTORY} CACHE INTERNAL "")
 endmacro()
 
 #
@@ -41,32 +35,13 @@ macro( add_to_qt4_i18n_headers INCLUDE_DIR )
 
   get_filename_component( ABS_INCLUDE_DIR ${INCLUDE_DIR} ABSOLUTE )
 
-  set( OTB_QT_I18N_INCLUDE_PATH
-    "${OTB_QT_I18N_INCLUDE_PATH} ${ABS_INCLUDE_DIR}"
-    CACHE INTERNAL "" FORCE
-    )
-
+  set(OTB_QT_I18N_INCLUDE_PATH ${OTB_QT_I18N_INCLUDE_PATH} ${ABS_INCLUDE_DIR} CACHE INTERNAL "")
 
   foreach( F ${ARGN} )
     string( REPLACE ".cxx" ".h" HEADER ${F} )
-
-    list( APPEND HEADERS ${HEADER} )
-  endforeach()
-
-
-  #message( "HEADERS=${HEADERS}" )
-
-
-  foreach( F ${HEADERS} )
-    #message( "F=${F}" )
-
-    set( ABS_FILE "${ABS_INCLUDE_DIR}/${F}" )
-
-    if( EXISTS ${ABS_FILE} )
-      set( OTB_QT_I18N_HEADER_FILES
-	"${OTB_QT_I18N_HEADER_FILES} ${ABS_FILE}"
-	CACHE INTERNAL "" FORCE
-	)
+    set( ABS_HEADER "${ABS_INCLUDE_DIR}/${HEADER}" )
+    if(EXISTS ${ABS_HEADER})
+      set(OTB_QT_I18N_HEADER_FILES ${OTB_QT_I18N_HEADER_FILES} ${ABS_HEADER} CACHE INTERNAL "")
     endif()
   endforeach()
 endmacro()
@@ -85,22 +60,42 @@ endmacro()
 
 #
 #
-macro( generate_qt4_project TRANSLATIONS FILENAME )
+macro( generate_qt4_project FILENAME )
   message( STATUS "Generating Qt4 '${FILENAME}' project file for I18N." )
 
+  unset(_OTB_QT_I18N_INCLUDE_PATH_PRO)
+  unset(_OTB_QT_I18N_HEADER_PRO)
+  unset(_OTB_QT_I18N_SOURCE_PRO)
+  unset(_OTB_QT_I18N_FORM_PRO)
+  foreach(_path ${OTB_QT_I18N_INCLUDE_PATH})
+    set(_OTB_QT_I18N_INCLUDE_PATH_PRO
+      "${_OTB_QT_I18N_INCLUDE_PATH_PRO} \"${_path}\"")
+  endforeach()
+  foreach(_file ${OTB_QT_I18N_HEADER_FILES})
+    set(_OTB_QT_I18N_HEADER_PRO
+      "${_OTB_QT_I18N_HEADER_PRO} \"${_file}\"")
+  endforeach()
+  foreach(_file ${OTB_QT_I18N_SOURCE_FILES})
+    set(_OTB_QT_I18N_SOURCE_PRO
+      "${_OTB_QT_I18N_SOURCE_PRO} \"${_file}\"")
+  endforeach()
+  foreach(_file ${OTB_QT_I18N_FORM_FILES})
+    set(_OTB_QT_I18N_FORM_PRO
+      "${_OTB_QT_I18N_FORM_PRO} \"${_file}\"")
+  endforeach()
+
   file( WRITE
     ${FILENAME}
 
     "# OTB autogenerated .pro file needed to generate Qt I18N translations
 
-INCLUDEPATH = ${OTB_QT_I18N_INCLUDE_PATH}
-
-HEADERS = ${OTB_QT_I18N_HEADER_FILES}
+INCLUDEPATH = ${_OTB_QT_I18N_INCLUDE_PATH_PRO}
 
-SOURCES = ${OTB_QT_I18N_SOURCE_FILES}
+HEADERS = ${_OTB_QT_I18N_HEADER_PRO}
 
-FORMS = ${OTB_QT_I18N_FORM_FILES}
+SOURCES = ${_OTB_QT_I18N_SOURCE_PRO}
 
-TRANSLATIONS = ${TRANSLATIONS}"
+FORMS = ${_OTB_QT_I18N_FORM_PRO}
+"
     )
 endmacro()
diff --git a/CMake/otbcli.sh.in b/CMake/otbcli.sh.in
index 3fd44c745969e689e71bcaef43483d4ef0d36051..3026dad88730fcaca2543bff9e97c5db66a85c6a 100644
--- a/CMake/otbcli.sh.in
+++ b/CMake/otbcli.sh.in
@@ -28,9 +28,10 @@ export OTB_APPLICATION_PATH
 # avoid numerical issues caused by locale
 export LC_NUMERIC=C
 
-# Source GDAL_DATA, EPSG_CSV
-if [ -f "$CURRENT_SCRIPT_DIR/env_exports" ]; then
-    . "$CURRENT_SCRIPT_DIR/env_exports"
+# Export GDAL_DATA, EPSG_CSV
+# Note that OTB_APPLICATION_PATH is reset here.
+if [ -f "$CURRENT_SCRIPT_DIR/../otbenv.profile" ]; then
+    . "$CURRENT_SCRIPT_DIR/../otbenv.profile"
 fi
 
 # start the application
diff --git a/CMake/otbgui.sh.in b/CMake/otbgui.sh.in
index 5b389e1d9b5de73f0aa57766fb52c1c01f5c3543..5f6354a75ced0919941e7012083e02cda4696a4c 100644
--- a/CMake/otbgui.sh.in
+++ b/CMake/otbgui.sh.in
@@ -28,9 +28,9 @@ export OTB_APPLICATION_PATH
 # avoid numerical issues caused by locale
 export LC_NUMERIC=C
 
-# Source GDAL_DATA, EPSG_CSV
-if [ -f "$CURRENT_SCRIPT_DIR/env_exports" ]; then
-    . "$CURRENT_SCRIPT_DIR/env_exports"
+# Export GDAL_DATA, EPSG_CSV
+if [ -f "$CURRENT_SCRIPT_DIR/../otbenv.profile" ]; then
+    . "$CURRENT_SCRIPT_DIR/../otbenv.profile"
 fi
 
 # start the application
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a0a618ad1e3ce50921ddeb317d4b011d67b2639e..b1d3e71a38e27d0160c67777c3880c76ee2d9a43 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -247,6 +247,19 @@ if(OTB_DATA_USE_LARGEINPUT)
   mark_as_advanced(OTB_DATA_LARGEINPUT_ROOT)
 endif()
 
+# Small macro to copy a file and rename it
+macro(otb_copy_rename _input _output)
+  execute_process(
+    COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_input}" "${_output}"
+    RESULT_VARIABLE _err_code
+    OUTPUT_QUIET
+    ERROR_QUIET
+    )
+  if(_err_code)
+    message(FATAL_ERROR "Failed to copy file ${_input} to ${_output}")
+  endif()
+endmacro()
+
 #Generate cmake variables with a set of largeinput data used in tests
 include(OTBManageLargeInputPaths)
 
diff --git a/Documentation/Cookbook/rst/Installation_Macx.txt b/Documentation/Cookbook/rst/Installation_Macx.txt
index 1e498c9b4330ff7047b325a918833d257ac6990a..258548d1d47b9d92d5418861be43788361eed016 100644
--- a/Documentation/Cookbook/rst/Installation_Macx.txt
+++ b/Documentation/Cookbook/rst/Installation_Macx.txt
@@ -4,8 +4,8 @@ uncompress it with the command line :
 
 .. parsed-literal::
 
-    chmod +x OTB-|release|-Linux64.run
-    ./OTB-|release|-Linux64.run
+    chmod +x OTB-|release|-Darwin64.run
+    ./OTB-|release|-Darwin64.run
 
 Once the archive is extracted, you can see OTB-|release|-Darwin64 directory in
 the same direcrtory along with OTB-|release|-Darwin64.run
diff --git a/Modules/Adapters/QtAdapters/include/otbQtAdapters.h b/Modules/Adapters/QtAdapters/include/otbQtAdapters.h
index c198d57fa3389e691dbaee44801506e6f656ea1c..e4cdace3b06c0ccd789550915802607b6926a58c 100644
--- a/Modules/Adapters/QtAdapters/include/otbQtAdapters.h
+++ b/Modules/Adapters/QtAdapters/include/otbQtAdapters.h
@@ -198,6 +198,11 @@ bool
 OTBQtAdapters_EXPORT
 SetWorkingDir( const QString & path );
 
+/**
+ * \brief Static path to the last directory used in file dialogs
+ */
+static QString RecentDirectory;
+
 } // end namespace 'otb'.
 
 
diff --git a/Modules/Adapters/QtAdapters/src/otbQtAdapters.cxx b/Modules/Adapters/QtAdapters/src/otbQtAdapters.cxx
index 946cb322a2087a25da191467353b49eabf0f76c6..b36d66cff678d575dc0c20d6270a33ee1000ce3a 100644
--- a/Modules/Adapters/QtAdapters/src/otbQtAdapters.cxx
+++ b/Modules/Adapters/QtAdapters/src/otbQtAdapters.cxx
@@ -22,7 +22,6 @@
 
 #include <cassert>
 
-
 /*****************************************************************************/
 /* INCLUDE SECTION                                                           */
 
@@ -73,13 +72,16 @@ GetExistingDirectory( QWidget * p,
       caption.isEmpty()
       ? QObject::tr( "Select directory..." )
       : caption,
-      dir,
+      dir.isEmpty() ? RecentDirectory : dir,
       options
     )
   );
 
   if( !path.isNull() )
+    {
+    // Absolute path expected from QFileDialog
     SetWorkingDir( path );
+    }
 
   return path;
 }
@@ -99,13 +101,14 @@ GetOpenFileName( QWidget * p,
       caption.isEmpty()
       ? QObject::tr( "Open file..." )
       : caption,
-      dir,
+      dir.isEmpty() ? RecentDirectory : dir,
       filter,
       selectedFilter,
       options
     )
   );
 
+  // Absolute path expected from QFileDialog
   if( !filename.isNull() )
     SetWorkingDir( filename );
 
@@ -127,13 +130,14 @@ GetOpenFileNames( QWidget * p,
       caption.isEmpty()
       ? QObject::tr( "Open file..." )
       : caption,
-      dir,
+      dir.isEmpty() ? RecentDirectory : dir,
       filter,
       selectedFilter,
       options
     )
   );
 
+  // Absolute path expected from QFileDialog
   if( !filenames.isEmpty() )
     SetWorkingDir( filenames.back() );
 
@@ -155,13 +159,14 @@ GetSaveFileName( QWidget * p,
       caption.isEmpty()
       ? QObject::tr( "Save file..." )
       : caption,
-      dir,
+      dir.isEmpty() ? RecentDirectory : dir,
       filter,
       selectedFilter,
       options
     )
   );
 
+  // Absolute path expected from QFileDialog
   if( !filename.isNull() )
     SetWorkingDir( filename );
 
@@ -172,7 +177,7 @@ GetSaveFileName( QWidget * p,
 QString
 GetWorkingDir()
 {
-  return QDir::currentPath();
+  return RecentDirectory;
 }
 
 /*****************************************************************************/
@@ -183,11 +188,20 @@ SetWorkingDir( const QString & filepath )
 
   QFileInfo finfo( filepath );
 
+#if 0
   return QDir::setCurrent(
     finfo.isDir()
     ? filepath
     : finfo.path()
   );
+#else
+  // TODO : add mutex if needed
+  QString dir = finfo.isDir() ? filepath : finfo.path();
+  if ( !QFileInfo(dir).isDir() )
+    return false;
+  RecentDirectory = finfo.isDir() ? filepath : finfo.path();
+  return true;
+#endif
 }
 
 } // end namespace 'otb'
diff --git a/Modules/Applications/AppClassification/app/otbMultiImageSamplingRate.cxx b/Modules/Applications/AppClassification/app/otbMultiImageSamplingRate.cxx
index 826af62fd982777cabdc7be8944a1a9fb9c26314..f1e90e88a8c9e4a134eedb93a4ed12500bda89bf 100644
--- a/Modules/Applications/AppClassification/app/otbMultiImageSamplingRate.cxx
+++ b/Modules/Applications/AppClassification/app/otbMultiImageSamplingRate.cxx
@@ -253,8 +253,15 @@ private:
         m_CalculatorList->SetNbOfSamplesAllClasses(countList, partitionMode);
         }
       break;
-      // percent 
+      // smallest class
       case 2:
+        {
+        otbAppLogINFO("Sampling strategy : fit the number of samples based on the smallest class");
+        m_CalculatorList->SetMinimumNbOfSamplesByClass(partitionMode);
+        }
+      break;
+      // percent
+      case 3:
         {
         std::vector<itksys::String> parts = itksys::SystemTools::SplitString(this->GetParameterString("strategy.percent.p"),' ');
         std::vector<double> percentList;
@@ -283,7 +290,7 @@ private:
       break;
 
       // total
-      case 3:
+      case 4:
         {
         std::vector<itksys::String> parts = itksys::SystemTools::SplitString(this->GetParameterString("strategy.total.v"),' ');
         std::vector<unsigned long> totalList;
@@ -305,14 +312,6 @@ private:
         m_CalculatorList->SetTotalNumberOfSamples(totalList, partitionMode);
         }
       break;
-
-      // smallest class
-      case 4:
-        {
-        otbAppLogINFO("Sampling strategy : fit the number of samples based on the smallest class");
-        m_CalculatorList->SetMinimumNbOfSamplesByClass(partitionMode);
-        }
-      break;
       // all samples
       case 5:
         {
diff --git a/Modules/Applications/AppProjection/app/otbRigidTransformResample.cxx b/Modules/Applications/AppProjection/app/otbRigidTransformResample.cxx
index 2bdaa251b37d3ba99b185017c235b16392022510..6afc8e4f9bc8733c91073c01a9af928a5cd01138 100644
--- a/Modules/Applications/AppProjection/app/otbRigidTransformResample.cxx
+++ b/Modules/Applications/AppProjection/app/otbRigidTransformResample.cxx
@@ -194,6 +194,7 @@ private:
                                                   double>          LinearInterpolationType;
       LinearInterpolationType::Pointer interpolator = LinearInterpolationType::New();
       m_Resampler->SetInterpolator(interpolator);
+      m_GridResampler->SetInterpolator(interpolator);
       }
       break;
       case Interpolator_NNeighbor:
@@ -202,6 +203,7 @@ private:
                                                            double> NearestNeighborInterpolationType;
       NearestNeighborInterpolationType::Pointer interpolator = NearestNeighborInterpolationType::New();
       m_Resampler->SetInterpolator(interpolator);
+      m_GridResampler->SetInterpolator(interpolator);
       }
       break;
       case Interpolator_BCO:
@@ -210,6 +212,7 @@ private:
       BCOInterpolationType::Pointer interpolator = BCOInterpolationType::New();
       interpolator->SetRadius(GetParameterInt("interpolator.bco.radius"));
       m_Resampler->SetInterpolator(interpolator);
+      m_GridResampler->SetInterpolator(interpolator);
       }
       break;
       }
diff --git a/Modules/Core/Interpolation/include/otbBCOInterpolateImageFunction.txx b/Modules/Core/Interpolation/include/otbBCOInterpolateImageFunction.txx
index 89572aad83c63b515005883f223dc86d2d757b78..6f0fd2ad70165d7fb331a571fe456a33b33ea926 100644
--- a/Modules/Core/Interpolation/include/otbBCOInterpolateImageFunction.txx
+++ b/Modules/Core/Interpolation/include/otbBCOInterpolateImageFunction.txx
@@ -142,8 +142,6 @@ BCOInterpolateImageFunction<TInputImage, TCoordRep>
   IndexType baseIndex;
   IndexType neighIndex;
 
-  std::vector<RealType> lineRes(this->m_WinSize, 0.);
-
   RealType value = itk::NumericTraits<RealType>::Zero;
 
   CoefContainerType BCOCoefX = this->EvaluateCoef(index[0]);
@@ -157,6 +155,7 @@ BCOInterpolateImageFunction<TInputImage, TCoordRep>
 
   for(unsigned int i = 0; i < this->m_WinSize; ++i )
     {
+    RealType lineRes = 0.;
     for(unsigned int j = 0; j < this->m_WinSize; ++j )
       {
       // get neighbor index
@@ -179,9 +178,9 @@ BCOInterpolateImageFunction<TInputImage, TCoordRep>
         {
         neighIndex[1] = this->m_StartIndex[1];
         }
-      lineRes[i] += static_cast<RealType>( this->GetInputImage()->GetPixel( neighIndex ) ) * BCOCoefY[j];
+      lineRes += static_cast<RealType>( this->GetInputImage()->GetPixel( neighIndex ) ) * BCOCoefY[j];
       }
-    value += lineRes[i]*BCOCoefX[i];
+    value += lineRes*BCOCoefX[i];
     }
 
 
@@ -211,14 +210,9 @@ BCOInterpolateImageFunction< otb::VectorImage<TPixel, VImageDimension> , TCoordR
   IndexType neighIndex;
 
 
-    
-  std::vector< std::vector<ScalarRealType> >  lineRes ( this->m_WinSize, std::vector<ScalarRealType>( componentNumber, itk::NumericTraits<ScalarRealType>::Zero) );
-  std::vector< ScalarRealType > value(componentNumber,itk::NumericTraits<ScalarRealType>::Zero);
-
-
-  OutputType output;
-
-  output.SetSize(componentNumber);
+  std::vector<ScalarRealType> lineRes(componentNumber);
+  OutputType output(componentNumber);
+  output.Fill(itk::NumericTraits<ScalarRealType>::Zero);
 
   CoefContainerType BCOCoefX = this->EvaluateCoef(index[0]);
   CoefContainerType BCOCoefY = this->EvaluateCoef(index[1]);
@@ -231,6 +225,7 @@ BCOInterpolateImageFunction< otb::VectorImage<TPixel, VImageDimension> , TCoordR
 
   for(unsigned int i = 0; i < this->m_WinSize; ++i )
     {
+    std::fill(lineRes.begin(), lineRes.end(), itk::NumericTraits<ScalarRealType>::Zero);
     for(unsigned int j = 0; j < this->m_WinSize; ++j )
       {
       // get neighbor index
@@ -256,20 +251,15 @@ BCOInterpolateImageFunction< otb::VectorImage<TPixel, VImageDimension> , TCoordR
       const InputPixelType & pixel = this->GetInputImage()->GetPixel( neighIndex );
       for( unsigned int k = 0; k<componentNumber; ++k)
         {
-        lineRes[i][k] += pixel.GetElement(k) * BCOCoefY[j];
+        lineRes[k] += pixel.GetElement(k) * BCOCoefY[j];
         }
       }
     for( unsigned int k = 0; k<componentNumber; ++k)
       {
-      value[k] += lineRes[i][k]*BCOCoefX[i];
+      output[k] += lineRes[k]*BCOCoefX[i];
       }
     }
 
-  for( unsigned int k = 0; k<componentNumber; ++k)
-    {
-    output.SetElement(k, value[k]);
-    }
-
   return ( output );
 }
 
diff --git a/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h b/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h
index 41062e2fc1bc9b36a44593084ef3e9087180030f..f0da039e286075354da3309cfc124ea0b3531224 100644
--- a/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h
+++ b/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h
@@ -88,16 +88,16 @@ public:
 
 protected:
   /** Actually process the input */
-  virtual void GenerateData();
+  void GenerateData() ITK_OVERRIDE;
 
   /** Constructor */
   SiftFastImageFilter();
 
   /** Destructor */
-  virtual ~SiftFastImageFilter() {}
+  ~SiftFastImageFilter() ITK_OVERRIDE {}
 
   /** PrintSelf method */
-  virtual void PrintSelf(std::ostream& os, itk::Indent indent) const;
+  void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
 
 private:
   /** The number of scales */
diff --git a/Modules/Filtering/Projection/include/otbGroundSpacingImageFunction.h b/Modules/Filtering/Projection/include/otbGroundSpacingImageFunction.h
index 70e3945ae7cc62e9a37c1d3040acc87338117bdd..86d89e846e6ea7b1650735711b61f19504357ab6 100644
--- a/Modules/Filtering/Projection/include/otbGroundSpacingImageFunction.h
+++ b/Modules/Filtering/Projection/include/otbGroundSpacingImageFunction.h
@@ -81,18 +81,18 @@ public:
   itkStaticConstMacro(ImageDimension, unsigned int, InputImageType::ImageDimension);
 
   /** Evalulate the function at specified index */
-  virtual FloatType EvaluateAtIndex(const IndexType& index) const;
+  FloatType EvaluateAtIndex(const IndexType& index) const ITK_OVERRIDE;
 
   /** Evaluate the function at non-integer positions */
-  virtual FloatType Evaluate(const PointType& point) const
+  FloatType Evaluate(const PointType& point) const ITK_OVERRIDE
   {
     IndexType index;
     this->ConvertPointToNearestIndex(point, index);
     return this->EvaluateAtIndex(index);
   }
 
-  virtual FloatType EvaluateAtContinuousIndex(
-    const ContinuousIndexType& cindex) const
+  FloatType EvaluateAtContinuousIndex(
+    const ContinuousIndexType& cindex) const ITK_OVERRIDE
   {
     IndexType index;
     this->ConvertContinuousIndexToNearestIndex(cindex, index);
@@ -103,8 +103,8 @@ public:
 
 protected:
   GroundSpacingImageFunction();
-  virtual ~GroundSpacingImageFunction(){}
-  void PrintSelf(std::ostream& os, itk::Indent indent) const;
+  ~GroundSpacingImageFunction() ITK_OVERRIDE{}
+  void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
 
 private:
   GroundSpacingImageFunction(const Self &);  //purposely not implemented
diff --git a/Modules/Filtering/Statistics/include/otbPatternSampler.h b/Modules/Filtering/Statistics/include/otbPatternSampler.h
index e341f1ef7e8a9a88764621140ddbb6eb9f0375d3..418bc968908ae66f0bff39d3ec2de6d7297bb7c1 100644
--- a/Modules/Filtering/Statistics/include/otbPatternSampler.h
+++ b/Modules/Filtering/Statistics/include/otbPatternSampler.h
@@ -86,7 +86,7 @@ public:
   /**
    * Method that resets the internal state of the sampler
    */
-  virtual void Reset(void);
+  void Reset(void) ITK_OVERRIDE;
 
   /**
    * Method to call during iteration, returns true if the sample is selected,
@@ -115,7 +115,7 @@ protected:
   PatternSampler();
 
   /** Destructor */
-  virtual ~PatternSampler() {}
+  ~PatternSampler() ITK_OVERRIDE {}
 
 private:
   // Not implemented
diff --git a/Modules/Filtering/Statistics/include/otbPeriodicSampler.h b/Modules/Filtering/Statistics/include/otbPeriodicSampler.h
index 64b12e111b7c490d86fc49207330285bf3c15e4d..3940bcd796b022d9d9ff7d9dbff42bacd9255fc4 100644
--- a/Modules/Filtering/Statistics/include/otbPeriodicSampler.h
+++ b/Modules/Filtering/Statistics/include/otbPeriodicSampler.h
@@ -80,7 +80,7 @@ public:
   /**
    * Method that resets the internal state of the sampler
    */
-  virtual void Reset(void);
+  void Reset(void) ITK_OVERRIDE;
   
   /**
    * Method to call during iteration, returns true if the sample is selected,
@@ -93,7 +93,7 @@ protected:
   PeriodicSampler();
    
   /** Destructor */
-  virtual ~PeriodicSampler() {}
+  ~PeriodicSampler() ITK_OVERRIDE {}
 
 private:
   // Not implemented
diff --git a/Modules/Filtering/Statistics/include/otbRandomSampler.h b/Modules/Filtering/Statistics/include/otbRandomSampler.h
index e132c6bee12ab11aefaf3d4f9b1a90aa8553eb09..66c1fafe71621329175a7d2a8dcea46b6909807a 100644
--- a/Modules/Filtering/Statistics/include/otbRandomSampler.h
+++ b/Modules/Filtering/Statistics/include/otbRandomSampler.h
@@ -77,7 +77,7 @@ public:
   /**
    * Reset internal counter (to be called before starting iteration)
    */
-  virtual void Reset(void);
+  void Reset(void) ITK_OVERRIDE;
 
   /**
    * Method to call during iteration, returns true if the sample is selected,
@@ -90,7 +90,7 @@ protected:
   RandomSampler();
    
   /** Destructor */
-  virtual ~RandomSampler() {}
+  ~RandomSampler() ITK_OVERRIDE {}
 
 private:
   // Not implemented
diff --git a/Modules/Filtering/Statistics/include/otbSamplerBase.h b/Modules/Filtering/Statistics/include/otbSamplerBase.h
index c152a86d8348796ba921a376932a937e2a10eb2e..b84785326bf3cc8a2ca52a96948940ef81ffd6f0 100644
--- a/Modules/Filtering/Statistics/include/otbSamplerBase.h
+++ b/Modules/Filtering/Statistics/include/otbSamplerBase.h
@@ -75,7 +75,7 @@ protected:
   SamplerBase();
    
   /** Destructor */
-  virtual ~SamplerBase() {}
+  ~SamplerBase() ITK_OVERRIDE {}
   
   /** Current count of selected elements */
   unsigned long m_ChosenElements;
diff --git a/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToReaderOptions.h b/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToReaderOptions.h
index 6807d7ede382deb80ba22ad4f0a2e32b64c9a19f..9deb9696f39eb45d0b3d9f80cdff2fc81154f00f 100644
--- a/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToReaderOptions.h
+++ b/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToReaderOptions.h
@@ -68,7 +68,7 @@ public:
   };
 
   /* Set Methods */
-  virtual void SetExtendedFileName(const char * extFname);
+  void SetExtendedFileName(const char * extFname) ITK_OVERRIDE;
   /* Get Methods */
   bool SimpleFileNameIsSet () const;
   bool ExtGEOMFileNameIsSet () const;
diff --git a/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToWriterOptions.h b/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToWriterOptions.h
index 65438ed281874b42309d46e783288e0806094f8e..3bcab732599dd4c1a95572e35070a68b5824f26a 100644
--- a/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToWriterOptions.h
+++ b/Modules/IO/ExtendedFilename/include/otbExtendedFilenameToWriterOptions.h
@@ -73,7 +73,7 @@ public:
   };
 
   /* Set Methods */
-  virtual void SetExtendedFileName(const char * extFname);
+  void SetExtendedFileName(const char * extFname) ITK_OVERRIDE;
   /* Get Methods */
   bool SimpleFileNameIsSet () const;
   bool WriteGEOMFileIsSet () const;
diff --git a/Modules/Learning/Sampling/include/otbImageSampleExtractorFilter.h b/Modules/Learning/Sampling/include/otbImageSampleExtractorFilter.h
index e0cc84306641eae3f726dd8beaf5c47ed6e575af..ed224e52b2863e2129d58fc384dd326fe683bd0c 100644
--- a/Modules/Learning/Sampling/include/otbImageSampleExtractorFilter.h
+++ b/Modules/Learning/Sampling/include/otbImageSampleExtractorFilter.h
@@ -70,10 +70,10 @@ public:
   /** Get the output samples OGR container */
   ogr::DataSource* GetOutputSamples();
 
-  virtual void Synthetize(void){}
+  void Synthetize(void) ITK_OVERRIDE{}
 
   /** Reset method called before starting the streaming*/
-  virtual void Reset(void);
+  void Reset(void) ITK_OVERRIDE;
   
   itkSetMacro(SampleFieldPrefix, std::string);
   itkGetMacro(SampleFieldPrefix, std::string);
@@ -88,14 +88,14 @@ protected:
   /** Constructor */
   PersistentImageSampleExtractorFilter();
   /** Destructor */
-  virtual ~PersistentImageSampleExtractorFilter() {}
+  ~PersistentImageSampleExtractorFilter() ITK_OVERRIDE {}
 
-  virtual void GenerateOutputInformation();
+  void GenerateOutputInformation() ITK_OVERRIDE;
 
-  virtual void GenerateInputRequestedRegion();
+  void GenerateInputRequestedRegion() ITK_OVERRIDE;
 
   /** process only points */
-  virtual void ThreadedGenerateVectorData(const ogr::Layer& layerForThread, itk::ThreadIdType threadid);
+  void ThreadedGenerateVectorData(const ogr::Layer& layerForThread, itk::ThreadIdType threadid) ITK_OVERRIDE;
 
 private:
   PersistentImageSampleExtractorFilter(const Self &); //purposely not implemented
@@ -175,7 +175,7 @@ protected:
   /** Constructor */
   ImageSampleExtractorFilter() {}
   /** Destructor */
-  virtual ~ImageSampleExtractorFilter() {}
+  ~ImageSampleExtractorFilter() ITK_OVERRIDE {}
 
 private:
   ImageSampleExtractorFilter(const Self &); //purposely not implemented
diff --git a/Modules/Learning/Sampling/include/otbOGRDataToSamplePositionFilter.h b/Modules/Learning/Sampling/include/otbOGRDataToSamplePositionFilter.h
index 7e7b9b92db373bb732e6f988413adddd032c8853..a654b79d75b633632c07d569ff3e8cf75cc0a3ff 100644
--- a/Modules/Learning/Sampling/include/otbOGRDataToSamplePositionFilter.h
+++ b/Modules/Learning/Sampling/include/otbOGRDataToSamplePositionFilter.h
@@ -85,10 +85,10 @@ public:
   /** Runtime information support. */
   itkTypeMacro(PersistentOGRDataToSamplePositionFilter, PersistentSamplingFilterBase);
 
-  virtual void Synthetize(void){}
+  void Synthetize(void) ITK_OVERRIDE{}
 
   /** Reset method called before starting the streaming*/
-  virtual void Reset(void);
+  void Reset(void) ITK_OVERRIDE;
 
   /** Get a reference to the internal samplers at a given level */
   SamplerMapType& GetSamplers(unsigned int level);
@@ -112,7 +112,7 @@ public:
 
   /** Make a DataObject of the correct type to be used as the specified
    * output. */
-  virtual itk::DataObject::Pointer MakeOutput(DataObjectPointerArraySizeType idx);
+  itk::DataObject::Pointer MakeOutput(DataObjectPointerArraySizeType idx) ITK_OVERRIDE;
   using Superclass::MakeOutput;
 
   /** Get/Set of the field name storing the original FID of each sample */
@@ -123,18 +123,18 @@ protected:
   /** Constructor */
   PersistentOGRDataToSamplePositionFilter();
   /** Destructor */
-  virtual ~PersistentOGRDataToSamplePositionFilter() {}
+  ~PersistentOGRDataToSamplePositionFilter() ITK_OVERRIDE {}
 
   /** Call samplers on a current position, for a given class */
-  virtual void ProcessSample(const ogr::Feature& feature,
+  void ProcessSample(const ogr::Feature& feature,
                              typename TInputImage::IndexType& imgIndex,
                              typename TInputImage::PointType& imgPoint,
-                             itk::ThreadIdType& threadid);
+                             itk::ThreadIdType& threadid) ITK_OVERRIDE;
 
   /** Method to split the input OGRDataSource
    *  according to the class partition
    */
-  virtual void DispatchInputVectors(void);
+  void DispatchInputVectors(void) ITK_OVERRIDE;
 
 private:
   PersistentOGRDataToSamplePositionFilter(const Self &); //purposely not implemented
@@ -249,7 +249,7 @@ protected:
   /** Constructor */
   OGRDataToSamplePositionFilter() {}
   /** Destructor */
-  virtual ~OGRDataToSamplePositionFilter() {}
+  ~OGRDataToSamplePositionFilter() ITK_OVERRIDE {}
 
 private:
   OGRDataToSamplePositionFilter(const Self &); //purposely not implemented
diff --git a/Modules/Learning/Sampling/include/otbPersistentSamplingFilterBase.h b/Modules/Learning/Sampling/include/otbPersistentSamplingFilterBase.h
index 37d40fa88eb2eec057c274655bb7f1480515df55..8d2c1a2ca1cd49bda0bf07eed1b2b8c2a2397b6f 100644
--- a/Modules/Learning/Sampling/include/otbPersistentSamplingFilterBase.h
+++ b/Modules/Learning/Sampling/include/otbPersistentSamplingFilterBase.h
@@ -94,21 +94,21 @@ protected:
   /** Constructor */
   PersistentSamplingFilterBase();
   /** Destructor */
-  virtual ~PersistentSamplingFilterBase() {}
+  ~PersistentSamplingFilterBase() ITK_OVERRIDE {}
 
   /** Use the same output information as input image, check the field index
    *  and the mask footprint */
-  virtual void GenerateOutputInformation();
+  void GenerateOutputInformation() ITK_OVERRIDE;
 
   /** Use an empty region to input image (pixel values not needed) and set
    *  the requested region for the mask */
-  virtual void GenerateInputRequestedRegion();
+  void GenerateInputRequestedRegion() ITK_OVERRIDE;
 
   /** Generate data should thread over */
-  virtual void GenerateData(void);
+  void GenerateData(void) ITK_OVERRIDE;
 
   /** Allocate in-memory layers for input and outputs */
-  virtual void AllocateOutputs(void);
+  void AllocateOutputs(void) ITK_OVERRIDE;
 
   /** Start of main processing loop */
   virtual void ThreadedGenerateVectorData(const ogr::Layer& layerForThread, itk::ThreadIdType threadid);
diff --git a/Modules/Learning/Sampling/include/otbSamplingRateCalculator.h b/Modules/Learning/Sampling/include/otbSamplingRateCalculator.h
index 7150b5259057068fa24d74f7da5f9bca99544445..2c8dcc60d8049b2d0a4a4bfc8fd408daabbdaf6a 100644
--- a/Modules/Learning/Sampling/include/otbSamplingRateCalculator.h
+++ b/Modules/Learning/Sampling/include/otbSamplingRateCalculator.h
@@ -107,10 +107,10 @@ protected:
   SamplingRateCalculator();
 
   /** Destructor */
-  virtual ~SamplingRateCalculator() {}
+  ~SamplingRateCalculator() ITK_OVERRIDE {}
 
   /**PrintSelf method */
-  virtual void PrintSelf(std::ostream& os, itk::Indent indent) const;
+  void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
 
 private:
   SamplingRateCalculator(const Self &);    //purposely not implemented
diff --git a/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx b/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx
index 899a5a25066ddb9d0d77a8dd5d687f1bcfc5caa8..eb9e9b67bde62baa2f027ce1aa772504e35e8bb3 100644
--- a/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx
+++ b/Modules/Learning/Supervised/include/otbImageClassificationFilter.txx
@@ -281,6 +281,10 @@ ImageClassificationFilter<TInputImage, TOutputImage, TMaskImage>
        
       ++labIt;    
       }
+    else
+      {
+      labelValue = m_DefaultLabel;
+      }
     
     outIt.Set(labelValue);
 
diff --git a/Modules/Radiometry/OpticalCalibration/test/CMakeLists.txt b/Modules/Radiometry/OpticalCalibration/test/CMakeLists.txt
index 88720f365603eb50d286fffdea28ad0275ced292..ed2ab9c439808b3163c3c579fa010f26b3393a32 100644
--- a/Modules/Radiometry/OpticalCalibration/test/CMakeLists.txt
+++ b/Modules/Radiometry/OpticalCalibration/test/CMakeLists.txt
@@ -235,10 +235,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${TOULOUSEQBDIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${TOULOUSEQBDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoQuickbirdPAN.tif ${TOULOUSEQBDIR}/02APR01105228-P1BS-000000128955_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${TOULOUSEQBDIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoQuickbirdPAN.tif ${TOULOUSEQBDIR}/02APR01105228-P1BS-000000128955_01_P001.TIF)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoQuickbirdPAN COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${TOULOUSEQBDIR}/raTvSMALLTOULOUSELuminanceToImageImageFilterAutoQuickbirdPAN.tif
@@ -255,10 +253,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${TOULOUSEQBDIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_MUL)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${TOULOUSEQBDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoQuickbirdXS.tif ${TOULOUSEQBDIR}/02APR01105228-M1BS-000000128955_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${TOULOUSEQBDIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoQuickbirdXS.tif ${TOULOUSEQBDIR}/02APR01105228-M1BS-000000128955_01_P001.TIF)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoQuickbirdXS COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${TOULOUSEQBDIR}/raTvSMALLTOULOUSELuminanceToImageImageFilterAutoQuickbirdXS.tif
@@ -274,10 +270,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${ROMEWV2DIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_MUL)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${ROMEWV2DIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoWV2Multi.tif ${ROMEWV2DIR}/09DEC10103019-M2AS-052298844010_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${ROMEWV2DIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoWV2Multi.tif ${ROMEWV2DIR}/09DEC10103019-M2AS-052298844010_01_P001.TIF)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoWV2MULTI COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${ROMEWV2DIR}/raTvSMALLROMELuminanceToImageImageFilterAutoWV2Multi.tif
@@ -292,10 +286,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   set(BLOSSEVILLEIKONOSDIR ${TEMP}/OpticalCalibLumToImIkonos)
   file(MAKE_DIRECTORY ${BLOSSEVILLEIKONOSDIR})
   file(GLOB MTDATA ${OTB_DATA_LARGEINPUT_ROOT}/IKONOS/BLOSSEVILLE/*metadata.txt ${OTB_DATA_LARGEINPUT_ROOT}/IKONOS/BLOSSEVILLE/*pan*)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${BLOSSEVILLEIKONOSDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoIkonos.tif ${BLOSSEVILLEIKONOSDIR}/po_2619900_pan_0000000.tif COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${BLOSSEVILLEIKONOSDIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoIkonos.tif ${BLOSSEVILLEIKONOSDIR}/po_2619900_pan_0000000.tif)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoIkonos COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BLOSSEVILLEIKONOSDIR}/raTvSMALLBLOSSEVILLELuminanceToImageImageFilterAutoIkonos.tif
@@ -310,10 +302,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   set(TEHERANSPOT5DIR ${TEMP}/OpticalCalibLumToImSPOT5)
   file(MAKE_DIRECTORY ${TEHERANSPOT5DIR})
   file(GLOB MTDATA ${OTB_DATA_LARGEINPUT_ROOT}/SPOT5/TEHERAN/*.DIM)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${TEHERANSPOT5DIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoSpot5.tif ${TEHERANSPOT5DIR}/IMAGERY.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${TEHERANSPOT5DIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoSpot5.tif ${TEHERANSPOT5DIR}/IMAGERY.TIF)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoSpot5 COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${TEHERANSPOT5DIR}/raTvSMALLTEHERANLuminanceToImageImageFilterAutoSpot5.img
@@ -329,10 +319,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${ROMEWV2DIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_PAN)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${ROMEWV2DIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoWV2PAN.tif ${ROMEWV2DIR}/09DEC10103019-P2AS-052298844010_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${ROMEWV2DIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoWV2PAN.tif ${ROMEWV2DIR}/09DEC10103019-P2AS-052298844010_01_P001.TIF)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoWV2PAN COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${ROMEWV2DIR}/raTvSMALLROMELuminanceToImageImageFilterAutoWV2PAN.tif
@@ -348,10 +336,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${SUDOUESTFORMOSATDIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/FORMOSAT/Sudouest_20071013_MS_fmsat)
   file(GLOB MTDATA ${MTDATADIR}/*.DIM)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${SUDOUESTFORMOSATDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvImageToLuminanceImageFilterAutoFormosat.tif ${SUDOUESTFORMOSATDIR}/IMAGERY.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${SUDOUESTFORMOSATDIR})
+  otb_copy_rename(${BASELINE}/raTvImageToLuminanceImageFilterAutoFormosat.tif ${SUDOUESTFORMOSATDIR}/IMAGERY.TIF)
 
   otb_add_test(NAME raTvLuminanceToImageImageFilterAutoFORMOSAT COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${SUDOUESTFORMOSATDIR}/raTvSMALLSOLuminanceToImageImageFilterAutoFormosat.img
@@ -367,10 +353,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${TOULOUSEQBDIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${TOULOUSEQBDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoQuickbirdPAN.tif ${TOULOUSEQBDIR}/02APR01105228-P1BS-000000128955_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${TOULOUSEQBDIR})
+  otb_copy_rename(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoQuickbirdPAN.tif ${TOULOUSEQBDIR}/02APR01105228-P1BS-000000128955_01_P001.TIF)
 
   otb_add_test(NAME raTvReflectanceToLuminanceImageFilterAutoQuickbirdPAN COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoQuickbirdPAN.tif
@@ -384,10 +368,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${ROMEWV2DIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_PAN)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${ROMEWV2DIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoWV2PAN.tif ${ROMEWV2DIR}/09DEC10103019-P2AS-052298844010_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${ROMEWV2DIR})
+  otb_copy_rename(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoWV2PAN.tif ${ROMEWV2DIR}/09DEC10103019-P2AS-052298844010_01_P001.TIF)
 
   otb_add_test(NAME raTvReflectanceToLuminanceImageFilterAutoWV2PAN COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoWV2PAN.tif
@@ -400,10 +382,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   set(TEHERANSPOT5DIR ${TEMP}/OpticalCalibRefToLumSPOT5)
   file(MAKE_DIRECTORY ${TEHERANSPOT5DIR})
   file(GLOB MTDATA ${OTB_DATA_LARGEINPUT_ROOT}/SPOT5/TEHERAN/*.DIM)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${TEHERANSPOT5DIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoSpot5.tif ${TEHERANSPOT5DIR}/IMAGERY.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${TEHERANSPOT5DIR})
+  otb_copy_rename(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoSpot5.tif ${TEHERANSPOT5DIR}/IMAGERY.TIF)
 
   otb_add_test(NAME raTvReflectanceToLuminanceImageFilterAutoSpot5 COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoSpot5.tif
@@ -416,10 +396,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   set(BLOSSEVILLEIKONOSDIR ${TEMP}/OpticalCalibRefToLumIkonos)
   file(MAKE_DIRECTORY ${BLOSSEVILLEIKONOSDIR})
   file(GLOB MTDATA ${OTB_DATA_LARGEINPUT_ROOT}/IKONOS/BLOSSEVILLE/*metadata.txt ${OTB_DATA_LARGEINPUT_ROOT}/IKONOS/BLOSSEVILLE/*pan*)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${BLOSSEVILLEIKONOSDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoIkonos.tif ${BLOSSEVILLEIKONOSDIR}/po_2619900_pan_0000000.tif COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${BLOSSEVILLEIKONOSDIR})
+  otb_copy_rename(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoIkonos.tif ${BLOSSEVILLEIKONOSDIR}/po_2619900_pan_0000000.tif)
 
   otb_add_test(NAME raTvReflectanceToLuminanceImageFilterAutoIkonos COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoIkonos.tif
@@ -433,10 +411,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${TOULOUSEQBDIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_MUL)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${TOULOUSEQBDIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoQuickbirdXS.tif ${TOULOUSEQBDIR}/02APR01105228-M1BS-000000128955_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${TOULOUSEQBDIR})
+  otb_copy_rename(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoQuickbirdXS.tif ${TOULOUSEQBDIR}/02APR01105228-M1BS-000000128955_01_P001.TIF)
 
   otb_add_test(NAME raTvReflectanceToLuminanceImageFilterAutoQuickbirdXS COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoQuickbirdXS.tif
@@ -450,10 +426,8 @@ if(OTB_DATA_USE_LARGEINPUT)
   file(MAKE_DIRECTORY ${ROMEWV2DIR})
   set(MTDATADIR ${OTB_DATA_LARGEINPUT_ROOT}/WORLDVIEW2/ROME/WV-2_standard_8band_bundle_16bit/052298844010_01_P001_MUL)
   file(GLOB MTDATA ${MTDATADIR}/*TIL ${MTDATADIR}/*RPB ${MTDATADIR}/*XML ${MTDATADIR}/*IMD)
-  foreach(f ${MTDATA})
-    configure_file(${f} ${ROMEWV2DIR} COPYONLY)
-  endforeach(f)
-  configure_file(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoWV2Multi.tif ${ROMEWV2DIR}/09DEC10103019-M2AS-052298844010_01_P001.TIF COPYONLY)
+  file(COPY ${MTDATA} DESTINATION ${ROMEWV2DIR})
+  otb_copy_rename(${BASELINE}/raTvLuminanceToReflectanceImageFilterAutoWV2Multi.tif ${ROMEWV2DIR}/09DEC10103019-M2AS-052298844010_01_P001.TIF)
 
   otb_add_test(NAME raTvReflectanceToLuminanceImageFilterAutoWV2MULTI COMMAND otbOpticalCalibrationTestDriver
     --compare-image ${EPSILON_12}  ${BASELINE}/raTvImageToLuminanceImageFilterAutoWV2Multi.tif
diff --git a/Modules/Remote/Mosaic.remote.cmake b/Modules/Remote/Mosaic.remote.cmake
index 12a21582d1bc2b94f5316b234153c805f2d51cff..1989f99e313c74ee177e5b50b8faa3220d9baeb4 100644
--- a/Modules/Remote/Mosaic.remote.cmake
+++ b/Modules/Remote/Mosaic.remote.cmake
@@ -5,5 +5,5 @@ A more detailed description can be found on the project website:
 https://github.com/remicres/otb-mosaic
 "
   GIT_REPOSITORY https://github.com/remicres/otb-mosaic.git
-  GIT_TAG 64cb06798fb237e10f929c1adaab37441e09fbc3
+  GIT_TAG 9a8cdd63ed3bba500bb4ea3867abc38bce8be562
 )
diff --git a/Modules/Remote/otb-bv.remote.cmake b/Modules/Remote/otb-bv.remote.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..f699009f62157dc925cb290851f91d83bddc38f9
--- /dev/null
+++ b/Modules/Remote/otb-bv.remote.cmake
@@ -0,0 +1,9 @@
+#Contact: Jordi Inglada  <jordi.inglada@cesbio.eu>
+otb_fetch_module(OTBBioVars
+  "Biophysical variable estimation from remote sensing imagery.
+A more detailed description can be found on the project website:
+http://tully.ups-tlse.fr/jordi/otb-bv
+"
+  GIT_REPOSITORY http://tully.ups-tlse.fr/jordi/otb-bv.git
+  GIT_TAG master
+)
diff --git a/Modules/Remote/phenotb.remote.cmake b/Modules/Remote/phenotb.remote.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..3640ef3cfa99b6039f8f1010ab5ecb4daa8ffaa7
--- /dev/null
+++ b/Modules/Remote/phenotb.remote.cmake
@@ -0,0 +1,11 @@
+#Contact: Jordi Inglada  <jordi.inglada@cesbio.eu>
+otb_fetch_module(OTBPhenology
+  "This module implements several algorithms allowing to extract phenological
+  information from time profiles. These time profiles should represent
+  vegetation status as for instance NDVI, LAI, etc.
+A more detailed description can be found on the project website:
+http://tully.ups-tlse.fr/jordi/phenotb
+"
+  GIT_REPOSITORY http://tully.ups-tlse.fr/jordi/phenotb.git
+  GIT_TAG master
+)
diff --git a/Modules/Visualization/Ice/src/otbGlImageActor.cxx b/Modules/Visualization/Ice/src/otbGlImageActor.cxx
index 6e1cb6568718b3f018bae20e508b9f0e8f35bd02..f95da4257f877da2ca46469cbdbc9e5367340f84 100644
--- a/Modules/Visualization/Ice/src/otbGlImageActor.cxx
+++ b/Modules/Visualization/Ice/src/otbGlImageActor.cxx
@@ -1037,7 +1037,12 @@ void GlImageActor::UpdateResolution()
     m_CurrentResolution = newResolution;
     
     std::ostringstream extFilename;
-    extFilename<<m_FileName<<"?&resol="<<m_CurrentResolution;
+    extFilename<<m_FileName;
+    if ( m_FileName.find('?') == std::string::npos )
+      {
+      extFilename << '?';
+      }
+    extFilename<<"&resol="<<m_CurrentResolution;
 
     m_FileReader->SetFileName(extFilename.str());
     m_FileReader->GetOutput()->UpdateOutputInformation();
@@ -1180,7 +1185,12 @@ void GlImageActor::AutoColorAdjustment( double & minRed, double & maxRed,
       resol = m_AvailableResolutions.size()-1;
       }
 
-    extFilename<<m_FileName<<"?&resol="<<m_AvailableResolutions[resol];
+    extFilename<<m_FileName;
+    if ( m_FileName.find('?') == std::string::npos )
+      {
+      extFilename << '?';
+      }
+    extFilename<<"&resol="<<m_AvailableResolutions[resol];
     reader->SetFileName(extFilename.str());
 
     ExtractROIFilterType::Pointer extract = ExtractROIFilterType::New();
diff --git a/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx b/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx
index 8c27068e262bce18844d61d29d5a0707ebaba9c6..633c95605770ad16d9df1e9a86d471f40ea1c07c 100644
--- a/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx
+++ b/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx
@@ -679,7 +679,12 @@ void NonOptGlImageActor::UpdateResolution()
   m_CurrentResolution = closest;
 
   std::ostringstream extFilename;
-  extFilename<<m_FileName<<"?&resol="<<m_CurrentResolution;
+  extFilename<<m_FileName;
+  if ( m_FileName.find('?') == std::string::npos )
+    {
+    extFilename << '?';
+    }
+  extFilename<<"&resol="<<m_CurrentResolution;
 
   // std::cout<<"Extfname = "<<extFilename.str()<<std::endl;
 
diff --git a/Modules/Visualization/Mapla/include/mvdMaplaApplication.h b/Modules/Visualization/Mapla/include/mvdMaplaApplication.h
index 687aed14723a69551e736f05f02e8066d29728e1..0ebb64e9ec0d771ff47546624fc74332aaa3742e 100644
--- a/Modules/Visualization/Mapla/include/mvdMaplaApplication.h
+++ b/Modules/Visualization/Mapla/include/mvdMaplaApplication.h
@@ -98,7 +98,7 @@ public:
   MaplaApplication( QApplication* qtApp );
 
   /** \brief Destructor. */
-  virtual ~MaplaApplication();
+  ~MaplaApplication() ITK_OVERRIDE;
 
   //
   // STATIC METHODS.
@@ -141,7 +141,7 @@ protected:
 // Protected attributes.
 protected:
 
-  void virtual_InitializeCore();
+  void virtual_InitializeCore() ITK_OVERRIDE;
 
   /*-[ PRIVATE SECTION ]-----------------------------------------------------*/
 
diff --git a/Modules/Visualization/Mapla/include/mvdMaplaMainWindow.h b/Modules/Visualization/Mapla/include/mvdMaplaMainWindow.h
index 139b5372c2bc40b0c89f7f5a9d3762c7f5cc0fab..ac1f5e67f9356ec83f3009ce075e056963dbcb7b 100644
--- a/Modules/Visualization/Mapla/include/mvdMaplaMainWindow.h
+++ b/Modules/Visualization/Mapla/include/mvdMaplaMainWindow.h
@@ -102,7 +102,7 @@ public:
   MaplaMainWindow( QWidget* Parent =0, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~MaplaMainWindow();
+  ~MaplaMainWindow() ITK_OVERRIDE;
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
 
@@ -117,9 +117,9 @@ signals:
 protected:
 
   //
-  // QMainWindow overrides.
+  // QMainWindow methods.
 
-  void closeEvent( QCloseEvent* event );
+  void closeEvent( QCloseEvent* event ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
@@ -133,11 +133,11 @@ protected slots:
 
   /**
    */
-  void OnAboutToChangeModel( const AbstractModel* );
+  void OnAboutToChangeModel( const AbstractModel* ) ITK_OVERRIDE;
 
   /**
    */
-  void OnModelChanged( AbstractModel* );
+  void OnModelChanged( AbstractModel* ) ITK_OVERRIDE;
 
   /**
    */
@@ -174,11 +174,11 @@ private:
   void InitializeCentralWidget();
 
   //
-  // I18nMainWindow overrides.
+  // I18nMainWindow methods.
 
-  virtual void virtual_SetupUI();
+  void virtual_SetupUI() ITK_OVERRIDE;
 
-  virtual void virtual_ConnectUI();
+  void virtual_ConnectUI() ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/RELEASE_NOTES_MVD.txt b/Modules/Visualization/Monteverdi/RELEASE_NOTES_MVD.txt
similarity index 100%
rename from RELEASE_NOTES_MVD.txt
rename to Modules/Visualization/Monteverdi/RELEASE_NOTES_MVD.txt
diff --git a/Modules/Visualization/Monteverdi/include/mvdApplication.h b/Modules/Visualization/Monteverdi/include/mvdApplication.h
index ed8f6b0abe0c64da4e77102cff13291dd5bbae19..2ab8ed241fec09b8f571123ccb43846ea0f44757 100644
--- a/Modules/Visualization/Monteverdi/include/mvdApplication.h
+++ b/Modules/Visualization/Monteverdi/include/mvdApplication.h
@@ -97,7 +97,7 @@ public:
   Application( QApplication* qtApp );
 
   /** \brief Destructor. */
-  virtual ~Application();
+  ~Application() ITK_OVERRIDE;
 
   /**
    * \return The number of outdated dataset-models present in the
@@ -158,7 +158,7 @@ protected:
 // Protected attributes.
 protected:
 
-  void virtual_InitializeCore();
+  void virtual_InitializeCore() ITK_OVERRIDE;
 
   /*-[ PRIVATE SECTION ]-----------------------------------------------------*/
 
diff --git a/Modules/Visualization/Monteverdi/include/mvdMainWindow.h b/Modules/Visualization/Monteverdi/include/mvdMainWindow.h
index 14571d0663e57aa4fe7d0b70a00affdf53adf882..5e5080fc4217ddf9b93a5e76dd6b00e7708cf8a0 100644
--- a/Modules/Visualization/Monteverdi/include/mvdMainWindow.h
+++ b/Modules/Visualization/Monteverdi/include/mvdMainWindow.h
@@ -122,7 +122,7 @@ public:
   MainWindow( QWidget* p =0, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~MainWindow();
+  ~MainWindow() ITK_OVERRIDE;
 
   /**
    */
@@ -178,9 +178,9 @@ protected:
   using I18nMainWindow::ImportImage;
 
   //
-  // QMainWindow overrides.
+  // QMainWindow methods.
 
-  void closeEvent( QCloseEvent* event );
+  void closeEvent( QCloseEvent* event ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
@@ -194,11 +194,11 @@ protected slots:
 
   /**
    */
-  void OnAboutToChangeModel( const AbstractModel * );
+  void OnAboutToChangeModel( const AbstractModel * ) ITK_OVERRIDE;
 
   /**
    */
-  void OnModelChanged( AbstractModel * );
+  void OnModelChanged( AbstractModel * ) ITK_OVERRIDE;
 
   /**
    */
@@ -331,13 +331,13 @@ private:
   void SetGLSLEnabled( bool );
 
   //
-  // I18nMainWindow overrides.
+  // I18nMainWindow methods.
 
-  virtual void virtual_SetupUI();
+  void virtual_SetupUI() ITK_OVERRIDE;
 
-  virtual void virtual_ConnectUI();
+  void virtual_ConnectUI() ITK_OVERRIDE;
 
-  virtual void virtual_InitializeUI();
+  void virtual_InitializeUI() ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/Monteverdi/include/mvdPreferencesDialog.h b/Modules/Visualization/Monteverdi/include/mvdPreferencesDialog.h
index 24a7f9adff761991ea99bd39dc17d59a14589673..da8752d389d2b63fd0b428797ba1ad5e21249218 100644
--- a/Modules/Visualization/Monteverdi/include/mvdPreferencesDialog.h
+++ b/Modules/Visualization/Monteverdi/include/mvdPreferencesDialog.h
@@ -90,7 +90,7 @@ public:
   PreferencesDialog( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** Destructor */
-  virtual ~PreferencesDialog();
+  ~PreferencesDialog() ITK_OVERRIDE;
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
 
diff --git a/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx b/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx
index 33edeb7f5136601316b1d5028d0cc2c25e70da5c..56bdd63d89d06cc464745b2215315cb36f8dd3d7 100644
--- a/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx
+++ b/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx
@@ -1130,7 +1130,10 @@ MainWindow
     if( importDialog->HasSubDatasets() )
       {
       if( importDialog->exec()==QDialog::Rejected )
-	return 0;
+        {
+        delete importDialog;
+        return 0;
+        }
 
       IntVector::size_type count = 0;
       IntVector indices;
@@ -1142,12 +1145,17 @@ MainWindow
 	   ++ i )
 	count +=
 	  ImportImage(
-	    QString( "%1?&sdataidx=%2" ).arg( filename ).arg( indices[ i ] ),
+	    QString( "%1%2&sdataidx=%3" ).arg( filename ).arg( filename.count(QChar('?')) ? "" : "?" ).arg( indices[ i ] ),
 	    index + count
 	  );
 
+      delete importDialog;
       return count;
       }
+    else
+      {
+      delete importDialog;
+      }
   }
   // CDS import.
   //
@@ -1232,8 +1240,6 @@ MainWindow
   if( imageModel==NULL )
     return 0;
 
-  otb::SetWorkingDir( filename );
-
   //
   // Bypass rendering of image-views.
   assert( m_ImageView!=NULL );
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdAbstractImageModel.h b/Modules/Visualization/MonteverdiCore/include/mvdAbstractImageModel.h
index ff1a797972564ffc8ae7d53827bffc3b76b446a0..bc63bc117bafe075732e064e12cd3fac64766f0f 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdAbstractImageModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdAbstractImageModel.h
@@ -169,7 +169,7 @@ public:
 public:
 
   /** Destructor */
-  virtual ~AbstractImageModel();
+  ~AbstractImageModel() ITK_OVERRIDE;
 
   /** */
   inline int GetId() const;
@@ -318,9 +318,9 @@ protected:
     GetMetaDataInterface() const;
 
   //
-  // AbstractModel overrides.
+  // AbstractModel methods.
 
-  virtual void virtual_BuildModel( void* context );
+  void virtual_BuildModel( void* context ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h b/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h
index a038ba4c8d29d9613d0ab471785fe32922e653be..4b3575e00bf2b92341bdc43bc58084cb8a2a993c 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdAbstractLayerModel.h
@@ -119,7 +119,7 @@ class OTBMonteverdiCore_EXPORT AbstractLayerModel :
 public:
 
   /** \brief Destructor. */
-  virtual ~AbstractLayerModel();
+  ~AbstractLayerModel() ITK_OVERRIDE;
 
   /**
    */
@@ -190,7 +190,7 @@ private:
 
   //
   // VisibleInterface overloads.
-  virtual void virtual_SignalVisibilityChanged( bool );
+  void virtual_SignalVisibilityChanged( bool ) ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdAbstractModel.h b/Modules/Visualization/MonteverdiCore/include/mvdAbstractModel.h
index 4574923bdc15334ed0e40d9e7eb9e5bdb0f67198..90a5a4137b8d007cdb6b64f0c5120f5374daed19 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdAbstractModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdAbstractModel.h
@@ -89,7 +89,7 @@ class OTBMonteverdiCore_EXPORT AbstractModel :
 public:
 
   /** Destructor */
-  virtual ~AbstractModel();
+  ~AbstractModel() ITK_OVERRIDE;
 
   /** */
   template< typename TModel >
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdAbstractWorker.h b/Modules/Visualization/MonteverdiCore/include/mvdAbstractWorker.h
index ba0d5b178b0f0b21a8a8df10980dac7c73908d0a..f691db82338ee3302bf0b27cfab6071c27be37bd 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdAbstractWorker.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdAbstractWorker.h
@@ -89,7 +89,7 @@ class OTBMonteverdiCore_EXPORT AbstractWorker :
 public:
 
   /** \brief Destructor. */
-  virtual ~AbstractWorker();
+  ~AbstractWorker() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdApplicationsBrowser.h b/Modules/Visualization/MonteverdiCore/include/mvdApplicationsBrowser.h
index 17c06b638e6a1273370a9263c483d775b6f573ac..ce8ce1002fb035a26fd567d8200caf29f2eb6d8f 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdApplicationsBrowser.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdApplicationsBrowser.h
@@ -110,7 +110,7 @@ public:
   ApplicationsBrowser( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~ApplicationsBrowser();
+  ~ApplicationsBrowser() ITK_OVERRIDE;
 
   /** set the path where to look for applications */
   void SetAutoLoadPath(const std::string & itk_auto_load_path);
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdBackgroundTask.h b/Modules/Visualization/MonteverdiCore/include/mvdBackgroundTask.h
index 9781590752f76fbe71c0c7dde4e3f11193b18c20..da91ad440a0a5d745c6bf693d6129b90dfa99655 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdBackgroundTask.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdBackgroundTask.h
@@ -98,7 +98,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~BackgroundTask();
+  ~BackgroundTask() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdHistogramModel.h b/Modules/Visualization/MonteverdiCore/include/mvdHistogramModel.h
index adc0e3f1aee0bccbdeeef81870ebe42cb39cdd1d..b39590e6ef4ddf7b5130adeb0da2f5357882b048 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdHistogramModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdHistogramModel.h
@@ -140,8 +140,7 @@ public:
     // Public methods.
   public:
     /** \brief Constructor. */
-    BuildContext( bool isBeingStored,
-		  const QString& filename =QString() ) :
+    BuildContext( bool isBeingStored, const QString& filename =QString() ) :
       m_Filename( filename ),
       m_IsBeingStored( isBeingStored )
     {
@@ -174,7 +173,7 @@ public:
   HistogramModel( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~HistogramModel();
+  ~HistogramModel() ITK_OVERRIDE;
 
   /**
    */
@@ -191,10 +190,10 @@ public:
   MeasurementType Quantile( CountType band, double p, Bound bound ) const;
 
   /** */
-  double
-    Percentile( CountType band,
-		MeasurementType intensity,
-		Bound bound ) const;
+  double Percentile(
+    CountType band,
+    MeasurementType intensity,
+    Bound bound ) const;
 
   /** */
   inline VectorPixelType GetMinPixel() const;
@@ -208,13 +207,14 @@ public:
 
   /**
    */
-  void GetData( CountType band,
-		double * const x,
-		double * const y,
-		double& xMin,
-		double& xMax,
-		double& yMin,
-		double& yMax ) const;
+  void GetData(
+    CountType band,
+    double * const x,
+    double * const y,
+    double& xMin,
+    double& xMax,
+    double& yMin,
+    double& yMax ) const;
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
 
@@ -229,10 +229,10 @@ signals:
 protected:
 
   //
-  // AbstractModel overrides.
+  // AbstractModel methods.
 
   /** */
-  virtual void virtual_BuildModel( void* context =NULL );
+  void virtual_BuildModel( void* context =NULL ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
@@ -271,12 +271,12 @@ private:
     void template_BuildModel_M( BuildContext * =NULL );
 
   //
-  // SerializableInterface overrides.
+  // SerializableInterface methods.
   //
 
-  virtual void virtual_Read( QIODevice* device );
+  void virtual_Read( QIODevice* device ) ITK_OVERRIDE;
 
-  virtual void virtual_Write( QIODevice& device ) const;
+  void virtual_Write( QIODevice& device ) const ITK_OVERRIDE;
 
 //
 // Private attributes.
@@ -509,7 +509,6 @@ HistogramModel
   CountType components = imageModel->ToImage()->GetNumberOfComponentsPerPixel();
   assert( components>0 );
 
-  //
   // Always initialize min and Max pixels.
 
   m_MinPixel = DefaultImageType::PixelType( components );
@@ -520,7 +519,6 @@ HistogramModel
 
   try
     {
-    //
     // 1st pass: process min/MAX for each band.
 
     qDebug() << QString( "%1: Pass #1 - finding pixel min/maxes..." )
@@ -529,17 +527,12 @@ HistogramModel
     lPass1.start();
 
     // Define histogram-filter type.
-    typedef
-      otb::StreamingHistogramVectorImageFilter<
-	typename TImageModel::SourceImageType >
-      HistogramFilter;
-
+    typedef otb::StreamingHistogramVectorImageFilter<
+      typename TImageModel::SourceImageType > HistogramFilter;
 
     // Connect statistics pipe-section.
-    typedef
-      otb::StreamingStatisticsVectorImageFilter<
-	typename TImageModel::SourceImageType >
-      StatisticsFilter;
+    typedef otb::StreamingStatisticsVectorImageFilter<
+      typename TImageModel::SourceImageType > StatisticsFilter;
 
     typename StatisticsFilter::Pointer filterStats( StatisticsFilter::New() );
 
@@ -585,63 +578,87 @@ HistogramModel
       // qDebug() << "#" << i << ": " << n;
 
       if( n <= 1.0 )
-	{
-	bins[ i ] = 1;
-	}
+        {
+        bins[ i ] = 1;
+        }
       else
-	{
-	RealType sigma = sqrt( covariance( i, i ) );
-
-	// qDebug() << "#" << i << ":" << sigma;
-
-	assert( sigma >= 0.0 );
-
-	if( sigma<=0.0 )
-	  {
-	  bins[ i ] = 1;
-	  }
-	else
-	  {
-	  // Scott's formula
-	  // See http://en.wikipedia.org/wiki/Histogram#Number_of_bins_and_width
-	  RealType h = 3.5 * sigma / pow( n, 1.0 / 3.0 );
-
-	  /*
-	    qDebug()
-	    << "#" << i
-	    << ": h = pow(" << n << "," << 1.0 / 3.0 << ") ="
-	    << h;
-
-	    qDebug()
-	    << "#" << i
-	    << ": bins[" << i << "] = ceil( ("
-	    << m_MaxPixel[ i ] << "-" << m_MinPixel[ i ] << ") / " << h << ") ="
-	    << ceil( ( m_MaxPixel[ i ] - m_MinPixel[ i ] ) / h );
-	  */
-
-	  bins[ i ] = ceil( ( maxPixel[ i ] - minPixel[ i ] ) / h );
-	  }
-	}
+        {
+        RealType sigma = sqrt( covariance( i, i ) );
+
+        // qDebug() << "#" << i << ":" << sigma;
+
+        assert( sigma >= 0.0 );
+
+        if( sigma<=0.0 )
+          {
+          bins[ i ] = 1;
+          }
+        else
+          {
+          // Scott's formula
+          // See http://en.wikipedia.org/wiki/Histogram#Number_of_bins_and_width
+          RealType h = 3.5 * sigma / pow( n, 1.0 / 3.0 );
+
+          /*
+            qDebug()
+            << "#" << i
+            << ": h = pow(" << n << "," << 1.0 / 3.0 << ") ="
+            << h;
+
+            qDebug()
+            << "#" << i
+            << ": bins[" << i << "] = ceil( ("
+            << m_MaxPixel[ i ] << "-" << m_MinPixel[ i ] << ") / " << h << ") ="
+            << ceil( ( m_MaxPixel[ i ] - m_MinPixel[ i ] ) / h );
+          */
+
+          bins[ i ] = ceil( ( maxPixel[ i ] - minPixel[ i ] ) / h );
+
+          // at least 1 bin is needed
+          bins[i] = std::max(bins[i],1U);
+          }
+        }
 
       // MANTIS-1275
       // {
-      if( minPixel[ i ]==maxPixel[ i ] )	
-	{
-	double epsilon = HistogramModel::GetEpsilon();
-
-	if( minPixel[ i ] >=
-	    std::numeric_limits< DefaultImageType::PixelType::ValueType >::min() + epsilon )
-	  minPixel[ i ] -= epsilon;
-
-	if( maxPixel[ i ] <=
-	      std::numeric_limits< DefaultImageType::PixelType::ValueType >::max() - epsilon )
-	    maxPixel[ i ] += epsilon;
-	}
+      if( minPixel[ i ]==maxPixel[ i ] )
+        {
+        double epsilon = HistogramModel::GetEpsilon();
+
+        // make sure the epsilon is not hidden when using large values
+        if( boost::is_floating_point< DefaultImageType::PixelType::ValueType >::value )
+          {
+          double absValue = vcl_abs(minPixel[i]);
+          // compute smallest epsilon for absolute pixel value (1.5 factor is for safety)
+          double limitEpsilon = absValue *
+            (double)std::numeric_limits<DefaultImageType::PixelType::ValueType>::epsilon()
+            * 1.5;
+          epsilon = std::max(epsilon,limitEpsilon);
+          }
+
+        double lowerBound;
+        // With C++11, we can use std::numeric_limits<>::lowest()
+        if( boost::is_floating_point< DefaultImageType::PixelType::ValueType >::value )
+          {
+          lowerBound = epsilon - std::numeric_limits< DefaultImageType::PixelType::ValueType >::max();
+          }
+        else
+          {
+          lowerBound = std::numeric_limits< DefaultImageType::PixelType::ValueType >::min() + epsilon;
+          }
+        double upperBound = std::numeric_limits< DefaultImageType::PixelType::ValueType >::max() - epsilon;
+
+        if( minPixel[ i ] >= lowerBound )
+            minPixel[ i ] -= epsilon;
+
+        if( maxPixel[ i ] <= upperBound )
+            maxPixel[ i ] += epsilon;
+        }
       // }
       //
       }
 
-    // std::cout << bins;
+    // std::cout << "Number of bins : "<< bins << std::endl;
 
     qDebug() << QString( "%1: Pass #1 - done (%2 ms)." )
       .arg( QDateTime::currentDateTime().toString( Qt::ISODate ) )
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdI18nCoreApplication.h b/Modules/Visualization/MonteverdiCore/include/mvdI18nCoreApplication.h
index fc572d7bfad803488d5ae3879f68dc04eb1b2bae..e0e7930270cd8dfe98365cc172bdeb0ad7963a4e 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdI18nCoreApplication.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdI18nCoreApplication.h
@@ -140,7 +140,7 @@ public:
   I18nCoreApplication( QCoreApplication* qtApp );
 
   /** \brief Destructor. */
-  virtual ~I18nCoreApplication();
+  ~I18nCoreApplication() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdImageImporter.h b/Modules/Visualization/MonteverdiCore/include/mvdImageImporter.h
index 84bbb42ff59164bcae32b2c51d424e91e7f9bd2f..74631e0c6b224c8efa702285cc79c7ab2ebfc4a2 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdImageImporter.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdImageImporter.h
@@ -120,7 +120,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~ImageImporter();
+  ~ImageImporter() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -175,9 +175,9 @@ private:
   //
   // AbstractWorker oveloads.
 
-  QObject* virtual_Do();
+  QObject* virtual_Do() ITK_OVERRIDE;
 
-  QString virtual_GetFirstProgressText() const;
+  QString virtual_GetFirstProgressText() const ITK_OVERRIDE;
 
 
 //
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdMyClass.h b/Modules/Visualization/MonteverdiCore/include/mvdMyClass.h
index f87a20dcdf898e73f9211834696d09d6c50ddfc1..3887c8255f89e4a1eb835ea9074cf69a19425a31 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdMyClass.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdMyClass.h
@@ -92,7 +92,7 @@ public:
   MyClass( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~MyClass();
+  ~MyClass() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdOverviewBuilder.h b/Modules/Visualization/MonteverdiCore/include/mvdOverviewBuilder.h
index b5fc5b3308ee6dacc0bd375412000ab2c75dae36..2dac8a76f16ea88be67086049f6dd3b880528f8c 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdOverviewBuilder.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdOverviewBuilder.h
@@ -108,12 +108,12 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~OverviewBuilder();
+  ~OverviewBuilder() ITK_OVERRIDE;
 
   //
   // ProgressInterface overloads.
 
-  virtual void SetProgress( double );
+  void SetProgress( double ) ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -164,9 +164,9 @@ private:
   //
   // AbstractWorker oveloads.
 
-  QObject * virtual_Do();
+  QObject * virtual_Do() ITK_OVERRIDE;
 
-  QString virtual_GetFirstProgressText() const;
+  QString virtual_GetFirstProgressText() const ITK_OVERRIDE;
 
 
 //
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdProcessObjectObserver.h b/Modules/Visualization/MonteverdiCore/include/mvdProcessObjectObserver.h
index 472f7fa0e57ea66fd4a105ab2f92ed3f894f0d76..1fba5bcae565825aea0c9ad6eb251d14b43f918a 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdProcessObjectObserver.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdProcessObjectObserver.h
@@ -99,7 +99,7 @@ public:
 public:
 
   /** \brief Destructor. */
-  virtual ~ProcessObjectObserver();
+  ~ProcessObjectObserver() ITK_OVERRIDE;
 
   const ProgressInterface * GetProgressInterface() const;
   ProgressInterface * GetProgressInterface();
@@ -109,11 +109,11 @@ public:
   //
   // itk::Command overloads.
 
-  virtual void Execute( itk::Object * caller,
-			const itk::EventObject & event );
+  void Execute( itk::Object * caller,
+			const itk::EventObject & event ) ITK_OVERRIDE;
 
-  virtual void Execute( const itk::Object * caller,
-			const itk::EventObject & event );
+  void Execute( const itk::Object * caller,
+			const itk::EventObject & event ) ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdQuicklookModel.h b/Modules/Visualization/MonteverdiCore/include/mvdQuicklookModel.h
index 7f08dbf0dcaefca43888615e921d6f20161dc780..04452beb6b2e1347e7dbfc42013dd0447254cb29 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdQuicklookModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdQuicklookModel.h
@@ -98,7 +98,7 @@ public:
   QuicklookModel( QObject* p =NULL );
 
   /** Destructor */
-  virtual ~QuicklookModel();
+  ~QuicklookModel() ITK_OVERRIDE;
 
   /**
    * \brief Get the parent image-model of this quicklook image as an
@@ -159,7 +159,7 @@ signals:
 protected:
 
   /** */
-  virtual void virtual_BuildModel( void* context =NULL );
+  void virtual_BuildModel( void* context =NULL ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h b/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h
index b14a6d7ecb8a5eea4d12246ae33b3bd5c28fdfaa..34b5e501f569f77f32401a0a79ebfaf6a00fbe04 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdStackedLayerModel.h
@@ -114,7 +114,7 @@ public:
   StackedLayerModel( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~StackedLayerModel();
+  ~StackedLayerModel() ITK_OVERRIDE;
 
   inline const AbstractLayerModel * operator[]( SizeType ) const;
   inline AbstractLayerModel * operator[]( SizeType );
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdSystemError.h b/Modules/Visualization/MonteverdiCore/include/mvdSystemError.h
index 80c7df45aa1d2d8cda2aece187786aaaf41145f4..c8f8f4ae79b64ff53143505f5665f7efb402bf5b 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdSystemError.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdSystemError.h
@@ -94,7 +94,7 @@ public:
         + ": " + message) {};
 
   /** \brief Destructor. */
-  virtual ~SystemError() throw() {};
+  ~SystemError() throw() ITK_OVERRIDE {};
 
   /*-[ PROTECTED SECTION ]---------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdVectorImageModel.h b/Modules/Visualization/MonteverdiCore/include/mvdVectorImageModel.h
index 95fc79cc079756ba114332dad08e1a0107d30fcb..17f5b984bb2ab1c804fa1e65ac53b8609ce9403c 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdVectorImageModel.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdVectorImageModel.h
@@ -116,7 +116,7 @@ public:
   VectorImageModel( QObject* p =NULL );
 
   /** Destructor */
-  virtual ~VectorImageModel();
+  ~VectorImageModel() ITK_OVERRIDE;
 
   /** */
   static void EnsureValidImage( const QString& filename );
@@ -159,22 +159,22 @@ public:
   CountType ComputeBestLod( int width, int height ) const;
 
   //
-  // AbstractImageModel overrides.
+  // AbstractImageModel methods.
 
   /**
    * Get the number of available LOD.
    */
-  virtual CountType GetNbLod() const;
+  CountType GetNbLod() const ITK_OVERRIDE;
 
   /**
    * Get a smart-pointer to the current LOD image-base.
    */
-  virtual ImageBaseType::ConstPointer ToImageBase() const;
+  ImageBaseType::ConstPointer ToImageBase() const ITK_OVERRIDE;
 
   /**
    * Get a smart-pointer to the current LOD image-base.
    */
-  virtual ImageBaseType::Pointer ToImageBase();
+  ImageBaseType::Pointer ToImageBase() ITK_OVERRIDE;
 
   /**
    * Get the placename from the center pixel
@@ -182,11 +182,11 @@ public:
   std::string GetCenterPixelPlaceName();
 
   //
-  // AbstractModel overrides.
+  // AbstractModel methods.
 
-  virtual bool IsModified() const;
+  bool IsModified() const ITK_OVERRIDE;
 
-  virtual void ClearModified();
+  void ClearModified() ITK_OVERRIDE;
 
   // get image size in byte
   std::streamoff GetImageSizeInBytes()
@@ -238,12 +238,12 @@ signals:
 protected:
 
   //
-  // AbstractModel overrides.
+  // AbstractModel methods.
 
-  virtual void virtual_BuildModel( void* context =NULL );
+  void virtual_BuildModel( void* context =NULL ) ITK_OVERRIDE;
 
   //
-  // AbstractImageModel overrides.
+  // AbstractImageModel methods.
 
   void InitializeColorSetupSettings();
 
@@ -288,20 +288,20 @@ private:
   void BuildGdalOverviews();
 
   //
-  // AbstractLayerModel overrides.
+  // AbstractLayerModel methods.
 
-  virtual std::string virtual_GetWkt() const;
-  virtual bool virtual_HasKwl() const;
-  virtual void virtual_ToWgs84( const PointType &,
+  std::string virtual_GetWkt() const ITK_OVERRIDE;
+  bool virtual_HasKwl() const ITK_OVERRIDE;
+  void virtual_ToWgs84( const PointType &,
 				PointType &,
-				double & alt ) const;
+				double & alt ) const ITK_OVERRIDE;
 
   //
-  // AbstractImageModel overrides.
+  // AbstractImageModel methods.
 
-  virtual void virtual_SetCurrentLod( CountType lod );
+  void virtual_SetCurrentLod( CountType lod ) ITK_OVERRIDE;
 
-  virtual void virtual_RefreshHistogram();
+  void virtual_RefreshHistogram() ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiCore/include/mvdVectorImageSettings.h b/Modules/Visualization/MonteverdiCore/include/mvdVectorImageSettings.h
index 3d088566639cd592ec68b0ad387c3c40e0e65f2b..8532f8a5705912ea2a9f70fbd52d65a630cd4753 100644
--- a/Modules/Visualization/MonteverdiCore/include/mvdVectorImageSettings.h
+++ b/Modules/Visualization/MonteverdiCore/include/mvdVectorImageSettings.h
@@ -108,7 +108,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~VectorImageSettings();
+  ~VectorImageSettings() ITK_OVERRIDE;
 
   /**
    * \brief Assignment operator.
diff --git a/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx b/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx
index 956d96906dfee243403c325336c9d7a21f49efc2..d891e8f687524d9f39a5d47d6aee028eade4c47b 100644
--- a/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx
+++ b/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx
@@ -173,8 +173,11 @@ VectorImageModel
     );
 
     QString fname = filename;
-    
-    imageFileReader->SetFileName( QFile::encodeName( fname.append(QString("?&skipgeom=true"))).constData());
+    if (!filename.contains(QChar('?')))
+      {
+      fname.append(QChar('?'));
+      }
+    imageFileReader->SetFileName( QFile::encodeName( fname.append(QString("&skipgeom=true"))).constData());
     imageFileReader->GetOutput()->UpdateOutputInformation();
     }
 
@@ -538,7 +541,12 @@ VectorImageModel
   QString lodFilename( GetFilename() );
 
   // If model is a multi-resolution image.
-  lodFilename.append( QString( "?&resol=%1" ).arg( lod ) );
+  if (lodFilename.count(QChar('?')) == 0)
+    {
+    // the filename is not an extended filename yet
+    lodFilename.append( QChar('?') );
+    }
+  lodFilename.append( QString( "&resol=%1" ).arg( lod ) );
 
   // Update m_ImageFileReader
   m_ImageFileReader->SetFileName( QFile::encodeName( lodFilename ).constData() );
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdAboutDialog.h b/Modules/Visualization/MonteverdiGui/include/mvdAboutDialog.h
index 54b4c9ae9fa7065fc03e768448b680f02569e34c..45a2320400ac55681807b1a607f3be82772b19ac 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdAboutDialog.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdAboutDialog.h
@@ -75,7 +75,7 @@ public:
   AboutDialog( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** Destructor */
-  virtual ~AboutDialog();
+  ~AboutDialog() ITK_OVERRIDE;
 
 //
 // SIGNALS.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdAbstractDragAndDropEventFilter.h b/Modules/Visualization/MonteverdiGui/include/mvdAbstractDragAndDropEventFilter.h
index 8ea62eeea3c215cc288fde12009597efcb2e01de..95a09b5cc9634ea4b4bd3318e61498d4b0e07755 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdAbstractDragAndDropEventFilter.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdAbstractDragAndDropEventFilter.h
@@ -88,7 +88,7 @@ class OTBMonteverdiGUI_EXPORT AbstractDragAndDropEventFilter :
 public:
 
   /** \brief Destructor. */
-  virtual ~AbstractDragAndDropEventFilter();
+  ~AbstractDragAndDropEventFilter() ITK_OVERRIDE;
 
   //
   // QObject overloads.
@@ -96,7 +96,7 @@ public:
   /**
    * \see http://qt-project.org/doc/qt-4.8/qobject.html#eventFilter
    */
-  virtual bool eventFilter( QObject* watched, QEvent* event );
+  bool eventFilter( QObject* watched, QEvent* event ) ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewManipulator.h b/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewManipulator.h
index 4df51314ef5848b7a80b843870e98cf611788023..32b2470021305f6edbc1609cc31ce2d34feb613a 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewManipulator.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewManipulator.h
@@ -88,7 +88,7 @@ class OTBMonteverdiGUI_EXPORT AbstractImageViewManipulator :
 public:
 
   /** \brief Destructor. */
-  virtual ~AbstractImageViewManipulator() {};
+  ~AbstractImageViewManipulator() ITK_OVERRIDE {};
 
   //
   // Accessors
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewRenderer.h b/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewRenderer.h
index b851ef4ef9c835efb1e8a2502b05357a29b1caaa..eb134a54cf085801af2270b074a0e23ae206a928 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewRenderer.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdAbstractImageViewRenderer.h
@@ -120,7 +120,7 @@ public:
   /**
    * Destructor.
    */
-  virtual ~AbstractImageViewRenderer(){};
+  ~AbstractImageViewRenderer() ITK_OVERRIDE{};
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdAbstractModelController.h b/Modules/Visualization/MonteverdiGui/include/mvdAbstractModelController.h
index 0161558c649a2069538bbe203071c562cced8b20..acda4b35af2c5c7f7a58f41fbf0c337a61339e56 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdAbstractModelController.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdAbstractModelController.h
@@ -88,7 +88,7 @@ public:
 public:
 
   /** Destructor */
-  virtual ~AbstractModelController();
+  ~AbstractModelController() ITK_OVERRIDE;
 
   /** */
   void SetModel( AbstractModel* );
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdApplicationLauncher.h b/Modules/Visualization/MonteverdiGui/include/mvdApplicationLauncher.h
index 8d37a1f4cb0bffd394dbe8fe3047f90ac7929069..0b7314fca264e0a6b9500205139cc2335299cc90 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdApplicationLauncher.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdApplicationLauncher.h
@@ -94,7 +94,7 @@ public:
   ApplicationLauncher( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~ApplicationLauncher();
+  ~ApplicationLauncher() ITK_OVERRIDE;
 
   /**
    * \return A new instance of the automatically-generated widget of
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBox.h b/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBox.h
index 285b90e49e7a8843efde76dd80dc891db231ff2e..d9938fb2bdc1c73668dd3cd3708fcb7278d65b5e 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBox.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBox.h
@@ -97,7 +97,7 @@ public:
   ApplicationsToolBox( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~ApplicationsToolBox();
+  ~ApplicationsToolBox() ITK_OVERRIDE;
 
   /** Get TreeWidget */
   // QTreeWidget * GetAlgorithmsTree();
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBoxController.h b/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBoxController.h
index ddc85dcb2cd828f61dac6a58f32cc766ebc263f2..329d38982dbdedf9ad0394da20c5d0cd3003cf1c 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBoxController.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdApplicationsToolBoxController.h
@@ -103,7 +103,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~ApplicationsToolBoxController();
+  ~ApplicationsToolBoxController() ITK_OVERRIDE;
 
   /** Get the seleceted application Gui */
   // QWidget * GetSelectedApplicationWidget(const QString& appName);
@@ -122,15 +122,15 @@ signals:
 protected:
 
   //
-  // AbstractModelController overrides.
+  // AbstractModelController methods.
 
-  virtual void Connect( AbstractModel* );
+  void Connect( AbstractModel* ) ITK_OVERRIDE;
 
-  virtual void ClearWidget();
+  void ClearWidget() ITK_OVERRIDE;
 
-  virtual void virtual_ResetWidget( bool );
+  void virtual_ResetWidget( bool ) ITK_OVERRIDE;
 
-  virtual void Disconnect( AbstractModel* );
+  void Disconnect( AbstractModel* ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdColorBandDynamicsWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdColorBandDynamicsWidget.h
index 3f061378b76340f2aa1c5be2270f2475b5e51245..3a86a1a59c649c0aeb83108de92cf86c4b9f17f6 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdColorBandDynamicsWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdColorBandDynamicsWidget.h
@@ -140,7 +140,7 @@ public:
   ColorBandDynamicsWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** Destructor */
-  virtual ~ColorBandDynamicsWidget();
+  ~ColorBandDynamicsWidget() ITK_OVERRIDE;
 
   /** */
   RgbwChannel GetChannelLabel() const;
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsController.h b/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsController.h
index 6c7fe1976d812f1fc00f3a804a86c110dfce1a95..7cad6250f3710ea8bf6f4c3f9b8cc70170f26ebd 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsController.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsController.h
@@ -96,7 +96,7 @@ public:
   ColorDynamicsController( ColorDynamicsWidget* widget, QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~ColorDynamicsController();
+  ~ColorDynamicsController() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]-----------------------------------------------**/
 
@@ -164,15 +164,15 @@ protected:
 private:
 
   //
-  // AbstractModelController overrides.
+  // AbstractModelController methods.
 
-  virtual void Connect( AbstractModel* );
+  void Connect( AbstractModel* ) ITK_OVERRIDE;
 
-  virtual void ClearWidget();
+  void ClearWidget() ITK_OVERRIDE;
 
-  virtual void virtual_ResetWidget( bool );
+  void virtual_ResetWidget( bool ) ITK_OVERRIDE;
 
-  virtual void Disconnect( AbstractModel* );
+  void Disconnect( AbstractModel* ) ITK_OVERRIDE;
 
   /**
    * \brief Reset intensity ranges to default values for given RGB
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsWidget.h
index 4a7e369b03383f54234043b72b66d337fcb9218b..3182a3ed839a5e3929f5c7679705d97fe368b3d0 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdColorDynamicsWidget.h
@@ -120,7 +120,7 @@ public:
   ColorDynamicsWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** Destructor. */
-  virtual ~ColorDynamicsWidget();
+  ~ColorDynamicsWidget() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdColorSetupController.h b/Modules/Visualization/MonteverdiGui/include/mvdColorSetupController.h
index 1e69365042dc46145c83d67dda54fc0e87037400..16033b236dc5adfa3e8a329050432374dc2fb554 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdColorSetupController.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdColorSetupController.h
@@ -98,7 +98,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~ColorSetupController();
+  ~ColorSetupController() ITK_OVERRIDE;
 
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
@@ -164,15 +164,15 @@ private:
   void ResetAlpha();
 
   //
-  // AbstractModelController overrides.
+  // AbstractModelController methods.
 
-  virtual void Connect( AbstractModel* );
+  void Connect( AbstractModel* ) ITK_OVERRIDE;
 
-  virtual void ClearWidget();
+  void ClearWidget() ITK_OVERRIDE;
 
-  virtual void virtual_ResetWidget( bool );
+  void virtual_ResetWidget( bool ) ITK_OVERRIDE;
 
-  virtual void Disconnect( AbstractModel* );
+  void Disconnect( AbstractModel* ) ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdColorSetupWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdColorSetupWidget.h
index 0d97e51aac60fcb92834186512a55c2f6b45557e..25276a2257c4248216a28b1f1fd853e24487b442 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdColorSetupWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdColorSetupWidget.h
@@ -87,7 +87,7 @@ public:
   ColorSetupWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~ColorSetupWidget();
+  ~ColorSetupWidget() ITK_OVERRIDE;
 
   /**
    * \brief Set the component-name list.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdDoubleValidator.h b/Modules/Visualization/MonteverdiGui/include/mvdDoubleValidator.h
index 059eff94ffa00a8fe10bee133ee00fdf1d42c50b..f223b3eb1ef704992969b48c35ff25191d43897c 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdDoubleValidator.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdDoubleValidator.h
@@ -97,12 +97,12 @@ public:
 		   QObject *p = 0 );
 
   /** \brief Destructor. */
-  virtual ~DoubleValidator();
+  ~DoubleValidator() ITK_OVERRIDE;
 
   //
   // QDoubleValidator overloads.
 
-  virtual void fixup( QString& input ) const;
+  void fixup( QString& input ) const ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdDropLineEdit.h b/Modules/Visualization/MonteverdiGui/include/mvdDropLineEdit.h
index 93e0debc805886ba75ec5f24c70f2af914763df7..df6957042469754e957a53d7c87779269df83c8d 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdDropLineEdit.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdDropLineEdit.h
@@ -98,7 +98,7 @@ public:
   DropLineEdit( const QString& contents, QWidget* p =0 );
 
   /** \brief Destructor. */
-  virtual ~DropLineEdit();
+  ~DropLineEdit() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -118,9 +118,9 @@ signals:
 // Protected methods.
 protected:
 
-  virtual void dragEnterEvent( QDragEnterEvent* event );
-  virtual void dragMoveEvent( QDragMoveEvent* event );
-  virtual void dropEvent( QDropEvent* event );
+  void dragEnterEvent( QDragEnterEvent* event ) ITK_OVERRIDE;
+  void dragMoveEvent( QDragMoveEvent* event ) ITK_OVERRIDE;
+  void dropEvent( QDropEvent* event ) ITK_OVERRIDE;
 
   /*-[ PRIVATE SECTION ]-----------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdFilenameDragAndDropEventFilter.h b/Modules/Visualization/MonteverdiGui/include/mvdFilenameDragAndDropEventFilter.h
index eafa6c6a272260e58a149424b23ffc6cb4cca383..893b2a7bed7d737558e0975ce715d18645ba98ea 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdFilenameDragAndDropEventFilter.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdFilenameDragAndDropEventFilter.h
@@ -91,7 +91,7 @@ public:
   FilenameDragAndDropEventFilter( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~FilenameDragAndDropEventFilter();
+  ~FilenameDragAndDropEventFilter() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -123,22 +123,22 @@ protected:
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dragEnterEvent
    */
-  virtual bool DragEnterEvent( QObject* object, QDragEnterEvent* event );
+  bool DragEnterEvent( QObject* object, QDragEnterEvent* event ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dragLeaveEvent
    */
-  virtual bool DragLeaveEvent( QObject* object, QDragLeaveEvent* event );
+  bool DragLeaveEvent( QObject* object, QDragLeaveEvent* event ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dragMoveEvent
    */
-  virtual bool DragMoveEvent( QObject* object, QDragMoveEvent* event );
+  bool DragMoveEvent( QObject* object, QDragMoveEvent* event ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dropEvent
    */
-  virtual bool DropEvent( QObject* object, QDropEvent* event );
+  bool DropEvent( QObject* object, QDropEvent* event ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdHistogramController.h b/Modules/Visualization/MonteverdiGui/include/mvdHistogramController.h
index a23adcc36ae5386c9a14302aa96d9ed2e83cb987..f16157b2d2b3786e2810c7520405d0d4f0b42485 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdHistogramController.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdHistogramController.h
@@ -99,7 +99,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~HistogramController();
+  ~HistogramController() ITK_OVERRIDE;
 
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
@@ -130,15 +130,15 @@ private:
   void ResetWidget( RgbwChannel channel );
 
   //
-  // AbstractModelController overrides.
+  // AbstractModelController methods.
 
-  virtual void Connect( AbstractModel* );
+  void Connect( AbstractModel* ) ITK_OVERRIDE;
 
-  virtual void ClearWidget();
+  void ClearWidget() ITK_OVERRIDE;
 
-  virtual void virtual_ResetWidget( bool = false );
+  void virtual_ResetWidget( bool = false ) ITK_OVERRIDE;
 
-  virtual void Disconnect( AbstractModel* );
+  void Disconnect( AbstractModel* ) ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdHistogramPlotPicker.h b/Modules/Visualization/MonteverdiGui/include/mvdHistogramPlotPicker.h
index b600f6f489b2b3cf24f2be081658213a2501e96c..baf88090a364e608899a3dbb406e19969084055a 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdHistogramPlotPicker.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdHistogramPlotPicker.h
@@ -121,7 +121,7 @@ public:
 		       QwtPlotCanvas* canvas );
 
   /** \brief Destructor. */
-  virtual ~HistogramPlotPicker();
+  ~HistogramPlotPicker() ITK_OVERRIDE;
 
   /**
    */
@@ -132,9 +132,9 @@ public:
   void SetGrayscaleActivated( bool activated );
 
   //
-  // QwtPlotPicker overrides.
+  // QwtPlotPicker methods.
 
-  void drawRubberBand( QPainter* painter ) const;
+  void drawRubberBand( QPainter* painter ) const ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -155,11 +155,11 @@ signals:
 protected:
 
   //
-  // QwtPlotPicker overrides.
+  // QwtPlotPicker methods.
 
   using QwtPlotPicker::trackerText;
 
-  virtual QwtText trackerText( const QwtDoublePoint & ) const;
+  QwtText trackerText( const QwtDoublePoint & ) const ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdHistogramWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdHistogramWidget.h
index d41059107d219cb89459686dc7e5349f4cd04ae9..bd114881c37843116fd57df1eeb89b605c7f80c0 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdHistogramWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdHistogramWidget.h
@@ -113,7 +113,7 @@ public:
   HistogramWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~HistogramWidget();
+  ~HistogramWidget() ITK_OVERRIDE;
 
   /**
    * \brief
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdI18nApplication.h b/Modules/Visualization/MonteverdiGui/include/mvdI18nApplication.h
index 39d1aa7c0b14371f644101d96615215660939686..162e97ca532f9eb4289f67a3a4edc062d77243f3 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdI18nApplication.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdI18nApplication.h
@@ -103,7 +103,7 @@ public:
   I18nApplication( QApplication* qtApp );
 
   /** \brief Destructor. */
-  virtual ~I18nApplication();
+  ~I18nApplication() ITK_OVERRIDE;
 
   //
   // APPLICATION SINGLETON.
@@ -145,7 +145,7 @@ signals:
 // Protected methods.
 protected:
 
-  virtual void virtual_InitializeCore();
+  void virtual_InitializeCore() ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdI18nMainWindow.h b/Modules/Visualization/MonteverdiGui/include/mvdI18nMainWindow.h
index 8662d42e5990d0013796274847cf9eadfd3b9995..6d2d8c58b54a7b7789df37da5669df1d8163fb26 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdI18nMainWindow.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdI18nMainWindow.h
@@ -101,7 +101,7 @@ public:
 // Public methods.
 public:
   /** \brief Destructor. */
-  virtual ~I18nMainWindow();
+  ~I18nMainWindow() ITK_OVERRIDE;
 
   /**
    */
@@ -190,9 +190,9 @@ protected:
   bool RestoreLayout( int version );
 
   //
-  // QMainWindow overrides.
+  // QMainWindow methods.
 
-  void closeEvent( QCloseEvent* event );
+  void closeEvent( QCloseEvent* event ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdImageViewManipulator.h b/Modules/Visualization/MonteverdiGui/include/mvdImageViewManipulator.h
index f758fd2fc0eff24ab993413f34d5cb98fe07b809..a564f07d7ffb0bb04a96274270df26fbd52d5db4 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdImageViewManipulator.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdImageViewManipulator.h
@@ -121,7 +121,7 @@ public:
 #endif // USE_VIEW_SETTINGS_SIDE_EFFECT
 
   /** \brief Destructor. */
-  virtual ~ImageViewManipulator();
+  ~ImageViewManipulator() ITK_OVERRIDE;
 
   //
   // AbstractImageViewManipulator overloads.
@@ -130,64 +130,64 @@ public:
   //
   // Accessors.
 
-  virtual void SetViewportSize( int width, int height );
+  void SetViewportSize( int width, int height ) ITK_OVERRIDE;
 
-  virtual SizeType GetViewportSize() const;
+  SizeType GetViewportSize() const ITK_OVERRIDE;
 
-  virtual void SetOrigin( const PointType& origin );
+  void SetOrigin( const PointType& origin ) ITK_OVERRIDE;
 
-  virtual PointType GetOrigin() const;
+  PointType GetOrigin() const ITK_OVERRIDE;
 
-  virtual void SetSpacing( const SpacingType& spacing );
+  void SetSpacing( const SpacingType& spacing ) ITK_OVERRIDE;
 
-  virtual SpacingType GetSpacing() const;
+  SpacingType GetSpacing() const ITK_OVERRIDE;
 
-  virtual void SetNativeSpacing( const SpacingType& );
+  void SetNativeSpacing( const SpacingType& ) ITK_OVERRIDE;
 
-  virtual void SetWkt( const std::string& wkt );
+  void SetWkt( const std::string& wkt ) ITK_OVERRIDE;
 
-  virtual void SetKeywordList(
+  void SetKeywordList(
     const DefaultImageType::ImageKeywordlistType& kwl
-  );
+  ) ITK_OVERRIDE;
 
-  virtual PointType GetCenter() const;
+  PointType GetCenter() const ITK_OVERRIDE;
 
-  virtual ZoomType GetFixedZoomType() const;
+  ZoomType GetFixedZoomType() const ITK_OVERRIDE;
 
   //
   // Controls.
 
-  virtual
+  
     void
     SetupRenderingContext(
-      AbstractImageViewRenderer::RenderingContext * const ) const;
+      AbstractImageViewRenderer::RenderingContext * const ) const ITK_OVERRIDE;
 
-  virtual void ZoomIn();
+  void ZoomIn() ITK_OVERRIDE;
 
-  virtual void ZoomOut();
+  void ZoomOut() ITK_OVERRIDE;
 
-  virtual const PointType& Transform( PointType&, const QPoint& ) const;
+  const PointType& Transform( PointType&, const QPoint& ) const ITK_OVERRIDE;
 
-  virtual void ResetViewport();
+  void ResetViewport() ITK_OVERRIDE;
 
   //
   // Events.
 
-  virtual void MouseMoveEvent( QMouseEvent* event );
+  void MouseMoveEvent( QMouseEvent* event ) ITK_OVERRIDE;
 
-  virtual void MousePressEvent( QMouseEvent* event );
+  void MousePressEvent( QMouseEvent* event ) ITK_OVERRIDE;
 
-  virtual void MouseReleaseEvent( QMouseEvent* event );
+  void MouseReleaseEvent( QMouseEvent* event ) ITK_OVERRIDE;
 
-  virtual void MouseDoubleClickEvent( QMouseEvent * );
+  void MouseDoubleClickEvent( QMouseEvent * ) ITK_OVERRIDE;
 
-  virtual void WheelEvent( QWheelEvent* event);
+  void WheelEvent( QWheelEvent* event) ITK_OVERRIDE;
 
-  virtual void ResizeEvent( QResizeEvent* event );
+  void ResizeEvent( QResizeEvent* event ) ITK_OVERRIDE;
 
-  virtual void KeyPressEvent( QKeyEvent* event );
+  void KeyPressEvent( QKeyEvent* event ) ITK_OVERRIDE;
 
-  virtual void KeyReleaseEvent( QKeyEvent* event );
+  void KeyReleaseEvent( QKeyEvent* event ) ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]-----------------------------------------------**/
 
@@ -198,9 +198,9 @@ public slots:
   //
   // AbstractImageViewManipulator overloads.
 
-  virtual void CenterOn( const PointType& point );
+  void CenterOn( const PointType& point ) ITK_OVERRIDE;
 
-  virtual void ZoomTo( double scale );
+  void ZoomTo( double scale ) ITK_OVERRIDE;
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdImageViewRenderer.h b/Modules/Visualization/MonteverdiGui/include/mvdImageViewRenderer.h
index a9409967357e3fb092fcd00d60d11b4018667eb5..adfe94490d0347e9c81d433a894ff7f136171a99 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdImageViewRenderer.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdImageViewRenderer.h
@@ -109,7 +109,7 @@ public:
 
     /**
      */
-    virtual ~RenderingContext();
+    ~RenderingContext() ITK_OVERRIDE;
 
     /**
      */
@@ -134,11 +134,11 @@ public:
   ImageViewRenderer( QObject* p = NULL );
 
   /** Destructor */
-  virtual ~ImageViewRenderer();
+  ~ImageViewRenderer() ITK_OVERRIDE;
 
   /**
    */
-  virtual bool CheckGLCapabilities( int * );
+  bool CheckGLCapabilities( int * ) ITK_OVERRIDE;
 
   /**
    */
@@ -150,45 +150,45 @@ public:
   //
   // AbstractImageViewRenderer overloads.
 
-  virtual bool GetLayerDynamics( const StackedLayerModel::KeyType & key,
+  bool GetLayerDynamics( const StackedLayerModel::KeyType & key,
 				 ParametersType & params,
-				 bool isGlobal ) const;
+				 bool isGlobal ) const ITK_OVERRIDE;
 
-  virtual const AbstractLayerModel* GetReferenceModel() const;
+  const AbstractLayerModel* GetReferenceModel() const ITK_OVERRIDE;
 
-  virtual AbstractLayerModel * GetReferenceModel();
+  AbstractLayerModel * GetReferenceModel() ITK_OVERRIDE;
 
-  virtual void GetLayerExtent( const StackedLayerModel::KeyType & key,
+  void GetLayerExtent( const StackedLayerModel::KeyType & key,
                                PointType& origin,
-                               PointType& extent ) const;
+                               PointType& extent ) const ITK_OVERRIDE;
 
-  virtual void GetReferenceExtent( PointType& origin,
-                                   PointType& extent ) const;
+  void GetReferenceExtent( PointType& origin,
+                                   PointType& extent ) const ITK_OVERRIDE;
 
-  virtual void GetViewExtent( PointType& origin,
-                              PointType& extent ) const;
+  void GetViewExtent( PointType& origin,
+                              PointType& extent ) const ITK_OVERRIDE;
 
-  virtual
-  AbstractImageViewRenderer::RenderingContext* NewRenderingContext() const;
+  
+  AbstractImageViewRenderer::RenderingContext* NewRenderingContext() const ITK_OVERRIDE;
 
-  virtual void InitializeGL();
+  void InitializeGL() ITK_OVERRIDE;
 
-  virtual void ResizeGL( int width, int height );
+  void ResizeGL( int width, int height ) ITK_OVERRIDE;
 
-  virtual
-  void PaintGL( const AbstractImageViewRenderer::RenderingContext* context );
+  
+  void PaintGL( const AbstractImageViewRenderer::RenderingContext* context ) ITK_OVERRIDE;
 
-  virtual void Pick( const PointType & view,
-                     PixelInfo::Vector & pixels ) const;
+  void Pick( const PointType & view,
+                     PixelInfo::Vector & pixels ) const ITK_OVERRIDE;
 
-  virtual void GetResolutions( PixelInfo::Vector & pixels ) const;
+  void GetResolutions( PixelInfo::Vector & pixels ) const ITK_OVERRIDE;
 
-  virtual bool TransformToView( PointType & point,
+  bool TransformToView( PointType & point,
 				const StackedLayerModel::KeyType &,
 				const IndexType &,
-				bool isPhysical ) const;
+				bool isPhysical ) const ITK_OVERRIDE;
 
-  virtual void SaveScreenshot( const QString & ) const;
+  void SaveScreenshot( const QString & ) const ITK_OVERRIDE;
 
   bool
     Reproject( PointType & center,
@@ -196,15 +196,15 @@ public:
                const PointType & vcenter,
                const SpacingType & vspacing ) const;
 
-  virtual bool IsEffectsEnabled() const;
+  bool IsEffectsEnabled() const ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
 // public slots
 public slots:
-  virtual void UpdatePixelInfo( const QPoint & screen,
+  void UpdatePixelInfo( const QPoint & screen,
 				const PointType & view,
-				const PixelInfo::Vector & pixels );
+				const PixelInfo::Vector & pixels ) ITK_OVERRIDE;
 
   /*-[ SIGNALS SECTION ]-----------------------------------------------------*/
 
@@ -269,24 +269,24 @@ private:
   //
   // AbstractImageViewRenderer overloads.
 
-  virtual void virtual_ClearScene( bool );
-  virtual void virtual_UpdateScene();
-  virtual void virtual_RefreshScene();
+  void virtual_ClearScene( bool ) ITK_OVERRIDE;
+  void virtual_UpdateScene() ITK_OVERRIDE;
+  void virtual_RefreshScene() ITK_OVERRIDE;
 
-  virtual bool virtual_ZoomToRegion( const PointType & origin,
+  bool virtual_ZoomToRegion( const PointType & origin,
 				     const PointType & extent,
 				     PointType & center,
-				     SpacingType & spacing ) const;
+				     SpacingType & spacing ) const ITK_OVERRIDE;
 
-  virtual bool virtual_ZoomToExtent( PointType & center, SpacingType & spacing ) const;
+  bool virtual_ZoomToExtent( PointType & center, SpacingType & spacing ) const ITK_OVERRIDE;
 
-  virtual bool virtual_ZoomToLayer( const StackedLayerModel::KeyType & key,
+  bool virtual_ZoomToLayer( const StackedLayerModel::KeyType & key,
 				    PointType & center,
-				    SpacingType & spacing ) const;
+				    SpacingType & spacing ) const ITK_OVERRIDE;
 
-  virtual bool virtual_ZoomToFull( const StackedLayerModel::KeyType & key,
+  bool virtual_ZoomToFull( const StackedLayerModel::KeyType & key,
 				   PointType & center,
-				   SpacingType & spacing ) const;
+				   SpacingType & spacing ) const ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdImageViewWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdImageViewWidget.h
index f47401c8e5c92927ecb8164f18d5ccac5ee9b463..add78b1cda507501b4a1eea6a4a5f33dfe63e2fb 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdImageViewWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdImageViewWidget.h
@@ -115,7 +115,7 @@ public:
                    Qt::WindowFlags f =0 );
 
   /** \brief Destructor. */
-  virtual ~ImageViewWidget();
+  ~ImageViewWidget() ITK_OVERRIDE;
 
   /**
    */
@@ -253,21 +253,21 @@ protected:
   //
   // Qt overloads.
 
-  virtual void initializeGL();
-  virtual void resizeGL( int widgth, int height );
-  virtual void paintGL();
+  void initializeGL() ITK_OVERRIDE;
+  void resizeGL( int widgth, int height ) ITK_OVERRIDE;
+  void paintGL() ITK_OVERRIDE;
 
-  virtual void mouseMoveEvent( QMouseEvent* event );
-  virtual void mouseReleaseEvent( QMouseEvent* event );
-  virtual void mousePressEvent( QMouseEvent* event );
-  virtual void mouseDoubleClickEvent( QMouseEvent * event );
+  void mouseMoveEvent( QMouseEvent* event ) ITK_OVERRIDE;
+  void mouseReleaseEvent( QMouseEvent* event ) ITK_OVERRIDE;
+  void mousePressEvent( QMouseEvent* event ) ITK_OVERRIDE;
+  void mouseDoubleClickEvent( QMouseEvent * event ) ITK_OVERRIDE;
 
-  virtual void wheelEvent( QWheelEvent* event);
+  void wheelEvent( QWheelEvent* event) ITK_OVERRIDE;
 
-  virtual void keyPressEvent( QKeyEvent* event );
-  virtual void keyReleaseEvent( QKeyEvent* event );
+  void keyPressEvent( QKeyEvent* event ) ITK_OVERRIDE;
+  void keyReleaseEvent( QKeyEvent* event ) ITK_OVERRIDE;
 
-  virtual void resizeEvent( QResizeEvent* event );
+  void resizeEvent( QResizeEvent* event ) ITK_OVERRIDE;
 
 
 //
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdImportImagesDialog.h b/Modules/Visualization/MonteverdiGui/include/mvdImportImagesDialog.h
index e9bd891c31f1a7208bf80561a9042f3047656798..e887e4ddbc4854992e56cbc57497b140d37faf6b 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdImportImagesDialog.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdImportImagesDialog.h
@@ -103,7 +103,7 @@ public:
 		      Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~ImportImagesDialog();
+  ~ImportImagesDialog() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdImportSubDatasetDialog.h b/Modules/Visualization/MonteverdiGui/include/mvdImportSubDatasetDialog.h
index 467ccfcd32b1685f4bac028011d5345e5593278d..2c85630d19fcbac82d7a9a3747c41d7b5089b0ba 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdImportSubDatasetDialog.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdImportSubDatasetDialog.h
@@ -102,7 +102,7 @@ public:
 		     Qt::WindowFlags flags = 0 );
 
   /** \brief Destructor. */
-  virtual ~ImportSubDatasetDialog();
+  ~ImportSubDatasetDialog() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdKeymapDialog.h b/Modules/Visualization/MonteverdiGui/include/mvdKeymapDialog.h
index 7fa9852db255e0162fef2042f9f38aa185e739a5..c6942bf48ebdda095f013994583132d118980189 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdKeymapDialog.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdKeymapDialog.h
@@ -75,7 +75,7 @@ public:
   KeymapDialog( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** Destructor */
-  virtual ~KeymapDialog();
+  ~KeymapDialog() ITK_OVERRIDE;
 
 //
 // SIGNALS.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackController.h b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackController.h
index 7d168eb9d180f619a6dffd2341d84c128ab239c6..24b0cf5a7791a36fc0ad1ab25e1fc7dd47b5df57 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackController.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackController.h
@@ -91,7 +91,7 @@ public:
   LayerStackController( LayerStackWidget * widget, QObject * p =NULL );
 
   /** \brief Destructor. */
-  virtual ~LayerStackController();
+  ~LayerStackController() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -132,19 +132,19 @@ private:
 
   /**
    */
-  virtual void Connect( AbstractModel * );
+  void Connect( AbstractModel * ) ITK_OVERRIDE;
 
   /**
    */
-  virtual void Disconnect( AbstractModel * );
+  void Disconnect( AbstractModel * ) ITK_OVERRIDE;
 
   /**
    */
-  virtual void ClearWidget();
+  void ClearWidget() ITK_OVERRIDE;
 
   /**
    */
-  virtual void virtual_ResetWidget( bool );
+  void virtual_ResetWidget( bool ) ITK_OVERRIDE;
 
 
 //
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h
index 177831c65040b36d799d032a523883c6200df592..3ae6c2d558ae07ec0fb508e7bfa1aba33ce073ba 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackItemModel.h
@@ -134,7 +134,7 @@ public:
   LayerStackItemModel( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~LayerStackItemModel();
+  ~LayerStackItemModel() ITK_OVERRIDE;
 
   /**
    */
@@ -150,102 +150,102 @@ public:
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#columnCount
    */
-  virtual int columnCount( const QModelIndex & p = QModelIndex() ) const;
+  int columnCount( const QModelIndex & p = QModelIndex() ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#data
    */
-  virtual
+  
     QVariant
-    data( const QModelIndex & index, int role = Qt::DisplayRole ) const;
+    data( const QModelIndex & index, int role = Qt::DisplayRole ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#dropMimeData
    */
-  virtual
+  
     bool
     dropMimeData( const QMimeData * data,
                   Qt::DropAction action,
                   int row,
                   int column,
-                  const QModelIndex & p );
+                  const QModelIndex & p ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#flags
    */
-  virtual Qt::ItemFlags flags( const QModelIndex & index ) const;
+  Qt::ItemFlags flags( const QModelIndex & index ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#hasChildren
    */
-  virtual bool hasChildren( const QModelIndex & p = QModelIndex() ) const;
+  bool hasChildren( const QModelIndex & p = QModelIndex() ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#headerData
    */
-  virtual QVariant headerData( int section,
+  QVariant headerData( int section,
                                Qt::Orientation orientation,
-                               int role = Qt::DisplayRole ) const;
+                               int role = Qt::DisplayRole ) const ITK_OVERRIDE;
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#index
    */
-  virtual
+  
     QModelIndex
     index( int row,
            int column,
-           const QModelIndex & p = QModelIndex() ) const;
+           const QModelIndex & p = QModelIndex() ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#insertRows
    */
-  virtual
+  
     bool
     insertRows( int row,
                 int count,
-                const QModelIndex & p = QModelIndex() );
+                const QModelIndex & p = QModelIndex() ) ITK_OVERRIDE;
 
   /**
    * \see http://doc.qt.io/qt-4.8/qabstractitemmodel.html#mimeData
    */
-  virtual QMimeData * mimeData( const QModelIndexList & indexes ) const;
+  QMimeData * mimeData( const QModelIndexList & indexes ) const ITK_OVERRIDE;
 
   /**
    * \see http://doc.qt.io/qt-4.8/qabstractitemmodel.html#mimeTypes
    */
-  virtual QStringList mimeTypes() const;
+  QStringList mimeTypes() const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#parent
    */
-  virtual QModelIndex parent( const QModelIndex & index ) const;
+  QModelIndex parent( const QModelIndex & index ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#removeRows
    */
-  virtual
+  
     bool
     removeRows( int row,
                 int count,
-                const QModelIndex & p = QModelIndex() );
+                const QModelIndex & p = QModelIndex() ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#rowCount
    */
-  virtual int rowCount( const QModelIndex & p = QModelIndex() ) const;
+  int rowCount( const QModelIndex & p = QModelIndex() ) const ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#setData
    */
-  virtual
+  
     bool
     setData( const QModelIndex & index,
              const QVariant & value,
-             int role = Qt::EditRole );
+             int role = Qt::EditRole ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qabstractitemmodel.html#supportedDropActions
    */
-  virtual Qt::DropActions supportedDropActions() const;
+  Qt::DropActions supportedDropActions() const ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h
index d39cb5d54b70d317f0e694ee291ca3abe6a3ad90..ae0a08d1ecc2f1c519e2c8030b74564e07e2bb85 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdLayerStackWidget.h
@@ -97,7 +97,7 @@ public:
   LayerStackWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~LayerStackWidget();
+  ~LayerStackWidget() ITK_OVERRIDE;
 
   /**
    */
@@ -142,7 +142,7 @@ public:
   /**
    * \see http://qt-project.org/doc/qt-4.8/qobject.html#eventFilter
    */
-  virtual bool eventFilter( QObject * watched, QEvent * event );
+  bool eventFilter( QObject * watched, QEvent * event ) ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdMultiResolutionPyramidWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdMultiResolutionPyramidWidget.h
index f5edba703dd07a02c1db5853fdb4ec33de2f2f20..9ff9591cd4a8dbe59c3bc1a19f46240ecea8206c 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdMultiResolutionPyramidWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdMultiResolutionPyramidWidget.h
@@ -98,7 +98,7 @@ public:
 				Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~MultiResolutionPyramidWidget();
+  ~MultiResolutionPyramidWidget() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdOTBApplicationsModel.h b/Modules/Visualization/MonteverdiGui/include/mvdOTBApplicationsModel.h
index 4fb919228ac36bfacdca62b43d1a43a0d79b6527..af2eb95b9f3aecee3ccde6fc3823deee9184111e 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdOTBApplicationsModel.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdOTBApplicationsModel.h
@@ -97,7 +97,7 @@ public:
   OTBApplicationsModel( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~OTBApplicationsModel();
+  ~OTBApplicationsModel() ITK_OVERRIDE;
 
   /** \brief Fill Widget Tree */
   void FillTree();
@@ -131,9 +131,9 @@ signals:
 protected:
 
   //
-  // AbstractModel overrides.
+  // AbstractModel methods.
 
-  void virtual_BuildModel( void* context =NULL );
+  void virtual_BuildModel( void* context =NULL ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdPixelDescriptionWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdPixelDescriptionWidget.h
index 85e9c905c93eebeef044c3f25c64d1b41e85d88d..e7c7430e73b796fcec32524211b520400805444a 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdPixelDescriptionWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdPixelDescriptionWidget.h
@@ -93,7 +93,7 @@ public:
   PixelDescriptionWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~PixelDescriptionWidget();
+  ~PixelDescriptionWidget() ITK_OVERRIDE;
 
   /** Get TreeWidget */
   QTreeWidget * GetDescriptionTree();
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetView.h b/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetView.h
index b63b74b3268b663de97a19752b4784f4a451cd24..417ebf0b59751a83b791feeb038fec208e450ad2 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetView.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdQtWidgetView.h
@@ -107,7 +107,7 @@ public:
 		Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~QtWidgetView();
+  ~QtWidgetView() ITK_OVERRIDE;
 
   /** \brief Gui Creation. */
   void CreateGui();
@@ -160,7 +160,7 @@ protected:
   //
   // QWidget overloads.
 
-  virtual void closeEvent( QCloseEvent * event );
+  void closeEvent( QCloseEvent * event ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewManipulator.h b/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewManipulator.h
index 38087a4edb6b680df9e2e7b3d9a0ec03607ecf26..36feefeb3887d9799bca3abe6f7c8c378df19992 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewManipulator.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewManipulator.h
@@ -96,36 +96,36 @@ public:
 #endif // USE_VIEW_SETTINGS_SIDE_EFFECT
 
   /** \brief Destructor. */
-  virtual ~QuicklookViewManipulator();
+  ~QuicklookViewManipulator() ITK_OVERRIDE;
 
   //
   // ImageViewManipulator overloads.
 
-  virtual ZoomType GetFixedZoomType() const;
+  ZoomType GetFixedZoomType() const ITK_OVERRIDE;
 
-  virtual
+  
     void
     SetupRenderingContext(
-      AbstractImageViewRenderer::RenderingContext * const ) const;
+      AbstractImageViewRenderer::RenderingContext * const ) const ITK_OVERRIDE;
 
 
-  virtual void MousePressEvent( QMouseEvent* event );
+  void MousePressEvent( QMouseEvent* event ) ITK_OVERRIDE;
 
-  virtual void MouseMoveEvent( QMouseEvent* event );
+  void MouseMoveEvent( QMouseEvent* event ) ITK_OVERRIDE;
 
   // virtual void MousePressEvent( QMouseEvent* event );
 
   // virtual void MouseReleaseEvent( QMouseEvent* event );
 
-  virtual void MouseDoubleClickEvent( QMouseEvent * ) {};
+  void MouseDoubleClickEvent( QMouseEvent * ) ITK_OVERRIDE {};
 
-  virtual void WheelEvent( QWheelEvent* event);
+  void WheelEvent( QWheelEvent* event) ITK_OVERRIDE;
 
-  virtual void ResizeEvent( QResizeEvent * event );
+  void ResizeEvent( QResizeEvent * event ) ITK_OVERRIDE;
 
-  virtual void KeyPressEvent( QKeyEvent* event );
+  void KeyPressEvent( QKeyEvent* event ) ITK_OVERRIDE;
 
-  virtual void KeyReleaseEvent( QKeyEvent* event );
+  void KeyReleaseEvent( QKeyEvent* event ) ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]-----------------------------------------------**/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewRenderer.h b/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewRenderer.h
index 7f54b515cd08fa2c96d6727d23cccfa5c2ef363e..b6338369602d4d0655fcd3588378caac8de48568 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewRenderer.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdQuicklookViewRenderer.h
@@ -106,7 +106,7 @@ public:
       m_RoiOrigin.Fill( 0 );
     }
 
-    virtual ~RenderingContext() {}
+    ~RenderingContext() ITK_OVERRIDE {}
 
     PointType m_RoiOrigin;
     PointType m_RoiExtent;
@@ -119,13 +119,13 @@ public:
   QuicklookViewRenderer( QObject* p = NULL );
 
   /** Destructor */
-  virtual ~QuicklookViewRenderer();
+  ~QuicklookViewRenderer() ITK_OVERRIDE;
 
   //
   // ImageViewRenderer overloads.
 
-  virtual
-  AbstractImageViewRenderer::RenderingContext* NewRenderingContext() const;
+  
+  AbstractImageViewRenderer::RenderingContext* NewRenderingContext() const ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -147,8 +147,8 @@ protected:
   //
   // ImageViewRenderer overloads.
 
-  virtual
-  void UpdateActors( const AbstractImageViewRenderer::RenderingContext* c );
+  
+  void UpdateActors( const AbstractImageViewRenderer::RenderingContext* c ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
@@ -167,14 +167,14 @@ private:
   void SetWktAndKwl();
 
   //
-  // ImageViewRenderer overrides.
-  virtual void virtual_SetProjection();
-  virtual void virtual_UpdateProjection();
+  // ImageViewRenderer methods.
+  void virtual_SetProjection() ITK_OVERRIDE;
+  void virtual_UpdateProjection() ITK_OVERRIDE;
 
   //
   // AbstractImageViewRenderer overloads.
   // TODO: Move virtual_*Scene() methods to protected section.
-  virtual void virtual_FinishScene();
+  void virtual_FinishScene() ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdSearchableTreeWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdSearchableTreeWidget.h
index 7066eb4d7efb6f66bd4048f36230d0b3d034cd07..3d3328305ea485830676840135adc57127b88ce1 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdSearchableTreeWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdSearchableTreeWidget.h
@@ -100,7 +100,7 @@ public:
   SearchableTreeWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~SearchableTreeWidget();
+  ~SearchableTreeWidget() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdShaderWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdShaderWidget.h
index 09a22674763398571cbacab0427d17381348b815..640131d74f778634e382588aca138f7e91f9d1ef 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdShaderWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdShaderWidget.h
@@ -99,7 +99,7 @@ public:
 		Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~ShaderWidget();
+  ~ShaderWidget() ITK_OVERRIDE;
 
   /**
    */
@@ -138,7 +138,7 @@ protected:
 private:
 
   /** */
-  virtual void virtual_SetSettings( ImageSettings * );
+  void virtual_SetSettings( ImageSettings * ) ITK_OVERRIDE;
 
 //
 // Private attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdStatusBarWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdStatusBarWidget.h
index d2209fd88b80f10f53509809bfc10646181132c7..e287ee7adb10c8fdff557620851741fbe9d1c6ff 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdStatusBarWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdStatusBarWidget.h
@@ -95,7 +95,7 @@ public:
   StatusBarWidget( QWidget* p =NULL, Qt::WindowFlags flags =0 );
 
   /** \brief Destructor. */
-  virtual ~StatusBarWidget();
+  ~StatusBarWidget() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdTaskProgressDialog.h b/Modules/Visualization/MonteverdiGui/include/mvdTaskProgressDialog.h
index 7030aba9d450c79afe9f374aba9563f5fe6a900e..0bb03796c4eafa80e2e22eb96d210d9c608714f5 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdTaskProgressDialog.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdTaskProgressDialog.h
@@ -97,7 +97,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~TaskProgressDialog();
+  ~TaskProgressDialog() ITK_OVERRIDE;
 
   /**
    */
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdTreeWidget.h b/Modules/Visualization/MonteverdiGui/include/mvdTreeWidget.h
index 322d58e6e02b0b5a7c7410a30bfa884e76789303..97fdc1ddb0e5d36dcb5306fb26ff3bc48b635fe1 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdTreeWidget.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdTreeWidget.h
@@ -122,7 +122,7 @@ public:
   TreeWidget( QWidget* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~TreeWidget();
+  ~TreeWidget() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -149,17 +149,17 @@ protected:
   //
   // QTreeWidget overloads.
 
-  virtual QStringList mimeTypes() const;
+  QStringList mimeTypes() const ITK_OVERRIDE;
 
-  virtual QMimeData* mimeData( const QList< QTreeWidgetItem* > items ) const;
+  QMimeData* mimeData( const QList< QTreeWidgetItem* > items ) const ITK_OVERRIDE;
 
-  virtual void dragEnterEvent( QDragEnterEvent* event );
-  virtual void dragMoveEvent( QDragMoveEvent* event );
-  virtual void dragLeaveEvent( QDragLeaveEvent* event );
-  virtual void dropEvent( QDropEvent* event );
+  void dragEnterEvent( QDragEnterEvent* event ) ITK_OVERRIDE;
+  void dragMoveEvent( QDragMoveEvent* event ) ITK_OVERRIDE;
+  void dragLeaveEvent( QDragLeaveEvent* event ) ITK_OVERRIDE;
+  void dropEvent( QDropEvent* event ) ITK_OVERRIDE;
 
-  virtual Qt::DropActions supportedDropActions() const;
-  virtual void startDrag( Qt::DropActions supportedActions );
+  Qt::DropActions supportedDropActions() const ITK_OVERRIDE;
+  void startDrag( Qt::DropActions supportedActions ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItem.h b/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItem.h
index 51875e25829b8271a2176263d8104fb14077d9fc..4b70058ad04d45c789b7c0d2810cf3d87c44509d 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItem.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItem.h
@@ -118,7 +118,7 @@ public:
   /**
    * \brief Destructor.
    */
-  virtual ~TreeWidgetItem();
+  ~TreeWidgetItem() ITK_OVERRIDE;
 
   /**
    */
@@ -143,7 +143,7 @@ public:
   /**
    * \see http://qt-project.org/doc/qt-4.8/qtreewidgetitem.html#clone
    */
-  virtual QTreeWidgetItem* clone() const;
+  QTreeWidgetItem* clone() const ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
diff --git a/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItemDragAndDropEventFilter.h b/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItemDragAndDropEventFilter.h
index 2b5fff90faf9470ee759e402d3d16a04aa4bd4aa..c3c798a763c81880d61804338da61a80fe1600ac 100644
--- a/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItemDragAndDropEventFilter.h
+++ b/Modules/Visualization/MonteverdiGui/include/mvdTreeWidgetItemDragAndDropEventFilter.h
@@ -91,7 +91,7 @@ public:
   TreeWidgetItemDragAndDropEventFilter( QObject* p =NULL );
 
   /** \brief Destructor. */
-  virtual ~TreeWidgetItemDragAndDropEventFilter();
+  ~TreeWidgetItemDragAndDropEventFilter() ITK_OVERRIDE;
 
   /*-[ PUBLIC SLOTS SECTION ]------------------------------------------------*/
 
@@ -119,22 +119,22 @@ protected:
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dragEnterEvent
    */
-  virtual bool DragEnterEvent( QObject* object, QDragEnterEvent* event );
+  bool DragEnterEvent( QObject* object, QDragEnterEvent* event ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dragLeaveEvent
    */
-  virtual bool DragLeaveEvent( QObject* object, QDragLeaveEvent* event );
+  bool DragLeaveEvent( QObject* object, QDragLeaveEvent* event ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dragMoveEvent
    */
-  virtual bool DragMoveEvent( QObject* object, QDragMoveEvent* event );
+  bool DragMoveEvent( QObject* object, QDragMoveEvent* event ) ITK_OVERRIDE;
 
   /**
    * \see http://qt-project.org/doc/qt-4.8/qwidget.html#dropEvent
    */
-  virtual bool DropEvent( QObject* object, QDropEvent* event );
+  bool DropEvent( QObject* object, QDropEvent* event ) ITK_OVERRIDE;
 
 //
 // Protected attributes.
diff --git a/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx b/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx
index f8264ceddaec0fb230d7df2611756cd5ac37fd71..9f5d46f9f45c235c6c1719d2ff8c0d89ef839f7e 100644
--- a/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx
+++ b/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx
@@ -172,7 +172,15 @@ ImportSubDatasetDialog
   // Fill item-model.
   otb::GDALImageIO::Pointer gdalIO( otb::GDALImageIO::New() );
 
-  std::string fname( QFile::encodeName( filename ).constData() );
+  // Check for existing options other than sdataidx
+  int posOptions = filename.indexOf(QChar('?'));
+  int posSubDataIdx = filename.indexOf(QString("sdataidx"));
+  QString cleanFilename(filename);
+  if (posOptions > 0 && posSubDataIdx <= posOptions)
+    {
+    cleanFilename = filename.section('?',0,0);
+    }
+  std::string fname( QFile::encodeName( cleanFilename ).constData() );
 
   if( gdalIO->CanReadFile( fname.c_str() ) )
     {
diff --git a/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.html b/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.html
index c94f65ee1579a5d2879afa8dd8206bc6531c0ad6..c0734a7718f463784fda7e3c42efc9cd364ee7c6 100644
--- a/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.html
+++ b/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.html
@@ -28,8 +28,8 @@
 <tr> <td>SHIFT+</td> <td>CTRL+</td> <td>P</td> <td>Quick <b>P</b>rint image-view (quick screenshot)</td> </tr>
 <tr> <td></td> <td>ALT+</td> <td>Mouse wheel</td> <td>Adjust effect brush size</td> </tr>
 <tr> <td>SHIFT+</td> <td>ALT+</td> <td>Mouse wheel</td> <td>Adjust effect parameter value</td> </tr>
-<tr> <td></td> <td></td> <td>Mouse wheel</td> <td>Rotate layers</td> </tr>
-<tr> <td></td> <td>CTRL+</td> <td>Mouse wheel</td> <td>Zoom in out</td> </tr>
+<tr> <td></td> <td></td> <td>Mouse wheel</td> <td>Zoom in out</td> </tr>
+<tr> <td></td> <td>CTRL+</td> <td>Mouse wheel</td> <td>Rotate layers</td> </tr>
 <tr> <td></td> <td>CTRL+ALT+</td> <td>Mouse wheel</td> <td>Shift dynamics range towards low/high</td> </tr>
 <tr> <td>SHIFT+</td> <td>CTRL+ALT+</td> <td>Mouse wheel</td> <td>Scale dynamics range around it's mean value</td> </tr>
 <tr> <td></td> <td>META+</td> <td>Mouse wheel</td> <td>Adjust translucency</td> </tr>
diff --git a/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.ui b/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.ui
index eb63275a8548efd885d4feaed489815666449da1..50a79e60a1d632f4068d6d1f34612371014de1f7 100644
--- a/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.ui
+++ b/Modules/Visualization/MonteverdiGui/src/mvdKeymapDialog.ui
@@ -227,7 +227,7 @@ p, li { white-space: pre-wrap; }
 &lt;td&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Mouse wheel&lt;/p&gt;&lt;/td&gt;
 &lt;td&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Rotate layers&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Zoom in out&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -235,7 +235,7 @@ p, li { white-space: pre-wrap; }
 &lt;td&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Mouse wheel&lt;/p&gt;&lt;/td&gt;
 &lt;td&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Zoom in out&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Rotate layers&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplicationFactory.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplicationFactory.h
index b45e80a778205d022aba01fda27c0364f2a83da8..083f8150fbe5787df82f728ece2008235a9ea54d 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplicationFactory.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplicationFactory.h
@@ -88,7 +88,7 @@ protected:
     return ret;
   }
 
-  /** This method creates all the objects with the class override of
+  /** This method creates all the objects with the new class of
    * itkclass name, which are provide by this object
    */
   std::list<LightObject::Pointer>
diff --git a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx
index 05b3b5b0cd6534f9485a6e34f43dba80cb3a554e..12f636c05122aa617336fcb242943a7ff43d73ac 100644
--- a/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx
+++ b/Modules/Wrappers/ApplicationEngine/src/otbWrapperInputImageListParameter.cxx
@@ -135,7 +135,7 @@ InputImageListParameter::SetNthFileName( const unsigned int id, const std::strin
 
     tmpInputImageParameter->SetFromFileName(filename);
 
-    if(tmpInputImageParameter->HasValue())
+    if(!tmpInputImageParameter->HasValue())
       {
       this->ClearValue();
       return false;
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index afd5acf864888f8998771c492254b82512434a5c..9f4946140f5f7ff173446c045420dd4d452eee29 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -1,3 +1,67 @@
+OTB-v.5.8.0 - Changes since version 5.6.1 (November 8th, 2016)
+--------------------------------------------------------------
+
+* Request for Changes (http://wiki.orfeo-toolbox.org/index.php/Requests_for_Changes):
+  * Request for Changes-35: FineRegistration, performances increased
+  * Request for Changes-51: Move Monteverdi into OTB
+  * Request for Changes-52: Faster BandMathX
+  * Request for changes-53: Connect applications in memory
+  * Request for Changes-54: Get OTB ready for gdal derived subdatasets
+  * Request for Changes-55: Monteverdi: Mouse-wheel zoom without CTRL
+  * Request for Changes-56: Spot7 metadata support
+  * Request for Changes-57: Migrate Cookbook to RST
+  * Request for Changes-58: Sampling on multiple images
+  * Request for Changes-59: Build support for msvc 2015 with OTB xdk
+  * Request for Changes-60: Shorter Release Process
+  * Request for Changes-61: Use codespell to fix common misspellings in source code
+  * Request for Changes-62: Enhance text comparison in dashboard
+  * Request for Changes-63: Refactor threading mechanism in sampling filters
+  * Request for Changes-64: Missing RAM for persistent filters in application
+  * Request for Changes-65: Add Shark Random forests implementation
+  * Request for Changes-67: ClassificationMapRegularization option for isolated pixels only
+  * Request for Changes-68: New sampling strategies in classification framework
+
+* Bugfixes :
+
+  * Monteverdi
+    * 0001298: Monteverdi crash with this image
+    * 0001305: SuperBuild falling at BOOST build step
+    * 0001283: GDAL overviews dialog pops under OTB-applications dock
+    * 0001284: GDAL overviews default min-size = 4096 px
+    * 0001282: Status-bar is not always disable at startup
+    * 0001278: Add force OpenGL 1.x compatibility option
+    * 0001267: Monteverdi: unclear "gdal overview" minimum size parameter
+    * 0001274: SuperBuild GLUT compilation problem
+    * 0001277: Missing icon(s) in color-dynamics widget
+    * 0001275: Monteverdi: Histogram view problem with binary image
+    * 0001300: monteverdi $input_filename crash with relative path
+    * 0001303: Memory issue in Monteverdi with images with subdatasets (HDF4)
+    * 0001299: Monteverdi shortcuts list needs some updates
+    * 0001291: Word "Échiquier" is not displayed properly in layer stack (effect column)
+
+  * OTB-Packaging
+    * 0001290: Unable to run OTB applications from Mapla.app on Mac OS X
+    * 0001297: No translation files in Windows standalone package (branch release-5.8)
+
+  * Orfeo Toolbox (OTB)
+    * 0001308: Typo in otbenv.profile and otbenv.cmd
+    * 0001286: Sentinel-1 sensor metadata are not retrieved properly if application is run inside the SAFE directory
+    * 0001287: Using S1 images in monteverdi is slow
+    * 0001268: Patch for spelling error in 5.6.1
+    * 0001306: SuperBuild falling at TIFF build step (GLUT_Xmu_LIBRARY NOTFOUND)
+
+  * OTB-applications
+    * 0001301: Mapla application does not provide translation files
+
+OTB-v.5.6.1 - Changes since version 5.6.0 (August 26th, 2016)
+-------------------------------------------------------------
+
+* Bugfixes :
+  * 0001262: OTB 5.7 vector sampler bug
+  * 0001259: Patch for various spelling errors in 5.6.0
+  * 0001258: Patch to only use OTB_GIT_STATUS_MESSAGE in message function if set.
+  * 0001266: Fix covariance computation with high float values
+
 OTB-v.5.6.0 - Changes since version 5.4.0 (July 28th, 2016)
 ------------------------------------------------------------
 
diff --git a/SuperBuild/CMake/External_boost.cmake b/SuperBuild/CMake/External_boost.cmake
index 41ea3d2a12c5e45d96adefa079990f79ce6da9cc..bd3251e574281eafd96dbd07a2f9112a2dc555fd 100644
--- a/SuperBuild/CMake/External_boost.cmake
+++ b/SuperBuild/CMake/External_boost.cmake
@@ -5,11 +5,8 @@ SETUP_SUPERBUILD(BOOST)
 set(_SB_BOOST_LIBRARYDIR ${SB_INSTALL_PREFIX}/lib)
 
 set(BOOST_SB_CONFIG)
-
-if(OTB_COMPILER_ARCH_IS_X64)
-  set(BOOST_SB_CONFIG architecture=x86 address-model=64)
-else()
-  set(BOOST_SB_CONFIG architecture=x86)
+if(OTB_TARGET_SYSTEM_ARCH_IS_X64)
+  set(BOOST_SB_CONFIG address-model=64)
 endif()
 
 set(BOOST_SB_CONFIG
@@ -74,4 +71,4 @@ if(MSVC)
 else()
   set(_SB_Boost_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 endif()
-SUPERBUILD_PATCH_SOURCE(BOOST)
\ No newline at end of file
+SUPERBUILD_PATCH_SOURCE(BOOST)
diff --git a/SuperBuild/CMake/External_curl.cmake b/SuperBuild/CMake/External_curl.cmake
index 188c1edd94624a5cf7800d30d8c0534fb2c9ea46..e1dde228fc91122e29e7fc4e3d4612e65b82351f 100644
--- a/SuperBuild/CMake/External_curl.cmake
+++ b/SuperBuild/CMake/External_curl.cmake
@@ -15,7 +15,7 @@ if(MSVC)
     return()
   endif()
 
-  if(OTB_COMPILER_ARCH_IS_X64)
+  if(OTB_TARGET_SYSTEM_ARCH_IS_X64)
     set(CURL_INSTALL_DIR_PREFIX "libcurl-vc-x64")
   else()
     set(CURL_INSTALL_DIR_PREFIX "libcurl-vc-x86")
diff --git a/SuperBuild/CMake/External_gdal.cmake b/SuperBuild/CMake/External_gdal.cmake
index fa3e759611e00db2396faaa66799a55f8933a83f..d8db8f1e3fc4fe7494921b5fa82b994e6151fc26 100644
--- a/SuperBuild/CMake/External_gdal.cmake
+++ b/SuperBuild/CMake/External_gdal.cmake
@@ -95,7 +95,7 @@ else(MSVC)
     ${CMAKE_SOURCE_DIR}/patches/GDAL/nmake_gdal_extra.opt.in
     ${CMAKE_BINARY_DIR}/nmake_gdal_extra.opt)
   
-  if(OTB_COMPILER_ARCH_IS_X64)
+  if(OTB_TARGET_SYSTEM_ARCH_IS_X64)
     file(APPEND "${CMAKE_BINARY_DIR}/nmake_gdal_extra.opt" "WIN64=YES")
   endif()
   
diff --git a/SuperBuild/CMake/External_otb.cmake b/SuperBuild/CMake/External_otb.cmake
index 1291b3302c8dd8f0fec816ab8512a3eb7f9ba227..860e33a73ad65d42453b5704288980631a7d94ce 100644
--- a/SuperBuild/CMake/External_otb.cmake
+++ b/SuperBuild/CMake/External_otb.cmake
@@ -4,17 +4,6 @@ SETUP_SUPERBUILD(OTB)
 
 set(OTB_SB_SRC ${CMAKE_SOURCE_DIR}/..)
 
-if(ENABLE_OTB_LARGE_INPUTS)
-  set(OTB_SB_LARGEINPUT_CONFIG
-    -DOTB_DATA_USE_LARGEINPUT:BOOL=ON
-    -DOTB_DATA_LARGEINPUT_ROOT:PATH=${OTB_DATA_LARGEINPUT_ROOT}
-    )
-else()
-  set(OTB_SB_LARGEINPUT_CONFIG
-    -DOTB_DATA_USE_LARGEINPUT:BOOL=OFF
-    )
-endif()
-
 ADDTO_DEPENDENCIES_IF_NOT_SYSTEM(OTB GDAL OSSIM ITK TINYXML BOOST)
 
 ##get_property(OTB_DEPENDENCIES GLOBAL PROPERTY GLOBAL_OTB_DEPENDENCIES)
@@ -160,16 +149,18 @@ set(OTB_SB_COMPILATION_FLAGS
   -DCMAKE_STATIC_LINKER_FLAGS:STRING=${CMAKE_STATIC_LINKER_FLAGS}
   )
 
- add_custom_command(OUTPUT otb_depends_done.txt
- COMMAND cmake -E touch otb_depends_done.txt
- DEPENDS ${OTB_DEPENDENCIES}
- )
+add_custom_command(OUTPUT otb_depends_done.txt
+  COMMAND cmake -E touch otb_depends_done.txt
+  DEPENDS ${OTB_DEPENDENCIES}
+  )
+
 add_custom_target(OTB_DEPENDS
-DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/otb_depends_done.txt
-WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-COMMENT "Built all otb dependencies: ${OTB_DEPENDENCIES}"
-VERBATIM
-)
+  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/otb_depends_done.txt
+  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+  COMMENT "Built all otb dependencies: ${OTB_DEPENDENCIES}"
+  VERBATIM
+  )
+
 
 ExternalProject_Add(OTB
   DEPENDS ${OTB_DEPENDENCIES}
@@ -185,6 +176,8 @@ ExternalProject_Add(OTB
   -DBUILD_TESTING:BOOL=${BUILD_TESTING}
   -DBUILD_EXAMPLES:BOOL=${BUILD_EXAMPLES}
   -DOTB_DATA_ROOT:STRING=${OTB_DATA_ROOT}
+  -DOTB_DATA_USE_LARGEINPUT:BOOL=${OTB_DATA_USE_LARGEINPUT}
+  -DOTB_DATA_LARGEINPUT_ROOT:PATH=${OTB_DATA_LARGEINPUT_ROOT}
   -DOTB_USE_6S:BOOL=${OTB_USE_6S}
   -DOTB_USE_CURL:BOOL=${OTB_USE_CURL}
   -DOTB_USE_LIBKML:BOOL=${OTB_USE_LIBKML}
@@ -205,15 +198,21 @@ ExternalProject_Add(OTB
   -DOTB_WRAP_PYTHON:BOOL=${OTB_WRAP_PYTHON}
   -DOTB_WRAP_JAVA:BOOL=${OTB_WRAP_JAVA}
   -DGENERATE_PACKAGE:BOOL=OFF
-  -DGENERATE_XDK:BOOL=OFF
-  ${OTB_SB_LARGEINPUT_CONFIG}
+  -DGENERATE_XDK:BOOL=OFF  
   ${OTB_ADDITIONAL_CACHE}
   CMAKE_ARGS ${OTB_SB_CONFIG}
   CMAKE_COMMAND ${SB_CMAKE_COMMAND}
   )
 
 
-ExternalProject_Add_Step(OTB install_copyright
-  COMMAND ${CMAKE_COMMAND} -E copy_directory ${OTB_SB_SRC}/Copyright ${CMAKE_INSTALL_PREFIX}/share/copyright
-  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/Copyright ${CMAKE_INSTALL_PREFIX}/share/copyright
-  DEPENDEES install)
+ExternalProject_Add_Step(
+  OTB install_copyright
+  COMMAND ${CMAKE_COMMAND}
+  -E copy_directory
+  ${OTB_SB_SRC}/Copyright ${CMAKE_INSTALL_PREFIX}/share/copyright
+  
+  COMMAND ${CMAKE_COMMAND}
+  -E copy_directory
+  ${CMAKE_SOURCE_DIR}/Copyright ${CMAKE_INSTALL_PREFIX}/share/copyright
+  DEPENDEES install
+  )
diff --git a/SuperBuild/CMake/External_tiff.cmake b/SuperBuild/CMake/External_tiff.cmake
index db9f2caad3f68958d14ccf4aa0007c8d6b801968..72d4744395a9ea4bfe204c46e795d6bea50be92e 100644
--- a/SuperBuild/CMake/External_tiff.cmake
+++ b/SuperBuild/CMake/External_tiff.cmake
@@ -64,12 +64,15 @@ else()
     -Dlzma:BOOL=FALSE
     -Djbig:BOOL=FALSE
     -Dzlib:BOOL=TRUE
+    -DWITH_OPENGL:BOOL=FALSE
     -Dpixarlog:BOOL=TRUE
     ${TIFF_SB_CONFIG}
     CMAKE_COMMAND ${SB_CMAKE_COMMAND}
     )
 endif()
 
+SUPERBUILD_PATCH_SOURCE(TIFF)
+
 set(_SB_TIFF_INCLUDE_DIR ${SB_INSTALL_PREFIX}/include)
 if(WIN32)
   set(_SB_TIFF_LIBRARY ${SB_INSTALL_PREFIX}/lib/libtiff_i.lib)
diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt
index 3f2daa73ffa5033bb70eafece88603d34d813ad6..b5a660fa5dbc2e6ee38c291c5ed56a912a939428 100644
--- a/SuperBuild/CMakeLists.txt
+++ b/SuperBuild/CMakeLists.txt
@@ -14,6 +14,8 @@ include(ExternalProject)
 
 include(OTBCheckCpp11Keywords)
 
+include(OTBCheckTargetSystemArch)
+
 option(BUILD_SHARED_LIBS "Build OTB with shared libraries." ON)
 
 set(OTB_ADDITIONAL_CACHE "" CACHE STRING "Additional cmake option for OTB -DVAR:TYPE=VALUE ...")
@@ -25,40 +27,6 @@ if(APPLE)
   set(CMAKE_MACOSX_RPATH TRUE)
 endif()
 
-set(OTB_COMPILER_ARCH_IS_X64 TRUE)
-
-if(MSVC)
-  execute_process(
-    COMMAND ${CMAKE_C_COMPILER}
-    ERROR_VARIABLE ev
-    OUTPUT_VARIABLE ov
-    OUTPUT_QUIET
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    )
-  
-  set(OTB_COMPILER_ARCH_IS_X64 TRUE)
-  set(OTB_COMPILER_ARCH x64)
-  if("${ev}" MATCHES "x86")
-    set(OTB_COMPILER_ARCH x86)
-    set(OTB_COMPILER_ARCH_IS_X64 FALSE)
-  endif()
-
-endif() #MSVC
-
-if(UNIX)
-  execute_process(
-    COMMAND uname -m
-    ERROR_VARIABLE ev
-    OUTPUT_VARIABLE ov
-    OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-  set(OTB_COMPILER_ARCH ${ov})
-  set(OTB_COMPILER_ARCH_IS_X64 FALSE)
-  if("${ov}" STREQUAL "x86_64")
-    set(OTB_COMPILER_ARCH_IS_X64 TRUE)
-  endif()
-endif()
-
 # use, i.e. don't skip the full RPATH for the build tree
 set(CMAKE_SKIP_BUILD_RPATH  FALSE)
 # when building, don't use the install RPATH already
@@ -87,7 +55,17 @@ set (DOWNLOAD_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/Downloads"
 mark_as_advanced(DOWNLOAD_LOCATION)
 
 # General options
-option(ENABLE_OTB_LARGE_INPUTS " Use the OTB-LargeInputs for testing" OFF)
+option(OTB_DATA_USE_LARGEINPUT "Use Large inputs images test." OFF)
+mark_as_advanced(OTB_DATA_USE_LARGEINPUT)
+if(OTB_DATA_USE_LARGEINPUT)
+  find_path(OTB_DATA_LARGEINPUT_ROOT
+    NAMES OTBData.readme
+    HINTS $ENV{OTB_DATA_LARGEINPUT_ROOT}
+  )
+  mark_as_advanced(OTB_DATA_LARGEINPUT_ROOT)
+endif()
+
+
 option(BUILD_EXAMPLES " Build the OTB Examples directory" OFF)
 
 option(USE_DEFAULT_INSTALL_PREFIX "Install superbuild to default prefix /usr/local for unix" OFF)
@@ -288,9 +266,6 @@ option(OTB_USE_QWT "Enable module QWT in OTB" OFF)
 # set OTB_DATA_ROOT to run test
 find_path(OTB_DATA_ROOT README-OTB-Data PATHS $ENV{OTB_DATA_ROOT} ${OTB-SuperBuild_SOURCE_DIR}/../../OTB-Data)
 
-if(ENABLE_OTB_LARGE_INPUTS)
-  find_path(OTB_DATA_LARGEINPUT_ROOT OTBData.readme $ENV{OTB_DATA_LARGEINPUT_ROOT})
-endif()
 
 # SWIG Wrapping
 option(OTB_WRAP_PYTHON "Enable python wrappers for OTB applications (requires SWIG)" OFF)
@@ -343,6 +318,9 @@ if(FROM_SUPERBUILD_LIST)
   endforeach()
 endif()
 
+message(STATUS "OTB_TARGET_SYSTEM_ARCH=${OTB_TARGET_SYSTEM_ARCH}")
+message(STATUS "OTB_TARGET_SYSTEM_ARCH_IS_X64=${OTB_TARGET_SYSTEM_ARCH_IS_X64}")
+
 message(STATUS "SuperBuild will be installed to ${CMAKE_INSTALL_PREFIX}")
 message(STATUS "To install to a different directory, re-run cmake -DCMAKE_INSTALL_PREFIX=/your/preferred/path")
 
diff --git a/SuperBuild/Packaging/CMakeLists.txt b/SuperBuild/Packaging/CMakeLists.txt
index c9c18eade263ebdf171296e3f1e74eb823fbec16..391bc3e2c3136245086b7bcf710b1142bbb00a45 100644
--- a/SuperBuild/Packaging/CMakeLists.txt
+++ b/SuperBuild/Packaging/CMakeLists.txt
@@ -4,25 +4,22 @@
 # stop generation of msvc packages for windows. 04-apr-2016. point OTB.
 
 ##### check if standalone project ######
+set(PACKAGE_OTB_SRC_DIR)
+set(OUT_OF_SOURCE_BUILD FALSE)
 if(NOT PROJECT_NAME)
   cmake_minimum_required(VERSION 2.6)
   include(CMakeParseArguments)
   project(OTBPackaging)
 
-  option(GENERATE_PACKAGE "Generate OTB package" OFF)
+  option(GENERATE_PACKAGE "Generate OTB package" ON)
   option(GENERATE_XDK "Generate XDK for OTB development" OFF)
-endif()
-
-if(PROJECT_NAME STREQUAL "OTB-SuperBuild")
-  if(NOT PACKAGE_OTB_SRC_DIR)
-    get_filename_component(PACKAGE_OTB_SRC_DIR ${OTB-SuperBuild_SOURCE_DIR} PATH)
-  endif()
-endif()
-
-set(OUT_OF_SOURCE_BUILD FALSE)
-if(PROJECT_NAME STREQUAL "OTBPackaging")
+  
   set(OUT_OF_SOURCE_BUILD TRUE)
-  set(GENERATE_PACKAGE ON)
+  
+  if(BUILD_TESTING)
+    include(CTest)
+  endif()
+  
   if(NOT PACKAGE_OTB_SRC_DIR)
     get_filename_component(PACKAGE_OTB_SRC_DIR ${OTBPackaging_SOURCE_DIR} PATH)
     get_filename_component(PACKAGE_OTB_SRC_DIR ${PACKAGE_OTB_SRC_DIR} PATH)
@@ -31,8 +28,33 @@ if(PROJECT_NAME STREQUAL "OTBPackaging")
   option(OTB_WRAP_PYTHON "enable python wrapping" ON)
   if(OTB_WRAP_PYTHON AND NOT PYTHON_EXECUTABLE)
     find_package ( PythonInterp REQUIRED )
+    mark_as_advanced(PYTHON_INCLUDE_DIR)
+    mark_as_advanced(PYTHON_LIBRARY)
+  endif()
+
+ if(WIN32 AND NOT MSVC)
+    set(OTB_BINARY_DIR "" CACHE PATH "OTB binary directory")
+    set(OTB_INSTALL_DIR "" CACHE PATH "OTB install directory")
+  else()
+    set(SUPERBUILD_BINARY_DIR "" CACHE PATH "path to superbuild binary directory")
+    set(SUPERBUILD_INSTALL_DIR "" CACHE PATH "path to superbuild install directory")
+    set(DOWNLOAD_LOCATION "" CACHE PATH "path to superbuild download archives")
   endif()
-endif() #if(PROJECT_NAME STREQUAL ..
+  
+else() #if(NOT PROJECT_NAME)
+
+  # SUPERBUILD_BINARY_DIR is only set in Packaging/CMakeLists.txt and not available
+  # in the parent scope like others. So we need to set it as CMAKE_BINARY_DIR
+  # if doing packages from source tree.
+  set( SUPERBUILD_BINARY_DIR   ${CMAKE_BINARY_DIR}     )
+  set( SUPERBUILD_INSTALL_DIR  ${SB_INSTALL_PREFIX}    )
+  set( OTB_INSTALL_DIR         ${CMAKE_INSTALL_PREFIX} )
+  
+  if(NOT PACKAGE_OTB_SRC_DIR)
+    get_filename_component(PACKAGE_OTB_SRC_DIR ${OTB-SuperBuild_SOURCE_DIR} PATH)
+  endif()
+  
+endif()
 
 if(NOT GENERATE_PACKAGE AND NOT GENERATE_XDK)
   #well. we don't have any businees here. Let's move on..
@@ -51,88 +73,65 @@ endif()
 
 set(SUPERBUILD_SOURCE_DIR ${PACKAGE_OTB_SRC_DIR}/SuperBuild)
 
+include(${SUPERBUILD_SOURCE_DIR}/CMake/SuperBuild_Macro.cmake)
+include(${PACKAGE_OTB_SRC_DIR}/CMake/OTBCheckTargetSystemArch.cmake)
 include(${CMAKE_CURRENT_SOURCE_DIR}/PMacros.cmake)
 
-if(OUT_OF_SOURCE_BUILD)
-  include(${SUPERBUILD_SOURCE_DIR}/CMake/SuperBuild_Macro.cmake)
-  if(BUILD_TESTING)
-    include(CTest)
-  endif()
-  if(WIN32 AND NOT MSVC)
-    set(OTB_BINARY_DIR "" CACHE PATH "OTB binary directory")
-    set(OTB_INSTALL_DIR "" CACHE PATH "OTB install directory")
-  else()
-    set(SUPERBUILD_BINARY_DIR "" CACHE PATH "path to superbuild binary directory")
-    set(SUPERBUILD_INSTALL_DIR "" CACHE PATH "path to superbuild install directory")
-    set(DOWNLOAD_LOCATION "" CACHE PATH "path to superbuild binary directory")
-  endif()
-else(OUT_OF_SOURCE_BUILD)
-  # SUPERBUILD_BINARY_DIR is only set in Packaging/CMakeLists.txt and not available
-  # in the parent scope like others. So we need to set it as CMAKE_BINARY_DIR
-  # if doing packages from source tree.
-  set( SUPERBUILD_BINARY_DIR  ${CMAKE_BINARY_DIR}  )
-  set( SUPERBUILD_INSTALL_DIR ${SB_INSTALL_PREFIX} )
-  set( OTB_INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
-  #if(WIN32 AND NOT MSVC)
-    #get_filename_component(OTB_INSTALL_DIR ${OTB_MODULES_DIR} PATH)
-    #get_filename_component(OTB_INSTALL_DIR ${OTB_INSTALL_DIR} PATH)
-    #get_filename_component(OTB_INSTALL_DIR ${OTB_INSTALL_DIR} PATH)
-    #get_filename_component(OTB_INSTALL_DIR ${OTB_INSTALL_DIR} PATH)
-  #endif()
-endif(OUT_OF_SOURCE_BUILD)
-
 if(WIN32)
   set(ZIP_EXE_NAMES 7z 7za)
   find_program(ZIP_EXECUTABLE NAMES ${ZIP_EXE_NAMES})
-    if(NOT ZIP_EXECUTABLE)
+  if(NOT ZIP_EXECUTABLE)
     message(FATAL_ERROR "Cannot find 7z executable. searched names ${ZIP_EXE_NAMES}. Please add it to your path")
   endif()
 endif()
 
 if(WIN32 AND NOT MSVC)
-  foreach(req
-      PACKAGE_OTB_SRC_DIR
-      OTB_BINARY_DIR
-      OTB_INSTALL_DIR
-      )
-    if(NOT DEFINED ${req} OR "${${req}}" STREQUAL "")
-      message(FATAL_ERROR "you must set ${req}")
-    endif()
-    set(vars "${vars}  ${req}=[${${req}}]\n")
-  endforeach(req)
-else() #Unix like
-  foreach(req
-      SUPERBUILD_BINARY_DIR
-      SUPERBUILD_INSTALL_DIR
-      SUPERBUILD_SOURCE_DIR
-      PACKAGE_OTB_SRC_DIR
-      )
-    if(NOT DEFINED ${req} OR "${${req}}" STREQUAL "")
-      message(FATAL_ERROR "you must set ${req}")
-    endif()
-    set(vars "${vars}  ${req}=[${${req}}]\n")
-  endforeach(req)
+  set(required_vars
+  PACKAGE_OTB_SRC_DIR
+  OTB_BINARY_DIR
+  OTB_INSTALL_DIR
+  )
 endif()
 
+foreach(req
+  ${required_vars}
+  SUPERBUILD_BINARY_DIR
+  SUPERBUILD_INSTALL_DIR
+  SUPERBUILD_SOURCE_DIR
+  PACKAGE_OTB_SRC_DIR
+  OTB_TARGET_SYSTEM_ARCH
+  OTB_TARGET_SYSTEM_ARCH_IS_X64
+ )
+  if(NOT DEFINED ${req} OR "${${req}}" STREQUAL "")
+    message(FATAL_ERROR "you must set ${req}")
+  endif()
+  set(vars "${vars}  ${req}=[${${req}}]\n")
+endforeach(req)
+
+message("\n${vars}\n")
+
 set(EXTRA_CACHE_CONFIG)
 
-if(WIN32 AND NOT MSVC)
-  set(CMAKE_INSTALL_PREFIX "${OTB_INSTALL_DIR}")
-else()
-  set(CMAKE_INSTALL_PREFIX "${SUPERBUILD_INSTALL_DIR}")
-endif()
+set(CMAKE_INSTALL_PREFIX "${SUPERBUILD_INSTALL_DIR}")
 
-set(PACKAGE_NAME OTB)
 set(PACKAGE_LONG_NAME OrfeoToolBox)
 
-if(WIN32 AND NOT MSVC)
-  if(MXE_TARGET_DIR MATCHES "i686")
-    set(MXE_ARCH "i686")
-    set(PACKAGE_ARCH "32")
-  elseif(MXE_TARGET_DIR MATCHES "x86_64")
-    set(MXE_ARCH "x86_64")
-    set(PACKAGE_ARCH "64") #helper for ARCHIVE_NAME
-  endif()
+# Make up part of output package file
+set(PACKAGE_NAME OTB)
+if(APPLE)
+  set(PACKAGE_PLATFORM_NAME "Darwin")
+elseif(WIN32)
+  set(PACKAGE_PLATFORM_NAME "win")
+elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+  set(PACKAGE_PLATFORM_NAME "Linux")
+endif()
+
+set(PACKAGE_ARCH "32")
+if(OTB_TARGET_SYSTEM_ARCH_IS_X64)
+set(PACKAGE_ARCH "64")
+endif()
+
+if(MINGW)
   get_filename_component(MXE_MXEROOT ${MXE_TARGET_DIR} PATH)
   get_filename_component(MXE_MXEROOT ${MXE_MXEROOT} PATH)
   set(EXTRA_CACHE_CONFIG
@@ -141,22 +140,11 @@ if(WIN32 AND NOT MSVC)
      set(MXE_ARCH \"${MXE_ARCH}\")
      set(MXE_MXEROOT \"${MXE_MXEROOT}\")"
     )
-else() #(WIN32 AND NOT MSVC)
-  set(PACKAGE_ARCH 32)
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    set(PACKAGE_ARCH 64)
-  endif()
-endif()
-
-if(APPLE)
-  set(PACKAGE_PLATFORM_NAME "Darwin")
-elseif(WIN32)
-  set(PACKAGE_PLATFORM_NAME "win")
-elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-  set(PACKAGE_PLATFORM_NAME "Linux")
+  set(CMAKE_INSTALL_PREFIX "${OTB_INSTALL_DIR}")  
 endif()
 
-#get itk version from External_itk.cmake if not on mingw
+# get itk version from External_itk.cmake if not on mingw
+# because mxe has different version
 if(NOT MINGW)
   get_version(
     INPUT_FILE   "${SUPERBUILD_SOURCE_DIR}/CMake/External_itk.cmake"
diff --git a/SuperBuild/Packaging/Files/linux_pkgsetup.in b/SuperBuild/Packaging/Files/linux_pkgsetup.in
index ce7db8f88b348a5af71cb83599641550dc69190b..4c96ff7f2c1d0ef1faaa0dd71b7b345313f983b6 100644
--- a/SuperBuild/Packaging/Files/linux_pkgsetup.in
+++ b/SuperBuild/Packaging/Files/linux_pkgsetup.in
@@ -33,11 +33,8 @@ else
 
 cat > "$OUT_DIR/monteverdi.sh" << EOF
 #!/bin/sh
-unset LD_LIBRARY_PATH
-
-. $OUT_DIR/bin/env_exports
 
-export OTB_APPLICATION_PATH=$OUT_DIR/lib/otb/applications
+. $OUT_DIR/otbenv.profile
 
 $OUT_DIR/bin/monteverdi "\$@"
 EOF
@@ -46,48 +43,70 @@ chmod +x "$OUT_DIR/monteverdi.sh"
 
 cat > "$OUT_DIR/mapla.sh" << EOF
 #!/bin/sh
-unset LD_LIBRARY_PATH
 
-. $OUT_DIR/bin/env_exports
-
-export OTB_APPLICATION_PATH=$OUT_DIR/lib/otb/applications
+. $OUT_DIR/otbenv.profile
 
 $OUT_DIR/bin/mapla "\$@"
 EOF
 
 chmod +x "$OUT_DIR/mapla.sh"
 
-cat > "$OUT_DIR/bin/env_exports" << EOF
+cat > "$OUT_DIR/otbenv.profile" << EOF
 #!/bin/sh
 
-export LC_NUMERIC=C
+# The below environment variables only affect current shell
+# So if you run again from a terminal. you need to run the script again
+# see how this is sourced in monteverdi.sh and mapla.sh
 
-if [ -z "\$OTB_USE_SYSTEM_GTK" ] || [ "\$OTB_USE_SYSTEM_GTK" == "0" ]; then
+# unset any existing LD_LIBRARY_PATH
+unset LD_LIBRARY_PATH
+
+# if OTB_USE_SYSTEM_GTK is not set or is set to zero,
+# we must include <OUT_DIR>/lib/gtk because glib files are
+# installed there. 
+
+# OTB_USE_SYSTEM_GTK is not set by default
+if [ -z "\$OTB_USE_SYSTEM_GTK" ] || [ "\$OTB_USE_SYSTEM_GTK" = "0" ]; then
   LD_LIBRARY_PATH=$OUT_DIR/lib/gtk
+  export LD_LIBRARY_PATH
 fi
 
-GDAL_DATA=$OUT_DIR/share/gdal
-GEOTIFF_CSV=$OUT_DIR/share/espg_csv
+# check and set OTB_APPLICATION_PATH
+if [ -z "\$OTB_APPLICATION_PATH" ] || [ "\$OTB_APPLICATION_PATH" = "" ]; then
+    OTB_APPLICATION_PATH=$OUT_DIR/lib/otb/applications
+else
+    OTB_APPLICATION_PATH=\$(readlink -f "\$OTB_APPLICATION_PATH")
+    if ! [ "\$OTB_APPLICATION_PATH" = "$OUT_DIR/lib/otb/applications" ]; then 
+	OTB_APPLICATION_PATH=$OUT_DIR/lib/otb/applications:\$OTB_APPLICATION_PATH
+    fi
+fi
 
-export GDAL_DATA
-export GEOTIFF_CSV
-export LD_LIBRARY_PATH
-EOF
+# Add bin direcotory to system PATH
+PATH=$OUT_DIR/bin:\$PATH
 
-cat > "$OUT_DIR/otbenv.profile" << EOF
-#!/bin/sh
-PATH=\$PATH:$OUT_DIR/bin
+# export PYTHONPATH to import otbApplication.py
 PYTHONPATH=$OUT_DIR/lib/python:\$PYTHONPATH
+
+# set numeric locale to C
+LC_NUMERIC=C
+
+# set GDAL_DATA variable used by otb application
 GDAL_DATA=$OUT_DIR/share/gdal
-GEOTIFF_CSV=$OUT_DIR/share/espg_csv
 
-export LC_NUMERIC=C
-export PATH
+# set GEOTIFF_CSV variable used by otb application
+GEOTIFF_CSV=$OUT_DIR/share/epsg_csv
+
+# export variables
+export LC_NUMERIC
 export GDAL_DATA
 export GEOTIFF_CSV
+export OTB_APPLICATION_PATH
+export PATH
 export PYTHONPATH
+
 EOF
 
+
 chmod +x "$OUT_DIR/otbenv.profile"
 
 fi
@@ -97,9 +116,15 @@ fi
 
 
 cat > "$OUT_DIR/bin/qt.conf" << EOF
-
+[Paths]
+Translations=$OUT_DIR/lib/qt4/translations
+Plugins=$OUT_DIR/lib/qt4/plugins
 EOF
 
+WITH_PYTHON=@WITH_PYTHON@
+
+if [ "$WITH_PYTHON" = true ] ; then
+
 if [ ! -f "$OTB_PYTHON_EXE" ] ; then
     OTB_PYTHON_EXE=$(which python)
 fi
@@ -110,15 +135,23 @@ python_major_version=$($OTB_PYTHON_EXE -c "import sys;print(sys.version_info[0])
 python_minor_version=$($OTB_PYTHON_EXE -c "import sys;print(sys.version_info[1])")
 python_patch_version=$($OTB_PYTHON_EXE -c "import sys;print(sys.version_info[2])")
 python_version="$python_major_version.$python_minor_version.$python_patch_version"
-printf %s\\n "Python executable found in : $OTB_PYTHON_EXE ($python_version)"
 
-if [ "$python_major_version" -gt 2 ]; then
+python_check_failed() {
+    printf %s\\n "*****Error occured during installation******"
     printf %s\\n "OTB python bindings requires python2.6 or python2.7 but current detected python version is $python_version"
     printf %s\\n "If you have python2.6 or Python2.7 installed in your system "
     printf %s\\n "You should set OTB_PYTHON_EXE and re-run this installation script."
     printf %s\\n "eg: OTB_PYTHON_EXE=/path/to/python2.7 ./OTB-X.Y-Linux64.run"
-    exit 0;
+    exit 1;
+}
+if [ "$python_major_version" -gt 2 ]; then
+python_check_failed
+fi
+
+if [ "$python_minor_version" -lt 5 ]; then
+python_check_failed
 fi
+
 python_INSTSONAME=$($OTB_PYTHON_EXE -c "import sys; from distutils import sysconfig; print (sysconfig.get_config_var('INSTSONAME'));")
 
 python_lib_dirs="/usr/lib /usr/lib64 /usr/lib/x86_64-linux-gnu"
@@ -134,14 +167,17 @@ do
 done
 
 if [ "$found_python_lib" -eq "1" ]; then
-    printf %s\\n "Found python library: $python_lib_file_path "
+    printf %s\\n "OTB python bindings will be configured for $OTB_PYTHON_EXE ( version: $python_version )"
+    printf %s\\n "Found python library: $python_lib_file_path"
     ln -sf "$python_lib_file_path" "$OUT_DIR/lib/$python_INSTALLED_SONAME"
-    printf %s\\n "To use OTB python binding you need to export below environment variables:"
-    printf %s\\n "'export LD_LIBRARY_PATH=$OUT_DIR/lib' and"
+    "$PATCH_ELF_EXE" "--set-rpath" "$OUT_DIR/lib" "$OUT_DIR/lib/python/_otbApplication.so"
+    printf %s\\n "To use OTB python bindings:"
     printf %s\\n "'export PYTHONPATH=$OUT_DIR/lib/python'"
-    printf %s\\n "And then from python prompt import otbApplication."
-    printf %s\\n "eg: python -c 'import otbApplication'"
+    printf %s\\n "To test OTB python bindings:"
+    printf %s\\n "$OTB_PYTHON_EXE -c 'import otbApplication'"
 else
+    printf %s\\n "*****Error occured during installation******"
+    printf %s\\n "Python interpreter detected is : $OTB_PYTHON_EXE ( version: $python_version )"
     printf %s\\n "$python_INSTSONAME cannot be found in any of search directories."
     printf %s\\n "We had searched following directories $python_lib_dirs"
     printf %s\\n "If you don't have python-dev package installed, install it and make a symlink"
@@ -149,6 +185,8 @@ else
     printf %s\\n "eg: ln -s /usr/lib/x86_64-linux-gnu/$python_INSTSONAME $OUT_DIR/lib/$python_INSTALLED_SONAME"
 fi
 
+fi; 
+
 # PKG_OTB_VERSION_STRING=@PKG_OTB_VERSION_STRING@
 sed -i "s,|release|,@PKG_OTB_VERSION_STRING@,g" "$OUT_DIR/README"
 
@@ -157,3 +195,4 @@ rm -fr "$OUT_DIR/tools"
 rm -f  "$OUT_DIR/pkgsetup"
 
 rm -f  "$OUT_DIR/make_symlinks"
+
diff --git a/SuperBuild/Packaging/Files/macx_pkgsetup.in b/SuperBuild/Packaging/Files/macx_pkgsetup.in
index 5f46234ce2ca53194ffe62f1f7cdaa7d567a06d2..e84321c7174be103eede91cf5da7d3b35cc570be 100755
--- a/SuperBuild/Packaging/Files/macx_pkgsetup.in
+++ b/SuperBuild/Packaging/Files/macx_pkgsetup.in
@@ -36,6 +36,7 @@ SHORT_VERSION_STRING=@Monteverdi_VERSION_MAJOR@.@Monteverdi_VERSION_MINOR@
 I_AM_XDK=@IS_XDK@
 
 if [ "$I_AM_XDK" = true ] ; then
+
     sed -i "" "s,@DEPENDENCIES_INSTALL_DIR@,$OUT_DIR,g" lib/cmake/ITK-@PKG_ITK_SB_VERSION@/Modules/ITKZLIB.cmake
     sed -i "" "s,@DEPENDENCIES_INSTALL_DIR@,$OUT_DIR,g" lib/cmake/ITK-@PKG_ITK_SB_VERSION@/ITKConfig.cmake
     sed -i "" "s,@DEPENDENCIES_INSTALL_DIR@,$OUT_DIR,g" lib/cmake/ITK-@PKG_ITK_SB_VERSION@/ITKTargets-release.cmake
@@ -90,6 +91,25 @@ export GEOTIFF_CSV=$OUT_DIR/share/epsg_csv
 $OUT_DIR/bin/monteverdi "\$@"
 EOF
 
+    cat > "$OUT_DIR/Monteverdi.app/Contents/Resources/qt.conf" << EOF
+[Paths]
+Translations=$OUT_DIR/lib/qt4/translations
+Plugins=$OUT_DIR/lib/qt4/plugins
+EOF
+
+    cat > "$OUT_DIR/Mapla.app/Contents/Resources/qt.conf" << EOF
+[Paths]
+Translations=$OUT_DIR/lib/qt4/translations
+Plugins=$OUT_DIR/lib/qt4/plugins
+EOF
+
+    cat > "$OUT_DIR/bin/qt.conf" << EOF
+[Paths]
+Translations=$OUT_DIR/lib/qt4/translations
+Plugins=$OUT_DIR/lib/qt4/plugins
+EOF
+        
+    
     chmod +x "$OUT_DIR/Monteverdi.app/Contents/MacOS/Monteverdi"
 
     cp "Mapla.app/Contents/Info.plist" "Monteverdi.app/Contents/Info.plist"
@@ -109,7 +129,7 @@ cat > "$OUT_DIR/otbenv.profile" << EOF
 PATH=\$PATH:$OUT_DIR/bin
 PYTHONPATH=$OUT_DIR/lib/python:\$PYTHONPATH
 GDAL_DATA=$OUT_DIR/share/gdal
-GEOTIFF_CSV=$OUT_DIR/share/espg_csv
+GEOTIFF_CSV=$OUT_DIR/share/epsg_csv
 
 export LC_NUMERIC=C
 export PATH
diff --git a/SuperBuild/Packaging/Files/otbenv.cmd b/SuperBuild/Packaging/Files/otbenv.cmd
index ac35b94e69a1619bc0493c369bd1d898dc5cd56e..493cfbde9719b9e0eb2f064022a58703961a4bc6 100644
--- a/SuperBuild/Packaging/Files/otbenv.cmd
+++ b/SuperBuild/Packaging/Files/otbenv.cmd
@@ -4,4 +4,4 @@ set PATH=%PATH%;%CURRENT_SCRIPT_DIR%\bin
 
 set GDAL_DATA=%CURRENT_SCRIPT_DIR%\share\gdal
 
-set GEOTIFF_CSV=%CURRENT_SCRIPT_DIR%\share\espg_csv
+set GEOTIFF_CSV=%CURRENT_SCRIPT_DIR%\share\epsg_csv
diff --git a/SuperBuild/Packaging/Files/otbenv.profile b/SuperBuild/Packaging/Files/otbenv.profile
index 094ee80f22fd006110b645e35f62ad25556f492d..e36e0d62d07e9beb270cae3159ecf586b4431ce6 100644
--- a/SuperBuild/Packaging/Files/otbenv.profile
+++ b/SuperBuild/Packaging/Files/otbenv.profile
@@ -6,7 +6,7 @@ CURRENT_DIR=`pwd`
 
 PATH=$PATH:$CURRENT_DIR/bin
 GDAL_DATA=$CURRENT_DIR/share/gdal
-GEOTIFF_CSV=$CURRENT_DIR/share/espg_csv
+GEOTIFF_CSV=$CURRENT_DIR/share/epsg_csv
 
 export PATH
 export GDAL_DATA
diff --git a/SuperBuild/Packaging/PMacros.cmake b/SuperBuild/Packaging/PMacros.cmake
index 15515b4a46928767069e82c39322111e3fc66ede..f2fae4528e7d55de7b1f45174248310e207cb31f 100644
--- a/SuperBuild/Packaging/PMacros.cmake
+++ b/SuperBuild/Packaging/PMacros.cmake
@@ -21,53 +21,32 @@ macro(macro_setup_cmake_project pkg)
     set(PKG_GENERATE_XDK OFF)
   endif()
 
-  set(ConfigureMonteverdi_H ${OTB_BINARY_DIR}/Modules/Visualization/MonteverdiCore/ConfigureMonteverdi.h)
-  if(NOT EXISTS ${ConfigureMonteverdi_H})
-    message(FATAL_ERROR "${ConfigureMonteverdi_H} does not exists. Cannot continue")
-  endif()
-
-  file(STRINGS "${ConfigureMonteverdi_H}" ConfigureMonteverdi_H_CONTENTS REGEX "^#define.Monteverdi_INSTALL_DATA_DIR")
-  string(REGEX REPLACE
-    "^#define.Monteverdi_INSTALL_DATA_DIR" ""
-    ConfigureMonteverdi_H_CONTENTS
-    ${ConfigureMonteverdi_H_CONTENTS} )
-
-  if(NOT ConfigureMonteverdi_H_CONTENTS)
-    message(FATAL_ERROR "parse error in ${ConfigureMonteverdi_H}. Cannot continue")
-  endif()
-
-  string(REGEX REPLACE "\"" "" PKG_OTB_INSTALL_DATA_DIR "${ConfigureMonteverdi_H_CONTENTS}")
-
-  if(NOT PKG_OTB_INSTALL_DATA_DIR)
-    message(FATAL_ERROR "parse error in ${ConfigureMonteverdi_H_CONTENTS}. Cannot continue")
-  endif()
-
-  string(STRIP "${PKG_OTB_INSTALL_DATA_DIR}" PKG_OTB_INSTALL_DATA_DIR)
     
   #set archive name inside loop
   file(WRITE "${PACKAGE_PROJECT_DIR}/src/CMakeLists.txt"
   "cmake_minimum_required(VERSION 3.2)
    include(CMakeParseArguments)
    include(CMakeDetermineSystem)
-   set(CMAKE_BUILD_TYPE             Release)
-   set(PACKAGE_OTB_SRC_DIR               \"${PACKAGE_OTB_SRC_DIR}\")
-   set(OTB_BINARY_DIR               \"${OTB_BINARY_DIR}\")
-   set(OTB_INSTALL_DIR              \"${OTB_INSTALL_DIR}\")
-   set(OTB_INSTALL_DATA_DIR         \"${PKG_OTB_INSTALL_DATA_DIR}\")
-   set(QT_PLUGINS_DIR               \"${QT_PLUGINS_DIR}\")
-   set(QT_TRANSLATIONS_DIR          \"${QT_TRANSLATIONS_DIR}\")
-   set(DEPENDENCIES_INSTALL_DIR     \"${DEPENDENCIES_INSTALL_DIR}\")
-   set(PACKAGE_SUPPORT_FILES_DIR    \"${PACKAGE_OTB_SRC_DIR}/SuperBuild/Packaging/Files\")
-
-   set(CMAKE_INSTALL_PREFIX         \"${CMAKE_INSTALL_PREFIX}\")
-   set(PKG_ITK_SB_VERSION           \"${PKG_ITK_SB_VERSION}\")
-   set(PKG_OTB_VERSION_MAJOR        \"${PKG_OTB_VERSION_MAJOR}\")
-   set(PKG_OTB_VERSION_MINOR        \"${PKG_OTB_VERSION_MINOR}\")
-   set(PKG_OTB_VERSION_PATCH        \"${PKG_OTB_VERSION_PATCH}\")
-   set(PKG_OTB_VERSION_STRING       \"${PKG_OTB_VERSION_STRING}\")
+   set(CMAKE_BUILD_TYPE              Release)
+   set(PACKAGE_OTB_SRC_DIR           \"${PACKAGE_OTB_SRC_DIR}\")
+   set(OTB_BINARY_DIR                \"${OTB_BINARY_DIR}\")
+   set(OTB_INSTALL_DIR               \"${OTB_INSTALL_DIR}\")
+   set(QT_PLUGINS_DIR                \"${QT_PLUGINS_DIR}\")
+   set(QT_TRANSLATIONS_DIR           \"${QT_TRANSLATIONS_DIR}\")
+   set(DEPENDENCIES_INSTALL_DIR      \"${DEPENDENCIES_INSTALL_DIR}\")
+   set(PACKAGE_SUPPORT_FILES_DIR     \"${PACKAGE_OTB_SRC_DIR}/SuperBuild/Packaging/Files\")
+   set(CMAKE_INSTALL_PREFIX          \"${CMAKE_INSTALL_PREFIX}\")
+   set(PKG_ITK_SB_VERSION            \"${PKG_ITK_SB_VERSION}\")
+   set(PKG_OTB_VERSION_MAJOR         \"${PKG_OTB_VERSION_MAJOR}\")
+   set(PKG_OTB_VERSION_MINOR         \"${PKG_OTB_VERSION_MINOR}\")
+   set(PKG_OTB_VERSION_PATCH         \"${PKG_OTB_VERSION_PATCH}\")
+   set(PKG_OTB_VERSION_STRING        \"${PKG_OTB_VERSION_STRING}\")
+   set(PYTHON_EXECUTABLE             \"${PYTHON_EXECUTABLE}\")
    set(PKG_GENERATE_XDK              ${PKG_GENERATE_XDK})
    set(PATCHELF_PROGRAM              ${PATCHELF_PROGRAM})
-   set(PYTHON_EXECUTABLE             \"${PYTHON_EXECUTABLE}\")
+   set(OTB_TARGET_SYSTEM_ARCH        ${OTB_TARGET_SYSTEM_ARCH})
+   set(OTB_TARGET_SYSTEM_ARCH_IS_X64 ${OTB_TARGET_SYSTEM_ARCH_IS_X64})   
+   set(OTB_WRAP_PYTHON               ${OTB_WRAP_PYTHON})
    ${EXTRA_CACHE_CONFIG}
    include(${SUPERBUILD_SOURCE_DIR}/Packaging/PackageHelper.cmake)
    macro_super_package(STAGE_DIR \"${archive_name}\")"
diff --git a/SuperBuild/Packaging/PackageHelper.cmake b/SuperBuild/Packaging/PackageHelper.cmake
index 1f80363b06b1fae32891d614976d75e4d6137e72..1d1aa8b6245972690585793272c1e9a71cb8107c 100644
--- a/SuperBuild/Packaging/PackageHelper.cmake
+++ b/SuperBuild/Packaging/PackageHelper.cmake
@@ -53,7 +53,8 @@ macro(macro_super_package)
       )
 
     if(NOT python_INSTALLED_SONAME_rv EQUAL 0)
-      message( FATAL_ERROR "python_INSTALLED_SONAME_rv=${python_INSTALLED_SONAME_rv}: Cannot find python library")
+      message( FATAL_ERROR
+	"python_INSTALLED_SONAME_rv=${python_INSTALLED_SONAME_rv}: Cannot find python library")
     endif()
     set(python_INSTALLED_SONAME "${python_INSTALLED_SONAME_ov}")
     
@@ -64,6 +65,33 @@ macro(macro_super_package)
     if(MSVC)
       list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/bin") #all other dlls
       list(APPEND PKG_SEARCHDIRS "${DEPENDENCIES_INSTALL_DIR}/lib") #Qt & Qwt dlls
+      if(DEFINED ENV{UniversalCRTSdkDir})
+        file(TO_CMAKE_PATH "$ENV{UniversalCRTSdkDir}" UCRT_SDK_DIR)
+        list(
+          APPEND
+          PKG_SEARCHDIRS
+          "${UCRT_SDK_DIR}/Redist/ucrt/DLLs/${OTB_TARGET_SYSTEM_ARCH}"
+          ) #ucrt dlls
+      else()
+        message(FATAL_ERROR
+	  "UniversalCRTSdkDir variable not set. 
+          call vcvarsall.bat <arch> first before starting build.")
+      endif()
+
+      #addtional msvc redist dll from VCINSTALLDIR
+      if(DEFINED ENV{VCINSTALLDIR})
+        file(TO_CMAKE_PATH "$ENV{VCINSTALLDIR}" PKG_VCINSTALLDIR)
+        list(
+          APPEND
+          PKG_SEARCHDIRS
+          "${PKG_VCINSTALLDIR}/redist/${OTB_TARGET_SYSTEM_ARCH}/Microsoft.VC140.CRT/"
+          "${PKG_VCINSTALLDIR}/redist/${OTB_TARGET_SYSTEM_ARCH}/Microsoft.VC140.OPENMP/"
+          )
+      else()
+        message(FATAL_ERROR
+	  "VCINSTALLDIR variable not set. call vcvarsall.bat <arch> first before starting build.")
+      endif()
+
     else()
       file(GLOB MXE_GCC_LIB_DIR "${DEPENDENCIES_INSTALL_DIR}/bin/gcc*")
       list(APPEND PKG_SEARCHDIRS ${MXE_GCC_LIB_DIR})
@@ -132,10 +160,18 @@ macro(macro_super_package)
       file(APPEND ${CMAKE_BINARY_DIR}/make_symlinks
         "${make_symlink_cmd}\n")
     endforeach()
+    
+    set(WITH_PYTHON "false")
+    if(OTB_WRAP_PYTHON)
+       set(WITH_PYTHON "true")
+     endif()
 
-    set(IS_XDK "false")
+    set(IS_XDK "false")     
     if(PKG_GENERATE_XDK)
       set(IS_XDK "true")
+      set(WITH_PYTHON "false")
+      message(STATUS "OTB_WRAP_PYTHON is set. But this will not be included in XDK")
+
       if("${PKG_ITK_SB_VERSION}" STREQUAL "")
         message(FATAL_ERROR "PKG_ITK_SB_VERSION not set. This is required for XDK")
       endif()
@@ -170,9 +206,9 @@ macro(macro_super_package)
     func_install_xdk_files()
   endif()
 
-  # We need qt.conf on windows and linux. macx is still to be tested.
-  # So just not add this without testing
-  if(NOT APPLE)
+  # We need qt.conf on windows. for macx and linux we write it
+  # after extracting package
+  if(WIN32 AND NOT PKG_GENERATE_XDK)
     install(FILES
       ${PACKAGE_SUPPORT_FILES_DIR}/qt.conf
       DESTINATION ${PKG_STAGE_DIR}/bin
@@ -373,7 +409,8 @@ function(func_install_support_files)
 
   ####################### install GDAL data ############################
   if(NOT EXISTS "${GDAL_DATA}/epsg.wkt")
-    message(FATAL_ERROR "Cannot generate package without GDAL_DATA : ${GDAL_DATA} ${DEPENDENCIES_INSTALL_DIR}")
+    message(FATAL_ERROR
+      "Cannot generate package without GDAL_DATA : ${GDAL_DATA} ${DEPENDENCIES_INSTALL_DIR}")
   endif()
 
   install(DIRECTORY ${GDAL_DATA} DESTINATION ${PKG_SHARE_DEST_DIR})
@@ -389,7 +426,8 @@ function(func_install_support_files)
     install(DIRECTORY ${PKG_SHARE_SOURCE_DIR}/proj DESTINATION ${PKG_SHARE_DEST_DIR})
   endif()
 
-  set(PKG_VERSION_FILE "${OTB_INSTALL_DIR}/share/doc/${PKG_OTB_VERSION_MAJOR}.${PKG_OTB_VERSION_MINOR}/VERSION")
+  set(PKG_VERSION_FILE
+    "${OTB_INSTALL_DIR}/share/doc/${PKG_OTB_VERSION_MAJOR}.${PKG_OTB_VERSION_MINOR}/VERSION")
   
   ####################### Install copyrights ##########################
   if(NOT MINGW)
@@ -491,10 +529,39 @@ function(func_install_monteverdi_support_files)
 
   #<prefix>/share for otb i18n directory. This is different from qt's i18N directory
   #which is <prefix>/share/qt4/translations.
-  #set(PKG_xxOTB_Ixxx18N_DIR "${PKG_STAGE_DIR}/${OTB_INSTALL_DATA_DIR}/i18n")
+  #set(PKG_xxOTB_Ixxx18N_DIR "${PKG_STAGE_DIR}/${PKG_OTB_INSTALL_DATA_DIR}/i18n")
+  # we find this value by parsing ConfigureMonteverdi.h
+  set(ConfigureMonteverdi_H "${OTB_BINARY_DIR}/Modules/Visualization/MonteverdiCore/ConfigureMonteverdi.h")
+  if(NOT EXISTS "${ConfigureMonteverdi_H}")
+    message(FATAL_ERROR "${ConfigureMonteverdi_H} does not exists. Cannot continue")
+  endif()
+
+  file(
+    STRINGS "${ConfigureMonteverdi_H}"
+    ConfigureMonteverdi_H_CONTENTS
+    REGEX "^#define.Monteverdi_INSTALL_DATA_DIR")
+
+  string(REGEX REPLACE
+    "^#define.Monteverdi_INSTALL_DATA_DIR" ""
+    ConfigureMonteverdi_H_CONTENTS
+    ${ConfigureMonteverdi_H_CONTENTS} )
+
+  if(NOT ConfigureMonteverdi_H_CONTENTS)
+    message(FATAL_ERROR "Parse error in ${ConfigureMonteverdi_H}. Cannot continue")
+  endif()
 
-  set(PKG_OTB_TRANSLATIONS_DIRNAME "${OTB_INSTALL_DATA_DIR}/i18n")
+  string(
+    REGEX REPLACE "\"" ""
+    PKG_OTB_INSTALL_DATA_DIR
+    "${ConfigureMonteverdi_H_CONTENTS}")
+
+  if(NOT PKG_OTB_INSTALL_DATA_DIR)
+    message(FATAL_ERROR "parse error in ${ConfigureMonteverdi_H_CONTENTS}. Cannot continue")
+  endif()
   
+  string(STRIP "${PKG_OTB_INSTALL_DATA_DIR}" PKG_OTB_INSTALL_DATA_DIR)
+
+  set(PKG_OTB_TRANSLATIONS_DIRNAME "${PKG_OTB_INSTALL_DATA_DIR}/i18n")
 
   # Just check if required variables are defined.
   foreach(req
@@ -548,7 +615,11 @@ endfunction()
 
 macro(macro_empty_package_staging_directory)
   message(STATUS "Empty package staging directory: ${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}")
-  execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}")
+  execute_process(
+    COMMAND ${CMAKE_COMMAND}
+    -E remove_directory
+    "${CMAKE_INSTALL_PREFIX}/${PKG_STAGE_DIR}"
+    )
 endmacro() #macro_empty_package_staging_directory
 
 #NOTE:
@@ -583,7 +654,9 @@ function(func_prepare_package)
   set(VAR_IN_PKGSETUP_CONFIGURE "bin/otbApplicationLauncherCommandLine")
   set(PKG_PEFILES "${OTB_INSTALL_DIR}/bin/otbApplicationLauncherCommandLine${EXE_EXT}")
   if(NOT EXISTS "${OTB_INSTALL_DIR}/bin/otbApplicationLauncherCommandLine${EXE_EXT}")
-    message(FATAL_ERROR "${OTB_INSTALL_DIR}/bin/otbApplicationLauncherCommandLine${EXE_EXT} not found.")
+    message(
+      FATAL_ERROR
+      "${OTB_INSTALL_DIR}/bin/otbApplicationLauncherCommandLine${EXE_EXT} not found.")
   endif()
 
   set(EXE_FILES)
@@ -615,6 +688,11 @@ function(func_prepare_package)
     endforeach() #EXE_SEARCH_DIR
   endforeach()
 
+  # special case for msvc: ucrtbase.dll must be explicitly vetted.
+  if(MSVC)
+    list(APPEND PKG_PEFILES "ucrtbase.dll")
+  endif()
+  
   #loop again to report if anything is not found
   foreach( EXE_FILE ${EXE_FILES} )
     if(NOT FOUND_${EXE_FILE})
@@ -628,23 +706,50 @@ function(func_prepare_package)
   #NOTE: this is not used in windows yet..
   foreach(OTB_APP_SO ${OTB_APPS_LIST})
     get_filename_component(OTB_APP_SO_NAME ${OTB_APP_SO} NAME)
-    set(VAR_IN_PKGSETUP_CONFIGURE "${VAR_IN_PKGSETUP_CONFIGURE} lib/otb/applications/${OTB_APP_SO_NAME}")
+    set(VAR_IN_PKGSETUP_CONFIGURE
+      "${VAR_IN_PKGSETUP_CONFIGURE} lib/otb/applications/${OTB_APP_SO_NAME}")
   endforeach()
 
   list(APPEND PKG_PEFILES ${OTB_APPS_LIST})
   if(EXISTS "${OTB_INSTALL_DIR}/lib/otb/python/_otbApplication${PYMODULE_EXT}")
-    list(APPEND PKG_PEFILES "${OTB_INSTALL_DIR}/lib/otb/python/_otbApplication${PYMODULE_EXT}")
-    install(DIRECTORY ${OTB_INSTALL_DIR}/lib/otb/python DESTINATION ${PKG_STAGE_DIR}/lib)
+    #DO NOT ADD _otbApplication.* to PKG_PEFILES. we install it in next step with
+    # install( DIRECTORY ..
+    # list(
+    #   APPEND
+    #   PKG_PEFILES
+    #   "${OTB_INSTALL_DIR}/lib/otb/python/_otbApplication${PYMODULE_EXT}"
+    #   )
+
+    install(
+      DIRECTORY
+      ${OTB_INSTALL_DIR}/lib/otb/python
+      DESTINATION ${PKG_STAGE_DIR}/lib/
+      )
+  else()
+    if(OTB_WRAP_PYTHON)
+      message(FATAL_ERROR "OTB_WRAP_PYTHON is set , but cannot find _otbApplication${PYMODULE_EXT}")
+      endif()
   endif()
 
-  set(ALLOWED_SYSTEM_DLLS_SEARCH_PATHS
+  # Take gtk libs from system. we should fix this to take from custom
+  # build location
+  set(GTK_SYSTEM_LIBS_SEARCH_PATHS
     /usr/lib
     /lib64 )
 
   func_install_support_files()
 
-  execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR}/temp_so_names_dir")
-  execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/temp_so_names_dir")
+  execute_process(
+    COMMAND ${CMAKE_COMMAND}
+    -E remove_directory
+    "${CMAKE_BINARY_DIR}/temp_so_names_dir"
+    )
+  
+  execute_process(
+    COMMAND ${CMAKE_COMMAND}
+    -E make_directory
+    "${CMAKE_BINARY_DIR}/temp_so_names_dir"
+    )
 
   set(alldlls)
   set(notfound_dlls)
@@ -661,7 +766,7 @@ function(func_prepare_package)
       if(${found_index} GREATER -1)
         #find_file (<VAR> NAMES name PATHS paths... NO_DEFAULT_PATH)
         find_file ( ${allowed_system_dll}_abs_path NAMES ${allowed_system_dll}
-          PATHS ${ALLOWED_SYSTEM_DLLS_SEARCH_PATHS} NO_DEFAULT_PATH)
+          PATHS ${GTK_SYSTEM_LIBS_SEARCH_PATHS} NO_DEFAULT_PATH)
         if(${allowed_system_dll}_abs_path)
           file(GLOB fff "${${allowed_system_dll}_abs_path}*")
           foreach(f ${fff})
@@ -711,8 +816,15 @@ function(func_process_deps infile)
     string(TOLOWER "${infile}" infile_lower )
   endif()
 
+  # is_system_dll is first pass check the file is not a system dll
+  # there is a second pass after looking all searchdirs which is where
+  # we make the call to list it as not-found-dlls
   is_system_dll(is_system "${infile}")
   if(EXISTS ${infile} AND NOT is_system)
+    if(APPLE)
+      # We want all non-system deps to start with rpath
+      message(FATAL_ERROR "Found dependency without @rpath : ${infile}")
+    endif()
     get_filename_component(infile ${infile} NAME)
   endif()
 
@@ -734,6 +846,7 @@ function(func_process_deps infile)
         if(EXISTS ${SEARCHDIR}/${infile})
           set(DLL_FOUND TRUE)
           message(STATUS "Processing ${SEARCHDIR}/${infile}")
+ 
           is_file_executable("${SEARCHDIR}/${infile}" is_executable)
           if(is_executable)
             file(APPEND ${CMAKE_BINARY_DIR}/install_to_${DEST_BIN_DIR} "${SEARCHDIR}/${infile}\n")
@@ -785,8 +898,11 @@ function(func_process_deps infile)
           endif()
           if(WIN32)
             if(MSVC)
-              string(REGEX MATCHALL "dependencies.(.*[Dd][Ll][Ll])" loader_ov "${loader_ov}")
-              string(REGEX REPLACE "dependencies.." "" loader_ov "${loader_ov}")
+              #skip entries from section 'delay load dependencies'
+              string(REGEX MATCHALL 
+              "Image.has.the.following.dependencies.(.*[Dd][Ll][Ll])" loader_ov "${loader_ov}")
+              string(REGEX REPLACE 
+              "Image.has.the.following.dependencies.." "" loader_ov "${loader_ov}")
               #beware of .DLL and .dll
               string(REGEX REPLACE ".DLL" ".dll" loader_ov "${loader_ov}")
               #convert to cmake list
@@ -988,7 +1104,6 @@ function(func_lisp install_list )
 endfunction() # func_lisp
 
 set(WINDOWS_SYSTEM_DLLS
-  msvc.*dll
   user32.dll
   gdi32.dll
   shell32.dll
@@ -1009,14 +1124,12 @@ set(WINDOWS_SYSTEM_DLLS
   glu32.dll
   rpcrt4.dll
   winspool.drv
-  api-ms-win-crt*.*.dll
-  vcruntime*.*.dll
   normaliz.dll
-  concrt*.*.dll
   odbc32.dll
   psapi.dll
   python...dll
-  vcomp*.*.dll)
+  Image.has.the.following.delay.load
+  )
 
 set(LINUX_SYSTEM_DLLS
   libm.so
diff --git a/SuperBuild/patches/BOOST/boost-2-fix_quadmath-linux.diff b/SuperBuild/patches/BOOST/boost-2-fix_quadmath-linux.diff
new file mode 100755
index 0000000000000000000000000000000000000000..164cbacc66a4edaeb60a3396689cebdc127f1bd0
--- /dev/null
+++ b/SuperBuild/patches/BOOST/boost-2-fix_quadmath-linux.diff
@@ -0,0 +1,77 @@
+This patch is taken from boostorg github.
+https://github.com/boostorg/math/commit/74ff2db959c5fa75bec770c41ed2951a740fe936.diff
+
+diff --git a/include/boost/math/special_functions/fpclassify.hpp b/include/boost/math/special_functions/fpclassify.hpp
+index 0a4e1ac..58fad13 100644
+--- a/boost/math/special_functions/fpclassify.hpp
++++ b/boost/math/special_functions/fpclassify.hpp
+@@ -81,7 +81,12 @@ is used.
+ #include <float.h>
+ #endif
+ #ifdef BOOST_MATH_USE_FLOAT128
++#ifdef __has_include
++#if  __has_include("quadmath.h")
+ #include "quadmath.h"
++#define BOOST_MATH_HAS_QUADMATH_H
++#endif
++#endif
+ #endif
+ 
+ #ifdef BOOST_NO_STDC_NAMESPACE
+@@ -124,9 +129,14 @@ inline bool is_nan_helper(T, const boost::false_type&)
+ {
+    return false;
+ }
+-#ifdef BOOST_MATH_USE_FLOAT128
++#if defined(BOOST_MATH_USE_FLOAT128) 
++#if defined(BOOST_MATH_HAS_QUADMATH_H)
+ inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnanq(f); }
+ inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnanq(f); }
++#else
++inline bool is_nan_helper(__float128 f, const boost::true_type&) { return ::isnan(static_cast<double>(f)); }
++inline bool is_nan_helper(__float128 f, const boost::false_type&) { return ::isnan(static_cast<double>(f)); }
++#endif
+ #endif
+ }
+ 
+@@ -519,7 +529,7 @@ inline bool (isinf)(long double x)
+    return detail::isinf_impl(static_cast<value_type>(x), method());
+ }
+ #endif
+-#ifdef BOOST_MATH_USE_FLOAT128
++#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H)
+ template<>
+ inline bool (isinf)(__float128 x)
+ {
+@@ -611,7 +621,7 @@ inline bool (isnan)(long double x)
+    return detail::isnan_impl(x, method());
+ }
+ #endif
+-#ifdef BOOST_MATH_USE_FLOAT128
++#if defined(BOOST_MATH_USE_FLOAT128) && defined(BOOST_MATH_HAS_QUADMATH_H)
+ template<>
+ inline bool (isnan)(__float128 x)
+ {
+diff --git a/include/boost/math/tools/config.hpp b/include/boost/math/tools/config.hpp
+index ffd0ab4..75d29b6 100644
+--- a/boost/math/tools/config.hpp
++++ b/boost/math/tools/config.hpp
+@@ -265,18 +265,6 @@
+ #  define BOOST_MATH_INT_VALUE_SUFFIX(RV, SUF) RV##SUF
+ #endif
+ //
+-// Test whether to support __float128, if we don't have quadmath.h then this can't currently work:
+-//
+-#ifndef BOOST_MATH_USE_FLOAT128
+-#ifdef __has_include
+-#if ! __has_include("quadmath.h")
+-#define BOOST_MATH_DISABLE_FLOAT128
+-#endif
+-#elif !defined(BOOST_ARCH_X86)
+-#define BOOST_MATH_DISABLE_FLOAT128
+-#endif
+-#endif
+-//
+ // And then the actual configuration:
+ //
+ #if defined(_GLIBCXX_USE_FLOAT128) && defined(BOOST_GCC) && !defined(__STRICT_ANSI__) \
diff --git a/SuperBuild/patches/JPEG/jpeg-fix-rpath-macx.diff b/SuperBuild/patches/JPEG/jpeg-fix-rpath-macx.diff
new file mode 100755
index 0000000000000000000000000000000000000000..b28d47b0a6cacdd9caf7967c4474da9ef3462266
--- /dev/null
+++ b/SuperBuild/patches/JPEG/jpeg-fix-rpath-macx.diff
@@ -0,0 +1,101 @@
+diff -burN libjpeg-turbo-1.4.1.orig/configure libjpeg-turbo-1.4.1/configure
+--- libjpeg-turbo-1.4.1.orig/configure	2016-11-02 11:46:15.000000000 +0100
++++ libjpeg-turbo-1.4.1/configure	2016-11-02 11:51:39.000000000 +0100
+@@ -8233,16 +8233,16 @@
+     	  lt_int_apple_cc_single_mod=yes
+     	fi
+     	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-    	  archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++    	  archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+     	else
+-        archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++        archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+       fi
+       module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+       # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         else
+-          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         fi
+           module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+       hardcode_direct=no
+@@ -10132,10 +10132,10 @@
+       ;;
+     esac
+     output_verbose_link_cmd='echo'
+-    archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring'
++    archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name @rpath/$soname $verstring'
+     module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+     # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+-    archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++    archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag  -o $lib $libobjs $deplibs$compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+     module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+     hardcode_direct=no
+     hardcode_automatic=yes
+@@ -11217,17 +11217,17 @@
+       lt_int_apple_cc_single_mod=yes
+     fi
+     if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-      archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++      archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+     else
+-      archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++      archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+     fi
+     module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ 
+     # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+     if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+     else
+-      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++      archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+     fi
+     module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+     hardcode_direct_CXX=no
+@@ -15122,16 +15122,16 @@
+     	  lt_int_apple_cc_single_mod=yes
+     	fi
+     	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-    	  archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++    	  archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+     	else
+-        archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++        archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+       fi
+       module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+       # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         else
+-          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++          archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         fi
+           module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+       hardcode_direct_F77=no
+@@ -17490,16 +17490,16 @@
+     	  lt_int_apple_cc_single_mod=yes
+     	fi
+     	if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-    	  archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++    	  archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+     	else
+-        archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
++        archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring'
+       fi
+       module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+       # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+-          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         else
+-          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
++          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name @rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         fi
+           module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+       hardcode_direct_GCJ=no
diff --git a/SuperBuild/patches/TIFF/tiff-1-noopengl-linux.diff b/SuperBuild/patches/TIFF/tiff-1-noopengl-linux.diff
new file mode 100755
index 0000000000000000000000000000000000000000..04b1ef4f181fe243c5d9413e76a129e57981689d
--- /dev/null
+++ b/SuperBuild/patches/TIFF/tiff-1-noopengl-linux.diff
@@ -0,0 +1,38 @@
+diff -burN tiff-4.0.6.orig/CMakeLists.txt tiff-4.0.6/CMakeLists.txt
+--- tiff-4.0.6.orig/CMakeLists.txt	2016-10-27 17:24:17.000000000 +0200
++++ tiff-4.0.6/CMakeLists.txt	2016-10-27 17:25:43.000000000 +0200
+@@ -602,19 +602,23 @@
+ endif()
+ 
+ # OpenGL and GLUT
+-find_package(OpenGL)
+-find_package(GLUT)
+-set(HAVE_OPENGL FALSE)
+-if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
++option(WITH_OPENGL "Enable opengl and glut support" ON)
++
++if(WITH_OPENGL)  
++  find_package(OpenGL)
++  find_package(GLUT)
++  set(HAVE_OPENGL FALSE)
++  if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
+   set(HAVE_OPENGL TRUE)
++  endif()
++  # Purely to satisfy the generated headers:
++  check_include_file(GL/gl.h HAVE_GL_GL_H)
++  check_include_file(GL/glu.h HAVE_GL_GLU_H)
++  check_include_file(GL/glut.h HAVE_GL_GLUT_H)
++  check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
++  check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
++  check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
+ endif()
+-# Purely to satisfy the generated headers:
+-check_include_file(GL/gl.h HAVE_GL_GL_H)
+-check_include_file(GL/glu.h HAVE_GL_GLU_H)
+-check_include_file(GL/glut.h HAVE_GL_GLUT_H)
+-check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
+-check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
+-check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
+ 
+ # Win32 IO
+ set(win32_io FALSE)
diff --git a/SuperBuild/patches/TIFF/tiff-1-noopengl-macx.diff b/SuperBuild/patches/TIFF/tiff-1-noopengl-macx.diff
new file mode 100755
index 0000000000000000000000000000000000000000..04b1ef4f181fe243c5d9413e76a129e57981689d
--- /dev/null
+++ b/SuperBuild/patches/TIFF/tiff-1-noopengl-macx.diff
@@ -0,0 +1,38 @@
+diff -burN tiff-4.0.6.orig/CMakeLists.txt tiff-4.0.6/CMakeLists.txt
+--- tiff-4.0.6.orig/CMakeLists.txt	2016-10-27 17:24:17.000000000 +0200
++++ tiff-4.0.6/CMakeLists.txt	2016-10-27 17:25:43.000000000 +0200
+@@ -602,19 +602,23 @@
+ endif()
+ 
+ # OpenGL and GLUT
+-find_package(OpenGL)
+-find_package(GLUT)
+-set(HAVE_OPENGL FALSE)
+-if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
++option(WITH_OPENGL "Enable opengl and glut support" ON)
++
++if(WITH_OPENGL)  
++  find_package(OpenGL)
++  find_package(GLUT)
++  set(HAVE_OPENGL FALSE)
++  if(OPENGL_FOUND AND OPENGL_GLU_FOUND AND GLUT_FOUND)
+   set(HAVE_OPENGL TRUE)
++  endif()
++  # Purely to satisfy the generated headers:
++  check_include_file(GL/gl.h HAVE_GL_GL_H)
++  check_include_file(GL/glu.h HAVE_GL_GLU_H)
++  check_include_file(GL/glut.h HAVE_GL_GLUT_H)
++  check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
++  check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
++  check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
+ endif()
+-# Purely to satisfy the generated headers:
+-check_include_file(GL/gl.h HAVE_GL_GL_H)
+-check_include_file(GL/glu.h HAVE_GL_GLU_H)
+-check_include_file(GL/glut.h HAVE_GL_GLUT_H)
+-check_include_file(GLUT/glut.h HAVE_GLUT_GLUT_H)
+-check_include_file(OpenGL/gl.h HAVE_OPENGL_GL_H)
+-check_include_file(OpenGL/glu.h HAVE_OPENGL_GLU_H)
+ 
+ # Win32 IO
+ set(win32_io FALSE)
diff --git a/i18n/CMakeLists.txt b/i18n/CMakeLists.txt
index 189a109a10f9120c9f08c065ce6b0525e66f8693..5df5b6044f3f2e35ef7458ad3a8fa24697e93b3d 100644
--- a/i18n/CMakeLists.txt
+++ b/i18n/CMakeLists.txt
@@ -6,6 +6,7 @@ set( OTB_TS_TRANSLATIONS
 # en_US.ts
   fr_FR.ts
 )
+unset(OTB_QM_TRANSLATIONS)
 
 #----------------------------------------------------------------------------
 # Configuration option to enable creation/merging of source .ts files
@@ -24,24 +25,32 @@ if( OTBQt4_ENABLED )
       "WARNING: OTB_I18N_MERGE_TS:BOOL option is set to ON. 'make clean' will delete .ts files from source directory!"
       )
 
-    message( STATUS "Qt I18N source files: " ${OTB_QT_I18N_SOURCE_FILES} )
+    message( STATUS "Qt I18N source files: ${OTB_QT_I18N_SOURCE_FILES}")
 
     set( OTB_QT_I18N_PRO "${CMAKE_CURRENT_BINARY_DIR}/i18n.pro" )
 
-    generate_qt4_project( ${OTB_TS_TRANSLATIONS} ${OTB_QT_I18N_PRO} )
+    generate_qt4_project( ${OTB_QT_I18N_PRO} )
 
-    qt4_create_translation( OTB_QM_TRANSLATIONS
-      ${OTB_QT_I18N_PRO}
-      ${OTB_TS_TRANSLATIONS}
-      )
+    foreach(_ts_name ${OTB_TS_TRANSLATIONS})
+      get_filename_component(_abs_ts ${_ts_name} ABSOLUTE)
+
+      message( STATUS "Merge TS : ${_abs_ts}")
+      add_custom_command(OUTPUT ${_abs_ts}
+        COMMAND ${QT_LUPDATE_EXECUTABLE}
+        ARGS -locations none -pro ${OTB_QT_I18N_PRO} -ts ${_abs_ts}
+        DEPENDS
+          ${OTB_QT_I18N_HEADER_FILES}
+          ${OTB_QT_I18N_SOURCE_FILES}
+          ${OTB_QT_I18N_FORM_FILES}
+          ${OTB_QT_I18N_PRO}
+        VERBATIM)
+    endforeach()
+  endif()
 
-  else()
-    qt4_add_translation( OTB_QM_TRANSLATIONS
+  qt4_add_translation(OTB_QM_TRANSLATIONS
       ${OTB_TS_TRANSLATIONS}
       )
 
-  endif()
-
   # Custom build targets.
   add_custom_target( i18n ALL DEPENDS i18n_qt )
   add_custom_target( i18n_qt DEPENDS ${OTB_QM_TRANSLATIONS} )
diff --git a/i18n/fr_FR.ts b/i18n/fr_FR.ts
index 4f5d3f7508b639aecb9038a7eadf6540aa47c555..3127cae92a120fc18d8369046efbb674cdb7cc47 100644
--- a/i18n/fr_FR.ts
+++ b/i18n/fr_FR.ts
@@ -37,7 +37,7 @@
     <name>Mapla</name>
     <message>
         <source>Question!</source>
-        <translation>Question !</translation>
+        <translation type="obsolete">Question !</translation>
     </message>
     <message>
         <source>The following exception has been caught while initializing the software:
@@ -45,7 +45,7 @@
 %1
 
 The application may not function as expected. Do you want to continue?</source>
-        <translation>L&apos;exception suivante a été rattrapé pendant l&apos;inialisation du logiciel :
+        <translation type="obsolete">L&apos;exception suivante a été rattrapé pendant l&apos;inialisation du logiciel :
 
 %1
 
@@ -238,8 +238,8 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
         <translation></translation>
     </message>
     <message>
-        <source>Version M.m.pl (codename)</source>
-        <translation>Version M.m.pl (nom_de_code)</translation>
+        <source>OTB version M.m.pl (codename)</source>
+        <translation>Version OTB M.m.pl (nom_de_code)</translation>
     </message>
 </context>
 <context>
@@ -374,7 +374,7 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
         <translation></translation>
     </message>
     <message>
-        <source>Failed to instanciate OTB-application &apos;%1&apos;.</source>
+        <source>Failed to instantiate OTB-application &apos;%1&apos;.</source>
         <translation>Échec lors de l&apos;instanciation de l&apos;application OTB &apos;%1&apos;.</translation>
     </message>
 </context>
@@ -758,265 +758,19 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
         <translation></translation>
     </message>
 </context>
-<context>
-    <name>mvd::DatabaseBrowserController</name>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>Inconsistent Dataset disabled</source>
-        <translation type="obsolete">Jeu de données inconsistent désactivé</translation>
-    </message>
-    <message>
-        <source>Warning!</source>
-        <translation>Avertissement !</translation>
-    </message>
-    <message>
-        <source>Are you sure you want to delete dataset &apos;%1&apos;?</source>
-        <translation>Êtes-vous certain de vouloir supprimer le jeu de données &apos;%1&apos; ?</translation>
-    </message>
-    <message>
-        <source>Failed to load dataset.
-
-%1</source>
-        <translation>Échec lors du chargement du jeu de données
-
-%1</translation>
-    </message>
-    <message>
-        <source>Failed to load dataset.
-</source>
-        <translation>Échec lors du chargement du jeu de données.</translation>
-    </message>
-    <message>
-        <source>Data is not consistent.</source>
-        <translation>Les données sont incohérentes.</translation>
-    </message>
-    <message>
-        <source>
-- &apos;%1&apos;</source>
-        <translation type="obsolete">- &apos;%1&apos;</translation>
-    </message>
-    <message>
-        <source>Delete:%1</source>
-        <translation type="obsolete">Supprimer : %1</translation>
-    </message>
-    <message>
-        <source>Error!</source>
-        <translation>Erreur !</translation>
-    </message>
-    <message>
-        <source>Failed to remove &apos;%1&apos;.</source>
-        <translation>Impossible de supprimer &apos;%1&apos;.</translation>
-    </message>
-    <message>
-        <source>New group</source>
-        <translation>Nouveau groupe</translation>
-    </message>
-    <message>
-        <source>Also delete:</source>
-        <translation>Supprimer aussi :</translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseBrowserWidget</name>
-    <message>
-        <source>Form</source>
-        <translation>Formulaire</translation>
-    </message>
-    <message>
-        <source>Name</source>
-        <translation>Nom</translation>
-    </message>
-    <message>
-        <source>Datasets</source>
-        <translation type="obsolete">Jeux de données</translation>
-    </message>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>Search Dataset ...</source>
-        <translation type="obsolete">Rechercher un jeu de données...</translation>
-    </message>
-    <message>
-        <source>Search Dataset...</source>
-        <translation>Rechercher jeu de données...</translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseBrowserWidgetTest</name>
-    <message>
-        <source>Form</source>
-        <translation>Formulaire</translation>
-    </message>
-    <message>
-        <source>Name</source>
-        <translation>Nom</translation>
-    </message>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>Search Dataset...</source>
-        <translation>Rechercher jeu de données...</translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseConnection</name>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>SQLite database file &apos;%1&apos; not found!</source>
-        <translation>Fichier de base de données SQLite &apos;%1&apos; non trouvé !</translation>
-    </message>
-    <message>
-        <source>Failed to open database: </source>
-        <translation>Échec lors de l&apos;ouverture de la base de données :</translation>
-    </message>
-    <message>
-        <source>Failed to prepare query: </source>
-        <translation>Échec lors de la préparation de la requête :</translation>
-    </message>
-    <message>
-        <source>Failed to execute query: </source>
-        <translation>Échec de lors de l&apos;exécution de la requête :</translation>
-    </message>
-    <message>
-        <source>Failed to batch query: </source>
-        <translation>Échec lors de l&apos;exécution d&apos;une requête de traitement par lot :</translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseError</name>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>No database error</source>
-        <translation>Pas d&apos;erreur de base de données</translation>
-    </message>
-    <message>
-        <source>Database connection error</source>
-        <translation>Erreur de connexion à la base de données</translation>
-    </message>
-    <message>
-        <source>SQL statement syntax error</source>
-        <translation>Erreur de syntaxe de la requête SQL</translation>
-    </message>
-    <message>
-        <source>Database transaction failed error</source>
-        <translation>Erreur durant la transaction avec la base de données</translation>
-    </message>
-    <message>
-        <source>Unknown database error</source>
-        <translation>Erreur inconnue (base de données)</translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseModel</name>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>Failed to remove file &apos;%1&apos;.</source>
-        <translation type="obsolete">Échec de la suppression du fichier &apos;%1&apos;.</translation>
-    </message>
-    <message>
-        <source>Failed to access parent directory of &apos;%1&apos;.</source>
-        <translation type="obsolete">Echec de l&apos;accès au répertoire parent &apos;%1&apos;.</translation>
-    </message>
-    <message>
-        <source>Failed to remove dataset directory &apos;%1&apos;.</source>
-        <translation type="obsolete">Echec lors de la suppression du répertoire du dataset &apos;%1&apos;.</translation>
-    </message>
-    <message>
-        <source>%1 outdated datasets. Please clear cache directory.</source>
-        <translation>%1 datasets obsolètes. Veuillez vider votre répertoire de cache.</translation>
-    </message>
-    <message>
-        <source>Database format version %1 is not supported anymore.</source>
-        <translation>La version &apos;%1&apos; du format de la base de données n&apos;est plus supportée.</translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseQueries</name>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-</context>
-<context>
-    <name>mvd::DatabaseTreeWidget</name>
-    <message>
-        <source></source>
-        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
-        <translation></translation>
-    </message>
-    <message>
-        <source>Delete Dataset</source>
-        <translation type="obsolete">Supprimer dataset</translation>
-    </message>
-    <message>
-        <source>Rename Dataset</source>
-        <translation type="obsolete">Renommer dataset</translation>
-    </message>
-    <message>
-        <source>Delete dataset</source>
-        <translation>Supprimer le jeu de données</translation>
-    </message>
-    <message>
-        <source>Rename dataset</source>
-        <translation>Renommer le jeu de données</translation>
-    </message>
-    <message>
-        <source>Add group</source>
-        <translation>Ajouter un groupe</translation>
-    </message>
-    <message>
-        <source>Delete group</source>
-        <translation>Supprimer un groupe</translation>
-    </message>
-    <message>
-        <source>Rename group</source>
-        <translation>Renommer un groupe</translation>
-    </message>
-</context>
 <context>
     <name>mvd::DatasetCreationProgressDialog</name>
     <message>
         <source>Please wait while processing...</source>
-        <translation>Traitement en cours. Merci d&apos;attendre...</translation>
+        <translation type="obsolete">Traitement en cours. Merci d&apos;attendre...</translation>
     </message>
     <message>
         <source>Importing image:</source>
-        <translation>Import de l&apos;image:</translation>
-    </message>
-    <message>
-        <source>/home/otbval/LargeInput/mvd2/dataset.ds</source>
-        <translation></translation>
+        <translation type="obsolete">Import de l&apos;image:</translation>
     </message>
     <message>
         <source>into dataset:</source>
-        <translation>dans le jeu de données :</translation>
-    </message>
-    <message>
-        <source>/home/user/cache/mvd2/dataset.ds</source>
-        <translation></translation>
+        <translation type="obsolete">dans le jeu de données :</translation>
     </message>
     <message>
         <source></source>
@@ -1049,63 +803,63 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     </message>
     <message>
         <source>unknown</source>
-        <translation>inconnu(e)</translation>
+        <translation type="obsolete">inconnu(e)</translation>
     </message>
     <message>
         <source>File Informations</source>
-        <translation>Informations fichier</translation>
+        <translation type="obsolete">Informations fichier</translation>
     </message>
     <message>
         <source>File</source>
-        <translation>Fichier</translation>
+        <translation type="obsolete">Fichier</translation>
     </message>
     <message>
         <source>Directory</source>
-        <translation>Répertoire</translation>
+        <translation type="obsolete">Répertoire</translation>
     </message>
     <message>
         <source>Size in Bytes</source>
-        <translation>Taille (en octets)</translation>
+        <translation type="obsolete">Taille (en octets)</translation>
     </message>
     <message>
         <source>Image Informations</source>
-        <translation>Informations image</translation>
+        <translation type="obsolete">Informations image</translation>
     </message>
     <message>
         <source>Dimension</source>
-        <translation>Dimension</translation>
+        <translation type="obsolete">Dimension</translation>
     </message>
     <message>
         <source>Origin</source>
-        <translation>Origine</translation>
+        <translation type="obsolete">Origine</translation>
     </message>
     <message>
         <source>Number of components</source>
-        <translation>Nombre de composantes</translation>
+        <translation type="obsolete">Nombre de composantes</translation>
     </message>
     <message>
         <source>Block size</source>
-        <translation>Taille de bloc</translation>
+        <translation type="obsolete">Taille de bloc</translation>
     </message>
     <message>
         <source>Placename</source>
-        <translation>Toponyme</translation>
+        <translation type="obsolete">Toponyme</translation>
     </message>
     <message>
         <source>Metadatas</source>
-        <translation>Méta-données</translation>
+        <translation type="obsolete">Méta-données</translation>
     </message>
     <message>
         <source>Sensor</source>
-        <translation>Capteur</translation>
+        <translation type="obsolete">Capteur</translation>
     </message>
     <message>
         <source>Default RGB</source>
-        <translation>RVB par défaut</translation>
+        <translation type="obsolete">RVB par défaut</translation>
     </message>
     <message>
         <source>Estimated ground spacing</source>
-        <translation>Résolution au sol (estimée)</translation>
+        <translation type="obsolete">Résolution au sol (estimée)</translation>
     </message>
     <message>
         <source>Exception caught when checking version of dataset &apos;%1&apos;: </source>
@@ -1117,7 +871,7 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     </message>
     <message>
         <source>Exception caught when checking version of dataset &apos;%1&apos;.</source>
-        <translation>Exception rattrapée lors de la vérification de la version du jeu de données &apos;%1&apos;.</translation>
+        <translation type="obsolete">Exception rattrapée lors de la vérification de la version du jeu de données &apos;%1&apos;.</translation>
     </message>
 </context>
 <context>
@@ -1132,15 +886,15 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     <name>mvd::DatasetPropertiesWidget</name>
     <message>
         <source>Form</source>
-        <translation>Formulaire</translation>
+        <translation type="obsolete">Formulaire</translation>
     </message>
     <message>
         <source>Property</source>
-        <translation>Propriété</translation>
+        <translation type="obsolete">Propriété</translation>
     </message>
     <message>
         <source>Value</source>
-        <translation>Valeur</translation>
+        <translation type="obsolete">Valeur</translation>
     </message>
     <message>
         <source></source>
@@ -1249,7 +1003,7 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     </message>
     <message>
         <source>%1: Generating histogram (M)...</source>
-        <translation type="obsolete">%1: Generation de l&apos;histogramme (M)...</translation>
+        <translation>%1: Génération de l&apos;histogramme (M)...</translation>
     </message>
     <message>
         <source>%1: Histogram (M) generated (%2 ms).</source>
@@ -1271,6 +1025,10 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
         <source>%1: Histogram written (%2 ms)...</source>
         <translation>%1 : histogram écrit (%2 ms)...</translation>
     </message>
+    <message>
+        <source>Zero relevant pixels found when computing histogram (probably because of no-data settings)</source>
+        <translation>Aucun pixel utilisable lors du calcul d'histogramme (probablement à cause des réglages no-data)</translation>
+    </message>
 </context>
 <context>
     <name>mvd::HistogramPlotPicker</name>
@@ -1484,7 +1242,7 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     </message>
     <message>
         <source>The selected directory seems to be an previous mvd2 directory, nevertheless we will create a new mvd2 repository into the selected directory.</source>
-        <translation>Le répertoire sélectionné semble être un répertoire mvd2 antérieur ; néanmoins nous allons créer un nouveau dépôt mvd2 à l&apos;intérieur du répertoire sélectionné.</translation>
+        <translation type="obsolete">Le répertoire sélectionné semble être un répertoire mvd2 antérieur ; néanmoins nous allons créer un nouveau dépôt mvd2 à l&apos;intérieur du répertoire sélectionné.</translation>
     </message>
     <message>
         <source>Geoid file &apos;%1&apos; not found!</source>
@@ -1492,16 +1250,32 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     </message>
     <message>
         <source>An error occured while loading the geoid file, no geoid file will be used:</source>
-        <translation>Une erreur s&apos;est produite durant le chargement du fichier géoide, aucune géoide ne sera utilisée :</translation>
+        <translation type="obsolete">Une erreur s&apos;est produite durant le chargement du fichier géoide, aucune géoide ne sera utilisée :</translation>
     </message>
     <message>
         <source>An error occured while loading the DEM directory, no DEM will be used:</source>
-        <translation>Une erreur s&apos;est produite durant le chargement du répertoire MNT, aucun MNT ne sera utilisé :</translation>
+        <translation type="obsolete">Une erreur s&apos;est produite durant le chargement du répertoire MNT, aucun MNT ne sera utilisé :</translation>
     </message>
     <message>
         <source>Class &apos;I18nCoreApplication&apos; instance must be provided a QCoreApplication&apos; pointer at construction time!</source>
         <translation>Il faut fournir un pointeur vers une instance de &quot;QCoreApplication&quot; lors de la construction d&apos;une instance de la classe &quot;I18nCoreApplication&quot; !</translation>
     </message>
+    <message>
+        <source>Cannot access settings file.</source>
+        <translation>Impossible d'accéder au fichiers des paramètres</translation>
+    </message>
+    <message>
+        <source>Bad settings file format.</source>
+        <translation>Mauvais format pour le fichier de paramètres</translation>
+    </message>
+    <message>
+        <source>An error occurred while loading the geoid file, no geoid file will be used:</source>
+        <translation>Erreur lors du chargement du fichier géoide, aucun géoide ne sera utilisé:</translation>
+    </message>
+    <message>
+        <source>An error occurred while loading the DEM directory, no DEM will be used:</source>
+        <translation>Erreur lors du chargement du répertoire DEM, aucun DEM ne sera utilisé:</translation>
+    </message>
 </context>
 <context>
     <name>mvd::I18nMainWindow</name>
@@ -1516,7 +1290,7 @@ Veuillez, s&apos;il vous plait, supprimer votre répertoire de cache Monteverdi.
     </message>
     <message>
         <source>Do you want to specify a custom repository location?</source>
-        <translation>Voulez-vous définir un chemin de dépôt personnalisé ?</translation>
+        <translation type="obsolete">Voulez-vous définir un chemin de dépôt personnalisé ?</translation>
     </message>
     <message>
         <source>Please, select directory where the </source>
@@ -1536,7 +1310,7 @@ Default cache-directory location is: &apos;%1&apos;.
 Warning:
 - Your account needs to have write access to this directory;
 - Please be aware that this directory can consume significant disk space.</source>
-        <translation>Monteverdi maintient un dépôt où sont stockées des données additionnelles liées à chaque image (par exemple, réglage d&apos;affichage, histogrammes, aperçus etc.).
+        <translation type="obsolete">Monteverdi maintient un dépôt où sont stockées des données additionnelles liées à chaque image (par exemple, réglage d&apos;affichage, histogrammes, aperçus etc.).
 
 L&apos;emplacement par défaut du répertoire de cache est : &apos;%1&apos;.
 
@@ -1546,15 +1320,15 @@ Attention :
     </message>
     <message>
         <source>Please, select directory where the Monteverdi cache repository will be stored.</source>
-        <translation>Veuillez sélectionner le répertoire où sera stocké le dépôt de Monteverdi.</translation>
+        <translation type="obsolete">Veuillez sélectionner le répertoire où sera stocké le dépôt de Monteverdi.</translation>
     </message>
     <message>
         <source>Welcome new Monteverdi user!</source>
-        <translation>Bienvenu, nouvel utilisateur Monteverdi !</translation>
+        <translation type="obsolete">Bienvenu, nouvel utilisateur Monteverdi !</translation>
     </message>
     <message>
         <source>The selected directory already contain a mvd2 directory, no new database will be created</source>
-        <translation>The répertoire sélectionné contien déjà un répertoire mvd2 ; aucune nouvelle base de données ne va être créée</translation>
+        <translation type="obsolete">The répertoire sélectionné contien déjà un répertoire mvd2 ; aucune nouvelle base de données ne va être créée</translation>
     </message>
 </context>
 <context>
@@ -1566,7 +1340,7 @@ Attention :
     </message>
     <message>
         <source>Importing image &apos;%1&apos; as dataset into cache directory...</source>
-        <translation>Image &apos;%1&apos; en cours d&apos;import comme dataset dans le répertoire de cache...</translation>
+        <translation type="obsolete">Image &apos;%1&apos; en cours d&apos;import comme dataset dans le répertoire de cache...</translation>
     </message>
     <message>
         <source>Loading image &apos;%1&apos;...</source>
@@ -1690,7 +1464,7 @@ Si vous exécutez cette application via une système d&apos;écran déporté, le
     </message>
     <message>
         <source>Unable to list suppored OpenGL versions using QGLFormat. Qt version is %1. Please upgrade to Qt 4.7.0 or newer.</source>
-        <translation>Impossible de lister les version OpenGL supportés via QGLFormat. Qt version is %1. Veuillez actualiser Qt à la version 4.7.0 ou plus.  </translation>
+        <translation type="obsolete">Impossible de lister les version OpenGL supportés via QGLFormat. Qt version is %1. Veuillez actualiser Qt à la version 4.7.0 ou plus.  </translation>
     </message>
     <message>
         <source>Runtime version of OpenGL used by Qt %1: %2.%3.</source>
@@ -1716,6 +1490,10 @@ Si vous exécutez cette application via une système d&apos;écran déporté, le
 
 %2</translation>
     </message>
+    <message>
+        <source>Unable to list supported OpenGL versions using QGLFormat. Qt version is %1. Please upgrade to Qt 4.7.0 or newer.</source>
+        <translation>Impossible de lister les versions OpenGL supportées à partir du QGLFormat. La version de Qt est %1. Veuillez mettre à jour Qt à la version 4.7.0 ou ultérieure.</translation>
+    </message>
 </context>
 <context>
     <name>mvd::ImportImagesDialog</name>
@@ -2926,7 +2704,7 @@ p, li { white-space: pre-wrap; }
 &lt;td&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Mouse wheel&lt;/p&gt;&lt;/td&gt;
 &lt;td&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Rotate layers&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Zoom in out&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -2934,7 +2712,7 @@ p, li { white-space: pre-wrap; }
 &lt;td&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Mouse wheel&lt;/p&gt;&lt;/td&gt;
 &lt;td&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Zoom in out&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Rotate layers&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -3431,7 +3209,7 @@ p, li { white-space: pre-wrap; }
 &lt;td&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Molette&lt;/p&gt;&lt;/td&gt;
 &lt;td&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Rotation circulaire des couches dans de la pile&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Zoom avant/arrière&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -3439,7 +3217,7 @@ p, li { white-space: pre-wrap; }
 &lt;td&gt;
 &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Molette&lt;/p&gt;&lt;/td&gt;
 &lt;td&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Zoom avant/arrière&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Rotation circulaire des couches dans de la pile&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -4138,11 +3916,11 @@ Voulez-vous sauvegarder avant de quitter ?</translation>
     </message>
     <message>
         <source>&amp;Import image...</source>
-        <translation>&amp;Importer image...</translation>
+        <translation type="obsolete">&amp;Importer image...</translation>
     </message>
     <message>
         <source>Import image...</source>
-        <translation>Importer image...</translation>
+        <translation type="obsolete">Importer image...</translation>
     </message>
     <message>
         <source>Ctrl++</source>
@@ -4226,7 +4004,7 @@ Voulez-vous sauvegarder avant de quitter ?</translation>
     </message>
     <message>
         <source>Enable OTB_USE_QT4 preprocessor definition at compile time!</source>
-        <translation>Activer la définition de pré-processeur OTB_USE_QT4 lors de la compilation !</translation>
+        <translation type="obsolete">Activer la définition de pré-processeur OTB_USE_QT4 lors de la compilation !</translation>
     </message>
     <message>
         <source>Layer stack</source>
@@ -4318,6 +4096,82 @@ Charger &apos;%1&apos; provoquera l&apos;affichage des couches dans une vue non
         <translation>Localisation</translation>
     </message>
 </context>
+<context>
+    <name>mvd::MaplaApplication</name>
+    <message>
+        <source></source>
+        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>mvd::MaplaMainWindow</name>
+    <message>
+        <source>Main window</source>
+        <translation>Fenêtre principale</translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation>&amp;Fichier</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation>Aid&amp;e</translation>
+    </message>
+    <message>
+        <source>&amp;Edit</source>
+        <translation>Éditio&amp;n</translation>
+    </message>
+    <message>
+        <source>&amp;Quit</source>
+        <translation>&amp;Quitter</translation>
+    </message>
+    <message>
+        <source>Quit application.</source>
+        <translation>Quitter l&apos;application.</translation>
+    </message>
+    <message>
+        <source>Ctrl+Q</source>
+        <translation>Ctrl+Q</translation>
+    </message>
+    <message>
+        <source>&amp;Import image...</source>
+        <translation>&amp;Importer image...</translation>
+    </message>
+    <message>
+        <source>Import image...</source>
+        <translation>Importer une image...</translation>
+    </message>
+    <message>
+        <source>Import image-file.</source>
+        <translation>Importer un fichier image.</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>&amp;About...</source>
+        <translation>&amp;À propos de...</translation>
+    </message>
+    <message>
+        <source>About...</source>
+        <translation>À propos de...</translation>
+    </message>
+    <message>
+        <source>Prefere&amp;nces</source>
+        <translation>Préfére&amp;nces</translation>
+    </message>
+    <message>
+        <source></source>
+        <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Enable OTB_USE_QT4 preprocessor definition at compile time!</source>
+        <translation>Activer la définition de pré-processeur OTB_USE_QT4 lors de la compilation !</translation>
+    </message>
+</context>
 <context>
     <name>mvd::Math</name>
     <message>
@@ -4647,7 +4501,7 @@ Merci d&apos;en sélectionner un autre.</translation>
     </message>
     <message>
         <source>Resolution</source>
-        <translation type="obsolete">Resolution</translation>
+        <translation type="obsolete">Résolution</translation>
     </message>
     <message>
         <source>OTB filter</source>
@@ -4685,6 +4539,10 @@ Merci d&apos;en sélectionner un autre.</translation>
         <source>Minimum size:</source>
         <translation>Taille minimum :</translation>
     </message>
+    <message>
+        <source>pixel(s)</source>
+        <translation>pixel(s)</translation>
+    </message>
 </context>
 <context>
     <name>mvd::ProcessObjectObserver</name>
@@ -4893,6 +4751,46 @@ Merci d&apos;en sélectionner un autre.</translation>
         <comment>Necessary for lupdate to be aware of C++ namespaces. Context comment for translator.</comment>
         <translation></translation>
     </message>
+    <message>
+        <source>Read tag &apos;%1&apos; does not match expected tag &apos;%2&apos;.</source>
+        <translation>L'étiquette lue &apos;%1&apos; ne correspond pas à l'étiquette attendue &apos;%2&apos;.</translation>
+    </message>
+    <message>
+        <source>Invalid tag name &apos;%1&apos;.</source>
+        <translation>Nom d'étiquette invalide &apos;%1&apos;.</translation>
+    </message>
+    <message>
+        <source>Array dimension (%1) does not match expected dimension (%2).</source>
+        <translation>Les dimensions du tableau (%1) ne correspondent pas aux dimensions attendues (%2).</translation>
+    </message>
+    <message>
+        <source>Histogram sample count (%1) does not match written sample count (%2).</source>
+        <translation>Le nombre d'échantillons dans l'histrogramme (%1) ne correspond pas au nombre d'échantillons écrits (%2).</translation>
+    </message>
+    <message>
+        <source>Histogram mins dimension (%1) does not match expected dimension (%2).</source>
+        <translation>La taille des minima d'histogramme (%1) ne correspond pas à la taille attendue (%2).</translation>
+    </message>
+    <message>
+        <source>Histogram maxs dimension (%1) does not match expected dimension (%2).</source>
+        <translation>La taille des maxima d'histogramme (%1) ne correspond pas à la taille attendue (%2).</translation>
+    </message>
+    <message>
+        <source>Histogram dimension (%1) does not match expected dimension (%2).</source>
+        <translation>La taille de l'histogramme (%1) ne correspond pas à la taille attendue (%2).</translation>
+    </message>
+    <message>
+        <source>Histogram bin count (%1) does not match expected bin count (%2).</source>
+        <translation>Le nombre de barres dans l'histogramme (%1) ne correspond pas à la valeur attendue (%2).</translation>
+    </message>
+    <message>
+        <source>Histogram sample count (%1) does not match expected sample count (%2).</source>
+        <translation>Le nombre d'échantillons dans l'histogramme (%1) ne correspond pas à la valeur attendue (%2).</translation>
+    </message>
+    <message>
+        <source>Read sample count (histogram) (%1) does not match written sample count (%2).</source>
+        <translation>Le nombre d'échantillons lus (histrogramme) (%1) ne correspond pas au nombre d'échantillons écrits (%2).</translation>
+    </message>
 </context>
 <context>
     <name>mvd::TreeWidget</name>