diff --git a/python/lbmpy_walberla/packing_kernels.py b/python/lbmpy_walberla/packing_kernels.py
index d5caad4e97d4f45187b1e9321810f8f99fea76ed..8a8728031cd4eb56ba4366e25ef6fd85b1f2e1b5 100644
--- a/python/lbmpy_walberla/packing_kernels.py
+++ b/python/lbmpy_walberla/packing_kernels.py
@@ -99,7 +99,7 @@ class PackingKernelsCodegen:
         self.dst_field = dst_field if dst_field else fields(f'pdfs_dst({stencil.Q}) :{self.data_type}[{stencil.D}D]')
 
         self.accessors = [get_accessor(streaming_pattern, t) for t in get_timesteps(streaming_pattern)]
-        self.mask_field = fields(f'mask : uint32 [{self.dim}D]')
+        self.mask_field = fields(f'mask : uint32 [{self.dim}D]', layout=src_field.layout)
 
     def create_uniform_kernel_families(self, kernels_dict=None):
         kernels = dict() if kernels_dict is None else kernels_dict
diff --git a/python/lbmpy_walberla/storage_specification.py b/python/lbmpy_walberla/storage_specification.py
index a07c619b373420b27f2e2b53c119afd6598a6f9c..60fd96d242bdf0c9513a1ff3d7d99efdc5898ec3 100644
--- a/python/lbmpy_walberla/storage_specification.py
+++ b/python/lbmpy_walberla/storage_specification.py
@@ -14,6 +14,7 @@ from pystencils_walberla.cmake_integration import CodeGenerationContext
 from pystencils_walberla.jinja_filters import add_pystencils_filters_to_jinja_env
 from pystencils_walberla.utility import config_from_context
 from lbmpy_walberla.packing_kernels import PackingKernelsCodegen
