diff --git a/examples/example_utils.py b/examples/example_utils.py
index 3e639305616ba10cdfa164198602e7e48c5b4a00..8ba5de6c8b6277039251640586ea4bb6eeec0fa2 100644
--- a/examples/example_utils.py
+++ b/examples/example_utils.py
@@ -147,10 +147,14 @@ class HysopArgParser(argparse.ArgumentParser):
         self._add_file_io_args(default_dump_dir)
         self._add_term_io_args()
         self._add_misc_args()
-    
+   
+    def pre_process_args(self, args):
+        pass
+
     def run(self, program, **kwds):
         args = self.parse_args()
         args.__class__ = HysopNamespace
+        self.pre_process_args(args)
         
         # SETUP I/O
         from mpi4py import MPI
@@ -570,13 +574,13 @@ class HysopArgParser(argparse.ArgumentParser):
                 default=2, 
                 dest='strang_order',
                 help='Set the default directional splitting order.')
-        method.add_argument('-sdm', '--scalar-diffusion-mode', type=str, 
-                default='spectral', dest='scalar_diffusion_mode',
+        method.add_argument('-sdm', '--scalars-diffusion-mode', type=str, 
+                default='spectral', dest='scalars_diffusion_mode',
                 help='Enforce either spectral or directional diffusion with finite differences for scalars. Vorticity diffusion mode may not be enforced by this parameter, see --vorticity-diffusion-mode. The default value is spectral diffusion mode.')
         method.add_argument('-vdm', '--vorticity-diffusion-mode', type=str, 
                 default='spectral', dest='vorticity_diffusion_mode',
                 help='Enforce either spectral or directional diffusion with finite differences for vorticity. Vorticity is a special case for diffusion because vorticity diffusion can be computed at the same time as the Poisson operator which recovers the velocity. Spectral diffusion of vorticity when divergence-free field projection is enabled is virtually free. The default value is spectral diffusion mode.')
-        method.add_argument('-edst', '--enable-diffusion-substepping',
+        method.add_argument('--enable-diffusion-substepping',
                 dest='enable_diffusion_substepping', action='store_true',
                 help='Do not restrict timestep because of finite difference directional diffusion CFL but enforce substepping inside the operator depending on current timestep.')
 
@@ -588,7 +592,7 @@ class HysopArgParser(argparse.ArgumentParser):
                                     'reprojection_frequency'), int, allow_none=False)
         self._check_default(args, ('time_integrator', 'remesh_kernel', 'interpolation_filter', 
                                 'restriction_filter', 'stretching_formulation', 'polynomial_interpolator', 
-                                'vorticity_diffusion_mode', 'scalar_diffusion_mode'),
+                                'vorticity_diffusion_mode', 'scalars_diffusion_mode'),
                                 str, allow_none=False)
         self._check_positive(args, 'compute_granularity', strict=False, allow_none=False)
         self._check_positive(args, 'fd_order', strict=True, allow_none=False)
@@ -614,7 +618,7 @@ class HysopArgParser(argparse.ArgumentParser):
         args.advection_interpolator = \
                 self._convert_advection_interpolation('advection_interpolator', args.advection_interpolator)
         self._check_and_set_diffusion_mode('vorticity_diffusion_mode', args)
-        self._check_and_set_diffusion_mode('scalar_diffusion_mode', args)
+        self._check_and_set_diffusion_mode('scalars_diffusion_mode', args)
         
     def _add_threading_args(self):
         threading = self.add_argument_group('threading parameters')
diff --git a/hysop/backend/device/codegen/base/struct_codegen.py b/hysop/backend/device/codegen/base/struct_codegen.py
index b6ff919fc6ca7bd6ac9e19d3b3a7b605b2520217..f858f28f44ec88832b67c6605688be344852be06 100644
--- a/hysop/backend/device/codegen/base/struct_codegen.py
+++ b/hysop/backend/device/codegen/base/struct_codegen.py
@@ -34,8 +34,9 @@ class StructCodeGenerator(OpenClCodeGenerator):
         return self.dtype.fields
 
     def c_decl(self):
+        assert (self.context is not None)
         dtype,cdecl = cl.tools.match_dtype_to_c_struct( \
-                self.device,self.ctype.replace('struct',''),self.dtype,self.context)
+                self.device,self.ctype.replace('struct',''),self.dtype,context=self.context)
         return cdecl
 
     def gencode(self, comments, ctype_overrides):
diff --git a/hysop/backend/device/codegen/base/union_codegen.py b/hysop/backend/device/codegen/base/union_codegen.py
index 98fb708ecc4c7b7edb063b5db912d395c236a51d..c574b2c5eac4126b2ec3ee9c511ee02b5e40ccb1 100644
--- a/hysop/backend/device/codegen/base/union_codegen.py
+++ b/hysop/backend/device/codegen/base/union_codegen.py
@@ -28,8 +28,9 @@ class UnionCodeGenerator(OpenClCodeGenerator):
         self.gencode(comments, ctype_overrides)
     
     def c_decl(self):
+        assert (self.context is not None)
         dtype,cdecl = cl.tools.match_dtype_to_c_struct( \
-                self.device,self.ctype.replace('union',''),self.dtype,self.context)
+                self.device,self.ctype.replace('union',''),self.dtype,context=self.context)
         return cdecl
     
     def fields(self):