diff --git a/bfps/_base.py b/bfps/_base.py
index 8f7aeaaf1183f27535498565d14eec31b5b58569..14b42b6044fc77edeaba887f4aea8d236614545c 100644
--- a/bfps/_base.py
+++ b/bfps/_base.py
@@ -76,21 +76,26 @@ class _base(object):
             function_suffix = '',
             template_class = '',
             template_prefix = '',
-            file_group = 'parameters'):
+            file_group = 'parameters',
+            just_declaration = False,
+            simname_variable = 'simname'):
         if type(parameters) == type(None):
             parameters = self.parameters
         key = sorted(list(parameters.keys()))
         src_txt = (template_prefix +
                    'int ' +
                    template_class +
-                   'read_parameters' + function_suffix + '()\n{\n' +
-                   'hid_t parameter_file;\n' +
-                   'hid_t dset, memtype, space;\n' +
-                   'char fname[256];\n' +
-                   'hsize_t dims[1];\n' +
-                   'char *string_data;\n' +
-                   'sprintf(fname, "%s.h5", simname);\n' +
-                   'parameter_file = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);\n')
+                   'read_parameters' + function_suffix + '()')
+        if just_declaration:
+            return src_txt + ';\n'
+        src_txt += ('\n{\n' +
+                    'hid_t parameter_file;\n' +
+                    'hid_t dset, memtype, space;\n' +
+                    'char fname[256];\n' +
+                    'hsize_t dims[1];\n' +
+                    'char *string_data;\n' +
+                    'sprintf(fname, "%s.h5", {0});\n'.format(simname_variable) +
+                    'parameter_file = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);\n')
         for i in range(len(key)):
             src_txt += 'dset = H5Dopen(parameter_file, "/{0}/{1}", H5P_DEFAULT);\n'.format(
                     file_group, key[i])
diff --git a/bfps/cpp/full_code/main_code.hpp b/bfps/cpp/full_code/main_code.hpp
index 06a684303d63ba3ecff6c2259082630787a1188f..cae34b69b18b4f2550f5b6e5f28b48a659ea75f1 100644
--- a/bfps/cpp/full_code/main_code.hpp
+++ b/bfps/cpp/full_code/main_code.hpp
@@ -56,6 +56,7 @@ int main_code(
         std::cerr <<
             "Wrong number of command line arguments. Stopping." <<
             std::endl;
+        MPI_Init(&argc, &argv);
         MPI_Finalize();
         return EXIT_SUCCESS;
     }