+from lbmpy_walberla.utility import create_pdf_field
 
 
 def generate_lbm_storage_specification(generation_context: CodeGenerationContext, class_name: str,
@@ -36,26 +37,28 @@ def generate_lbm_storage_specification(generation_context: CodeGenerationContext
 
     default_dtype = config.data_type.default_factory()
     if issubclass(default_dtype.numpy_dtype.type, np.float64):
-        constant_suffix = ""
         data_type_string = "double"
     elif issubclass(default_dtype.numpy_dtype.type, np.float32):
-        constant_suffix = "f"
         data_type_string = "float"
     elif issubclass(default_dtype.numpy_dtype.type, np.float16):
-        constant_suffix = ""
         data_type_string = "half"
     else:
         raise ValueError(f"default datatype {default_dtype.numpy_dtype.type} is not supported. "
                          f"Supported are only np.float64, np.float32 and np.float16")
 
     symbolic_field = lbm_optimisation.symbolic_field
-    assert symbolic_field, "The symbolic pdf field must be added to LBMOptimisation as symbolic_field"
+    if not symbolic_field:
+        symbolic_field = create_pdf_field(config=config, name="pdfs_src", stencil=stencil,
+                                          field_layout=lbm_optimisation.field_layout)
+
     if is_inplace(streaming_pattern):
-        symbolic_temporary_field = symbolic_field.new_field_with_different_name("pdfs_tmp")
+        symbolic_temporary_field = create_pdf_field(config=config, name="pdfs_dst", stencil=stencil,
+                                                    field_layout=lbm_optimisation.field_layout)
     else:
-        assert lbm_optimisation.symbolic_temporary_field, \
-            "The destination field must be added to LBMOptimisation as symbolic_temporary_field"
         symbolic_temporary_field = lbm_optimisation.symbolic_temporary_field
+        if not symbolic_temporary_field:
+            symbolic_temporary_field = create_pdf_field(config=config, name="pdfs_dst", stencil=stencil,
+                                                        field_layout=lbm_optimisation.field_layout)
 
     cg = PackingKernelsCodegen(stencil, streaming_pattern, class_name, config,
                                src_field=symbolic_field, dst_field=symbolic_temporary_field)
diff --git a/python/lbmpy_walberla/sweep_collection.py b/python/lbmpy_walberla/sweep_collection.py
index 7aed4a33b57755930ea67ded7764c6613688394e..22770379c23ec586ef92b947546623457ca74fff 100644
--- a/python/lbmpy_walberla/sweep_collection.py
+++ b/python/lbmpy_walberla/sweep_collection.py
@@ -18,6 +18,7 @@ from lbmpy.updatekernels import create_lbm_kernel, create_stream_only_kernel
 from pystencils_walberla.kernel_selection import KernelCallNode, KernelFamily
 from pystencils_walberla.utility import config_from_context
 from pystencils_walberla import generate_sweep_collection
+from lbmpy_walberla.utility import create_pdf_field
 
 from .alternating_sweeps import EvenIntegerCondition
 from .function_generator import kernel_family_function_generator
@@ -46,10 +47,16 @@ def generate_lbm_sweep_collection(ctx, class_name: str, collision_rule: LbmColli
         config.cpu_vectorize_info['assume_inner_stride_one'] = False
 
     src_field = lbm_optimisation.symbolic_field
+    if not src_field:
+        src_field = create_pdf_field(config=config, name="pdfs", stencil=lbm_config.stencil,
+                                     field_layout=lbm_optimisation.field_layout)
     if is_inplace(streaming_pattern):
         dst_field = src_field
     else:
         dst_field = lbm_optimisation.symbolic_temporary_field
+        if not dst_field:
+            dst_field = create_pdf_field(config=config, name="pdfs_tmp", stencil=lbm_config.stencil,
+                                         field_layout=lbm_optimisation.field_layout)
 
     config = replace(config, ghost_layers=0)
 
diff --git a/python/lbmpy_walberla/utility.py b/python/lbmpy_walberla/utility.py
index 1289c381e7b50ac7e83d34fca887e6d659959b92..75460d5f9458104e02f21ba52d54acbb261628b7 100644
--- a/python/lbmpy_walberla/utility.py
+++ b/python/lbmpy_walberla/utility.py
@@ -1,4 +1,8 @@
+import numpy as np
+from pystencils import CreateKernelConfig, fields
+
 from lbmpy.advanced_streaming import Timestep
+from lbmpy.stencils import LBStencil
 
 
 def timestep_suffix(timestep: Timestep):
@@ -9,3 +13,9 @@ def timestep_suffix(timestep: Timestep):
     """
     return ("_" + str(timestep)) if timestep != Timestep.BOTH else ''
 
+
+def create_pdf_field(config: CreateKernelConfig, name: str, stencil: LBStencil, field_layout: str = 'fzyx'):
+    default_dtype = config.data_type.default_factory()
+    data_type = default_dtype.numpy_dtype
+    return fields(f'{name}({stencil.Q}) :{data_type}[{stencil.D}D]', layout=field_layout)
+
diff --git a/python/lbmpy_walberla/walberla_lbm_package.py b/python/lbmpy_walberla/walberla_lbm_package.py
index fd9f4500bf7dc7516c2bb09c048879ebe1673b7f..80b37a4a90f717e79ea60890a802a363c45dde52 100644
--- a/python/lbmpy_walberla/walberla_lbm_package.py
+++ b/python/lbmpy_walberla/walberla_lbm_package.py
@@ -51,7 +51,7 @@ def generate_lbm_package(ctx: CodeGenerationContext, name: str,
                                   **kernel_parameters)
 
     spatial_shape = None
-    if lbm_optimisation.symbolic_field.has_fixed_shape:
+    if lbm_optimisation.symbolic_field and lbm_optimisation.symbolic_field.has_fixed_shape:
         spatial_shape = lbm_optimisation.symbolic_field.spatial_shape + (lbm_config.stencil.Q, )
 
     generate_boundary_collection(ctx, f'{name}BoundaryCollection', boundary_generators=boundaries,
diff --git a/tests/lbm_generated/Example.py b/tests/lbm_generated/Example.py
index 5233639be24c6574cee6440300bfe73e22e5e2ae..c4e3eaa96d596b2745811e30739790748740f884 100644
--- a/tests/lbm_generated/Example.py
+++ b/tests/lbm_generated/Example.py
@@ -23,7 +23,8 @@ with CodeGeneration() as ctx:
     omega = sp.symbols("omega")
 
     stencil = LBStencil(Stencil.D3Q19)
-    pdfs, vel_field = fields(f"pdfs({stencil.Q}), velocity({stencil.D}): {data_type}[{stencil.D}D]", layout='fzyx')
+    pdfs, vel_field = fields(f"pdfs({stencil.Q}), velocity({stencil.D}): {data_type}[{stencil.D}D]",
+                             layout='fzyx')
 
     macroscopic_fields = {'velocity': vel_field}