diff --git a/inversion.cpp b/inversion.cpp
index af1cfab517475e16c3a2945bcf918bb1ba5ad8fd..7b8fa15667d4fc0c355f5bb03926fc22229ab5ce 100644
--- a/inversion.cpp
+++ b/inversion.cpp
@@ -26,9 +26,9 @@ int inversion(const GmshFem& gmshFem)
     gmshFem.userDefinedParameter(suffix, "name");
     name += suffix;
 
-    const ParametrizationInterface* const parametrization = newParametrization<T_Physic>(gmshFem);
+    const std::unique_ptr<const ParametrizationInterface> parametrization(newParametrization<T_Physic>(gmshFem));
 
-    auto configuration = newConfiguration(name, parametrization, gmshFem);
+    auto configuration = newConfiguration(name, parametrization.get(), gmshFem);
 
     for (unsigned int c = 0; c < parametrization->size(); c++)
     {
@@ -152,7 +152,7 @@ int inversion(const GmshFem& gmshFem)
             std::string suffix_f = std::to_string(freq_idx[f]);
 
             wave::Discretization<T_Physic> w_discret(gmshFem,suffix_f);
-            pequation[f] = new ParametrizedEquation<T_Physic>(parametrization,f,2.*M_PI*frequency[freq_idx[f]],configuration.get(),w_discret,gmshFem,suffix_f);
+            pequation[f] = new ParametrizedEquation<T_Physic>(parametrization.get(),f,2.*M_PI*frequency[freq_idx[f]],configuration.get(),w_discret,gmshFem,suffix_f);
         }
 
         GlobalMinimumSearchInterface<T_Physic>* const globalminimumsearch = newGlobalMinimumSearch<T_Physic>(name,configuration.get(), gmshFem, suffix_g);
@@ -170,7 +170,6 @@ int inversion(const GmshFem& gmshFem)
         msg::unindent();
     }
 
-    delete parametrization;
     return 0;
 }