diff --git a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp
index 08d36913f440444f040f07f45f117f92d80c695d..196202a3e7330ee525a95fc50031cf1509133a42 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp
@@ -718,12 +718,12 @@ HOPatchDefParameters::HOPatchDefParameters(const OptHomParameters &p)
 {
   jacMin = p.BARRIER_MIN;
   jacMax = (p.BARRIER_MAX > 0.) ? p.BARRIER_MAX : 1.e300;
-  strategy = (p.strategy == 1) ? MeshOptParameters::STRAT_ONEBYONE :
-                                        MeshOptParameters::STRAT_CONNECTED;
+  strategy = (p.strategy == 1) ? MeshOptPatchDef::STRAT_ONEBYONE :
+                                 MeshOptPatchDef::STRAT_CONNECTED;
   minLayers = (p.dim == 3) ? 1 : 0;
   maxLayers = p.nbLayers;
   distanceFactor = p.distanceFactor;
-  if (strategy == MeshOptParameters::STRAT_CONNECTED)
+  if (strategy == MeshOptPatchDef::STRAT_CONNECTED)
     weakMerge = (p.strategy == 2);
   else {
     maxAdaptPatch = p.maxAdaptBlob;
diff --git a/contrib/MeshOptimizer/MeshOptCommon.h b/contrib/MeshOptimizer/MeshOptCommon.h
index 594f895bce68bfbc6ff013ae421839f9dda27961..7c9aa9d0fb8a4d2184bdf4bb8ed0afc0a1ec9644 100644
--- a/contrib/MeshOptimizer/MeshOptCommon.h
+++ b/contrib/MeshOptimizer/MeshOptCommon.h
@@ -41,6 +41,7 @@ class ObjContrib;
 
 class MeshOptPatchDef {
 public:
+  enum { STRAT_CONNECTED, STRAT_ONEBYONE };
   int strategy;                                         // Strategy: connected patches or adaptive one-by-one
   int minLayers, maxLayers;                             // Min. and max. nb. of layers around a bad element in patch
   union {
@@ -73,7 +74,6 @@ struct MeshOptPass {                                    // Parameters controllin
 
 
 struct MeshOptParameters {                              // Parameters controlling the strategy
-  enum { STRAT_CONNECTED, STRAT_ONEBYONE };
   int dim ;                                             // Which dimension to optimize
   bool onlyVisible ;                                    // Apply optimization to visible entities ONLY
   bool fixBndNodes;                                     // If points can move on boundaries
diff --git a/contrib/MeshOptimizer/MeshOptimizer.cpp b/contrib/MeshOptimizer/MeshOptimizer.cpp
index f0a49eaef0c89f2ba797d341f17a90559e39aed2..d7041ea89a96e9409297bf0060a29dee08fd10fe 100644
--- a/contrib/MeshOptimizer/MeshOptimizer.cpp
+++ b/contrib/MeshOptimizer/MeshOptimizer.cpp
@@ -461,9 +461,9 @@ void meshOptimizer(GModel *gm, MeshOptParameters &par)
     }
   }
 
-  if (par.patchDef->strategy == MeshOptParameters::STRAT_CONNECTED)
+  if (par.patchDef->strategy == MeshOptPatchDef::STRAT_CONNECTED)
     optimizeConnectedPatches(vertex2elements, element2entity, badElts, par);
-  else if (par.patchDef->strategy == MeshOptParameters::STRAT_ONEBYONE)
+  else if (par.patchDef->strategy == MeshOptPatchDef::STRAT_ONEBYONE)
     optimizeOneByOne(vertex2elements, element2entity, badElts, par);
   else
     Msg::Error("Unknown strategy %d for mesh optimization", par.patchDef->strategy);
diff --git a/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp b/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp
index 0c76ca9f93d1e8bc0f7b7f2fd4797dadf685da3a..bd1c86fa94a9c1533774d34a756a856c84b4ab90 100644
--- a/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp
+++ b/contrib/MeshQualityOptimizer/MeshQualityOptimizer.cpp
@@ -43,12 +43,12 @@ QualPatchDefParameters::QualPatchDefParameters(const MeshQualOptParameters &p)
   _excludeBL = p.excludeBL;
   _idealJacMin = p.minTargetIdealJac;
   _invCondNumMin = p.minTargetInvCondNum;
-  strategy = (p.strategy == 1) ? MeshOptParameters::STRAT_ONEBYONE :
-                                        MeshOptParameters::STRAT_CONNECTED;
+  strategy = (p.strategy == 1) ? MeshOptPatchDef::STRAT_ONEBYONE :
+                                 MeshOptPatchDef::STRAT_CONNECTED;
   minLayers = (p.dim == 3) ? 1 : 0;
   maxLayers = p.nbLayers;
   _distanceFactor = p.distanceFactor;
-  if (strategy == MeshOptParameters::STRAT_CONNECTED)
+  if (strategy == MeshOptPatchDef::STRAT_CONNECTED)
     weakMerge = (p.strategy == 2);
   else {
     maxAdaptPatch = p.maxAdaptBlob;