diff --git a/include/aidge/utils/DynamicParameters.hpp b/include/aidge/utils/DynamicParameters.hpp
index 3a66e5c74d7443b3d48f87a3254690b92a47627b..77a509ca40fda36302a67f0ceaadba2ece736155 100644
--- a/include/aidge/utils/DynamicParameters.hpp
+++ b/include/aidge/utils/DynamicParameters.hpp
@@ -69,12 +69,12 @@ public:
      */
     template<class T> T& getParameter(const std::string& name)
     {
-        return any_cast_ref<T>(mBuffer[mParams.at(name)]);
+        return any_cast_ref<T>(mParams.at(name));
     }
 
     template<class T> const T& getParameter(const std::string& name) const
     {
-        return any_cast_ref<T>(mBuffer[mParams.at(name)]);
+        return any_cast_ref<T>(mParams.at(name));
     }
 
     ///\brief Add a parameter value, identified by its name
@@ -86,8 +86,7 @@ public:
     /// internal buffer in a new location (previous value is still in memory at its previous location)
     template<class T> void addParameter(const std::string& name, T&& value)
     {
-        mParams[name] = mBuffer.size(); // Copy pointer offset
-        mBuffer.push_back(_any(std::forward<T>(value)));
+        mParams.emplace(std::make_pair(name, _any(std::forward<T>(value))));
     }
 
     //////////////////////////////////////
@@ -98,7 +97,7 @@ public:
     }
 
     std::string getParameterType(const std::string& name) const override final {
-        return mBuffer[mParams.at(name)].type().name();
+        return mParams.at(name).type().name();
     }
 
     std::vector<std::string> getParametersName() const override final {
@@ -109,37 +108,38 @@ public:
     }
 
     #ifdef PYBIND
+    /**
+     * @detail See https://github.com/pybind/pybind11/issues/1590 as to why a
+     * generic type caster for std::any is not feasable.
+    */
     py::object getPy(const std::string& name) const {
         py::object res = py::none();
-        const std::string paramType = getParameterType(name);
-        if(paramType == typeid(int).name())
+        const auto& paramType = mParams.at(name).type();
+        if(paramType == typeid(int))
             res = py::cast(getParameter<int>(name));
-        else if(paramType == typeid(float).name())
+        else if(paramType == typeid(float))
             res = py::cast(getParameter<float>(name));
-        else if(paramType == typeid(bool).name())
+        else if(paramType == typeid(bool))
             res = py::cast(getParameter<bool>(name));
-        else if(paramType == typeid(std::string).name())
+        else if(paramType == typeid(std::string))
             res = py::cast(getParameter<std::string>(name));
-        else if(paramType == typeid(std::vector<bool>).name())
+        else if(paramType == typeid(std::vector<bool>))
             res = py::cast(getParameter<std::vector<bool>>(name));
-        else if(paramType == typeid(std::vector<int>).name())
+        else if(paramType == typeid(std::vector<int>))
             res = py::cast(getParameter<std::vector<int>>(name));
-        else if(paramType == typeid(std::vector<float>).name())
+        else if(paramType == typeid(std::vector<float>))
             res = py::cast(getParameter<std::vector<float>>(name));
-        else if(paramType == typeid(std::vector<std::string>).name())
+        else if(paramType == typeid(std::vector<std::string>))
             res = py::cast(getParameter<std::vector<std::string>>(name));
         else {
-            throw py::key_error("Failed to convert parameter type " + name + ", this issue may come from typeid function which gave an unknown key : [" + paramType + "]. Please open an issue asking to add the support for this key.");
+            throw py::key_error("Failed to convert parameter type " + name + ", this issue may come from typeid function which gave an unknown key : [" + paramType.name() + "]. Please open an issue asking to add the support for this key.");
         }
         return res;
     };
     #endif
 
 private:
-    std::map<std::string, std::size_t> mParams; // { Param name : offset }
-
-    ///\brief All raw pointers to parameters values concatenated. Use custom any class compatible with C++14.
-    std::vector<_any> mBuffer;
+    std::map<std::string, _any> mParams;
 };
 
 }