diff --git a/bob/learn/misc/gaussian.cpp b/bob/learn/misc/gaussian.cpp
index 4504e4f71738e818caeea560245f0c4cdf187af8..d39f914784373af3cad9702e3a191c68250a0c5c 100644
--- a/bob/learn/misc/gaussian.cpp
+++ b/bob/learn/misc/gaussian.cpp
@@ -69,9 +69,8 @@ static int PyBobLearnMiscGaussian_init_hdf5(PyBobLearnMiscGaussianObject* self,
   char** kwlist = Gaussian_doc.kwlist(2);
 
   PyBobIoHDF5FileObject* config = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", kwlist, &PyBobIoHDF5File_Type, &config)) 
+  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&", kwlist, &PyBobIoHDF5File_Converter, &config)) 
     return -1;
-  auto config_ = make_safe(config);
 
   try {
     self->cxx.reset(new bob::learn::misc::Gaussian(*(config->f)));
diff --git a/bob/learn/misc/gmm_stats.cpp b/bob/learn/misc/gmm_stats.cpp
index a4282cab083462ae362ac923af0b7a727e328119..6409945a2f07381feec951a74fc71210525b04e6 100644
--- a/bob/learn/misc/gmm_stats.cpp
+++ b/bob/learn/misc/gmm_stats.cpp
@@ -55,7 +55,7 @@ static int PyBobLearnMiscGMMStats_init_copy(PyBobLearnMiscGMMStatsObject* self,
 
   char** kwlist = GMMStats_doc.kwlist(1);
   PyBobLearnMiscGMMStatsObject* tt;
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", kwlist, &PyBobLearnMiscGMMStats_Type, &tt)) return -1;
+  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&", kwlist, &PyBobLearnMiscGMMStats_Type, &tt)) return -1;
 
   self->cxx.reset(new bob::learn::misc::GMMStats(*tt->cxx));
   return 0;
@@ -66,13 +66,12 @@ static int PyBobLearnMiscGMMStats_init_hdf5(PyBobLearnMiscGMMStatsObject* self,
 
   char** kwlist = GMMStats_doc.kwlist(2);
 
-  PyObject* config = 0;
-  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!", kwlist, &PyBobIoHDF5File_Type, &config)) 
+  PyBobIoHDF5FileObject* config = 0;
+  if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&", kwlist, &PyBobIoHDF5File_Converter, &config)) 
     return -1;
-  auto h5f = reinterpret_cast<PyBobIoHDF5FileObject*>(config);
 
   try {
-    self->cxx.reset(new bob::learn::misc::GMMStats(*(h5f->f)));
+    self->cxx.reset(new bob::learn::misc::GMMStats(*(config->f)));
   }
   catch (std::exception& ex) {
     PyErr_SetString(PyExc_RuntimeError, ex.what());