diff --git a/generate/generate.py b/generate/generate.py
index 6b1da712072a46bb5df8502329dc358db11846da..67082942a7de06bcfb6029a75bf8baf761def25b 100644
--- a/generate/generate.py
+++ b/generate/generate.py
@@ -32,9 +32,9 @@ def parse_args() -> argparse.Namespace:
     )
 
     parser.add_argument(
-        "--top-level-cmake-only",
+        "--cmake-only",
         action="store_true",
-        help="Generates top-level cmake file and quits.",
+        help="Generates cmake files from existing source and header files and quits.",
     )
 
     return parser.parse_args()
@@ -64,36 +64,41 @@ def unfold_toml_dict(toml_dict):
 def main() -> None:
     args = parse_args()
 
-    with open(args.filename, "rb") as f:
-        toml_dict = tomllib.load(f)
-        # print(f"{toml_dict = }")
-        toml_dict = unfold_toml_dict(toml_dict)
+    os.makedirs(args.output, exist_ok=True)
 
-        generate_toplevel_cmake(args, toml_dict)
+    if not args.cmake_only:
+        with open(args.filename, "rb") as f:
+            toml_dict = tomllib.load(f)
+            toml_dict = unfold_toml_dict(toml_dict)
 
-        if args.top_level_cmake_only:
-            return
+            for form_str, operators in toml_dict.items():
+                kernel_implementations = {}
+                for spec in operators:
+                    op_kernel_impls = generate_operator(args, form_str, spec)
 
-        for form_str, operators in toml_dict.items():
-            kernel_implementations = {}
-            for spec in operators:
-                op_kernel_impls = generate_operator(args, form_str, spec)
+                    for platform, impls in op_kernel_impls.items():
+                        if not platform in kernel_implementations:
+                            kernel_implementations[platform] = []
+                        kernel_implementations[platform].extend(impls)
 
-                for platform, impls in op_kernel_impls.items():
-                    if not platform in kernel_implementations:
-                        kernel_implementations[platform] = []
-                    kernel_implementations[platform].extend(impls)
+    generate_cmake_from_cpp_files(args.output)
 
-            generate_cmake(args, form_str, operators, kernel_implementations)
 
+def generate_cmake_from_cpp_files(output_dir_path: str):
+    """Generates all required cmake files just from the present files and folder structure."""
+    toplevel_cmake_output_path = os.path.join(output_dir_path, "CMakeLists.txt")
 
-def generate_toplevel_cmake(
-    args: argparse.Namespace, toml_dict: Dict[str, Any]
-) -> None:
-    os.makedirs(args.output, exist_ok=True)
-    output_path = os.path.join(args.output, "CMakeLists.txt")
+    def list_subdirectories(directory) -> List[str]:
+        subdirectories = []
+        for item in os.listdir(directory):
+            item_path = os.path.join(directory, item)
+            if os.path.isdir(item_path):
+                subdirectories.append(item_path)
+        return sorted(subdirectories)
+
+    subdirs = list_subdirectories(output_dir_path)
 
-    with open(output_path, "w") as f:
+    with open(toplevel_cmake_output_path, "w") as f:
         print(f'add_compile_options( "-Wno-shadow" )', file=f)
         print(f"", file=f)
         print(f"if(NOT WALBERLA_DOUBLE_ACCURACY)", file=f)
@@ -101,106 +106,236 @@ def generate_toplevel_cmake(
         print(f"endif()", file=f)
         print(f"", file=f)
 
-        for form_str in toml_dict:
-            print(f"add_subdirectory({form_str})", file=f)
+        for subdir in subdirs:
+            print(f"add_subdirectory({os.path.basename(subdir)})", file=f)
 
+    for subdir in subdirs:
+        lib_name = f"opgen-{os.path.basename(subdir)}"
 
-def generate_cmake(
-    args: argparse.Namespace,
-    form_str: str,
-    operators: List[Dict[str, Any]],
-    kernel_implementations: Dict[str, List[str]],
-) -> None:
-    dir_path = os.path.join(args.output, form_str)
-    os.makedirs(dir_path, exist_ok=True)
-    output_path = os.path.join(dir_path, "CMakeLists.txt")
+        with open(os.path.join(subdir, "CMakeLists.txt"), "w") as f:
+            print(f"add_library( {lib_name}", file=f)
+            print(f"", file=f)
 
-    lib_name = f"opgen-{form_str}"
+            for xpp_file in sorted(
+                [x for x in os.listdir(subdir) if x.endswith((".hpp", ".cpp"))]
+            ):
+                print(f"   {xpp_file}", file=f)
 
-    with open(output_path, "w") as f:
-        print(f"add_library( {lib_name}", file=f)
-        print(f"", file=f)
-
-        for spec in operators:
-            name = elementwise_operator_name(form_str, spec)
-            print(f"   {name}.cpp", file=f)
-            print(f"   {name}.hpp", file=f)
+            print(f")", file=f)
+            print(f"", file=f)
 
-        print(f")", file=f)
-        print(f"", file=f)
+            noarch_dir = os.path.join(subdir, "noarch")
+            if not os.path.isdir(noarch_dir):
+                raise FileNotFoundError(f"noarch dir not found under {noarch_dir}")
 
-        def print_noarch_targets(avx_exists: bool):
-            indent_noarch_source_file = "   " if avx_exists else ""
-            print(
-                f"{indent_noarch_source_file}target_sources({lib_name} PRIVATE", file=f
+            noarch_cpp_files = sorted(
+                [
+                    cppfile
+                    for cppfile in os.listdir(os.path.join(subdir, "noarch"))
+                    if cppfile.endswith(".cpp")
+                ]
             )
-            print(f"", file=f)
 
-            for source_file_inner in kernel_implementations["noarch"]:
+            def print_noarch_targets(avx_exists: bool):
+                indent_noarch_source_file = "   " if avx_exists else ""
                 print(
-                    f"{indent_noarch_source_file}   noarch/{source_file_inner}", file=f
+                    f"{indent_noarch_source_file}target_sources({lib_name} PRIVATE",
+                    file=f,
+                )
+                print(f"", file=f)
+
+                for source_file_inner in noarch_cpp_files:
+                    print(
+                        f"{indent_noarch_source_file}   noarch/{source_file_inner}",
+                        file=f,
+                    )
+
+                print(f"{indent_noarch_source_file})", file=f)
+
+            if os.path.isdir(os.path.join(subdir, "avx")):
+                avx_cpp_files = sorted(
+                    [
+                        cppfile
+                        for cppfile in os.listdir(os.path.join(subdir, "avx"))
+                        if cppfile.endswith(".cpp")
+                    ]
                 )
 
-            print(f"{indent_noarch_source_file})", file=f)
+                print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f)
+                print(f"   target_sources({lib_name} PRIVATE", file=f)
+                print(f"", file=f)
 
-        if "avx" in kernel_implementations:
-            print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f)
-            print(f"   target_sources({lib_name} PRIVATE", file=f)
-            print(f"", file=f)
+                for source_file in avx_cpp_files:
+                    print(f"      avx/{source_file}", file=f)
 
-            for source_file in kernel_implementations["avx"]:
-                print(f"      avx/{source_file}", file=f)
+                for source_file in noarch_cpp_files:
+                    if not source_file in avx_cpp_files:
+                        print(f"      noarch/{source_file}", file=f)
 
-            for source_file in kernel_implementations["noarch"]:
-                if not source_file in kernel_implementations["avx"]:
-                    print(f"      noarch/{source_file}", file=f)
+                print(f"   )", file=f)
+                print(f"", file=f)
 
-            print(f"   )", file=f)
-            print(f"", file=f)
+                print(f"   set_source_files_properties(", file=f)
+                print(f"", file=f)
 
-            print(f"   set_source_files_properties(", file=f)
-            print(f"", file=f)
+                for source_file in avx_cpp_files:
+                    print(f"      avx/{source_file}", file=f)
+                print(f"", file=f)
+                print(
+                    "      PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}",
+                    file=f,
+                )
+
+                print(f"   )", file=f)
+                print(f"else()", file=f)
+                print(
+                    f"   if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)",
+                    file=f,
+                )
+                print(
+                    f'      message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")',
+                    file=f,
+                )
+                print(f"   endif()", file=f)
+                print(f"", file=f)
+
+                print_noarch_targets(avx_exists=True)
+
+                print(f"endif()", file=f)
+            else:
+                print_noarch_targets(avx_exists=False)
 
-            for source_file in kernel_implementations["avx"]:
-                print(f"      avx/{source_file}", file=f)
             print(f"", file=f)
-            print(
-                "      PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}",
-                file=f,
-            )
 
-            print(f"   )", file=f)
-            print(f"else()", file=f)
-            print(
-                f"   if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)", file=f
-            )
+            print(f"if (HYTEG_BUILD_WITH_PETSC)", file=f)
+            print(f"   target_link_libraries({lib_name} PUBLIC PETSc::PETSc)", file=f)
+            print(f"endif ()", file=f)
+
             print(
-                f'      message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")',
+                f"if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)\n"
+                f"    target_compile_features({lib_name} PUBLIC cxx_std_23)\n"
+                f"else ()\n"
+                f"    target_compile_features({lib_name} PUBLIC cxx_std_17)\n"
+                f"endif ()",
                 file=f,
             )
-            print(f"   endif()", file=f)
-            print(f"", file=f)
 
-            print_noarch_targets(avx_exists=True)
 
-            print(f"endif()", file=f)
-        else:
-            print_noarch_targets(avx_exists=False)
-
-        print(f"", file=f)
-
-        print(f"if (HYTEG_BUILD_WITH_PETSC)", file=f)
-        print(f"   target_link_libraries({lib_name} PUBLIC PETSc::PETSc)", file=f)
-        print(f"endif ()", file=f)
-
-        print(
-            f"if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)\n"
-            f"    target_compile_features({lib_name} PUBLIC cxx_std_23)\n"
-            f"else ()\n"
-            f"    target_compile_features({lib_name} PUBLIC cxx_std_17)\n"
-            f"endif ()",
-            file=f,
-        )
+# def generate_toplevel_cmake(
+#     args: argparse.Namespace, toml_dict: Dict[str, Any]
+# ) -> None:
+#     os.makedirs(args.output, exist_ok=True)
+#     output_path = os.path.join(args.output, "CMakeLists.txt")
+#
+#     with open(output_path, "w") as f:
+#         print(f'add_compile_options( "-Wno-shadow" )', file=f)
+#         print(f"", file=f)
+#         print(f"if(NOT WALBERLA_DOUBLE_ACCURACY)", file=f)
+#         print(f'   add_compile_options( "-Wno-float-conversion" )', file=f)
+#         print(f"endif()", file=f)
+#         print(f"", file=f)
+#
+#         for form_str in toml_dict:
+#             print(f"add_subdirectory({form_str})", file=f)
+#
+#
+# def generate_cmake(
+#     args: argparse.Namespace,
+#     form_str: str,
+#     operators: List[Dict[str, Any]],
+#     kernel_implementations: Dict[str, List[str]],
+# ) -> None:
+#     dir_path = os.path.join(args.output, form_str)
+#     os.makedirs(dir_path, exist_ok=True)
+#     output_path = os.path.join(dir_path, "CMakeLists.txt")
+#
+#     lib_name = f"opgen-{form_str}"
+#
+#     with open(output_path, "w") as f:
+#         print(f"add_library( {lib_name}", file=f)
+#         print(f"", file=f)
+#
+#         for spec in operators:
+#             name = elementwise_operator_name(form_str, spec)
+#             print(f"   {name}.cpp", file=f)
+#             print(f"   {name}.hpp", file=f)
+#
+#         print(f")", file=f)
+#         print(f"", file=f)
+#
+#         def print_noarch_targets(avx_exists: bool):
+#             indent_noarch_source_file = "   " if avx_exists else ""
+#             print(
+#                 f"{indent_noarch_source_file}target_sources({lib_name} PRIVATE", file=f
+#             )
+#             print(f"", file=f)
+#
+#             for source_file_inner in kernel_implementations["noarch"]:
+#                 print(
+#                     f"{indent_noarch_source_file}   noarch/{source_file_inner}", file=f
+#                 )
+#
+#             print(f"{indent_noarch_source_file})", file=f)
+#
+#         if "avx" in kernel_implementations:
+#             print(f"if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)", file=f)
+#             print(f"   target_sources({lib_name} PRIVATE", file=f)
+#             print(f"", file=f)
+#
+#             for source_file in kernel_implementations["avx"]:
+#                 print(f"      avx/{source_file}", file=f)
+#
+#             for source_file in kernel_implementations["noarch"]:
+#                 if not source_file in kernel_implementations["avx"]:
+#                     print(f"      noarch/{source_file}", file=f)
+#
+#             print(f"   )", file=f)
+#             print(f"", file=f)
+#
+#             print(f"   set_source_files_properties(", file=f)
+#             print(f"", file=f)
+#
+#             for source_file in kernel_implementations["avx"]:
+#                 print(f"      avx/{source_file}", file=f)
+#             print(f"", file=f)
+#             print(
+#                 "      PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}",
+#                 file=f,
+#             )
+#
+#             print(f"   )", file=f)
+#             print(f"else()", file=f)
+#             print(
+#                 f"   if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY)", file=f
+#             )
+#             print(
+#                 f'      message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.")',
+#                 file=f,
+#             )
+#             print(f"   endif()", file=f)
+#             print(f"", file=f)
+#
+#             print_noarch_targets(avx_exists=True)
+#
+#             print(f"endif()", file=f)
+#         else:
+#             print_noarch_targets(avx_exists=False)
+#
+#         print(f"", file=f)
+#
+#         print(f"if (HYTEG_BUILD_WITH_PETSC)", file=f)
+#         print(f"   target_link_libraries({lib_name} PUBLIC PETSc::PETSc)", file=f)
+#         print(f"endif ()", file=f)
+#
+#         print(
+#             f"if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT)\n"
+#             f"    target_compile_features({lib_name} PUBLIC cxx_std_23)\n"
+#             f"else ()\n"
+#             f"    target_compile_features({lib_name} PUBLIC cxx_std_17)\n"
+#             f"endif ()",
+#             file=f,
+#         )
+#
 
 
 def generate_operator(
diff --git a/operators/CMakeLists.txt b/operators/CMakeLists.txt
index d66405023ed6f9ed2e40c796cfcabf6760239daa..63d129f6362a9b1594a30998ec31c2ea56ae9d7c 100644
--- a/operators/CMakeLists.txt
+++ b/operators/CMakeLists.txt
@@ -7,6 +7,6 @@ endif()
 add_subdirectory(curl_curl)
 add_subdirectory(diffusion)
 add_subdirectory(div_k_grad)
-add_subdirectory(mass)
 add_subdirectory(epsilon)
 add_subdirectory(full_stokes)
+add_subdirectory(mass)
diff --git a/operators/curl_curl/CMakeLists.txt b/operators/curl_curl/CMakeLists.txt
index 4fb6eb1d9c118dbca7eb5f98aa1d1907a15e3f3d..8599561feaa0d3a86177fc89fa6838ccac9a1888 100644
--- a/operators/curl_curl/CMakeLists.txt
+++ b/operators/curl_curl/CMakeLists.txt
@@ -27,8 +27,8 @@ else()
    target_sources(opgen-curl_curl PRIVATE
 
       noarch/N1E1ElementwiseCurlCurl_apply_macro_3D.cpp
-      noarch/N1E1ElementwiseCurlCurl_toMatrix_macro_3D.cpp
       noarch/N1E1ElementwiseCurlCurl_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/N1E1ElementwiseCurlCurl_toMatrix_macro_3D.cpp
    )
 endif()
 
diff --git a/operators/diffusion/CMakeLists.txt b/operators/diffusion/CMakeLists.txt
index b36c4566bc93d0cd4038ad7062cc52968b42b9a6..c2410d26fc6bfe800f2877f6ffdfa199ae36bffc 100644
--- a/operators/diffusion/CMakeLists.txt
+++ b/operators/diffusion/CMakeLists.txt
@@ -33,10 +33,10 @@ else()
 
       noarch/P1ElementwiseDiffusion_apply_macro_2D.cpp
       noarch/P1ElementwiseDiffusion_apply_macro_3D.cpp
-      noarch/P1ElementwiseDiffusion_toMatrix_macro_2D.cpp
-      noarch/P1ElementwiseDiffusion_toMatrix_macro_3D.cpp
       noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P1ElementwiseDiffusion_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P1ElementwiseDiffusion_toMatrix_macro_2D.cpp
+      noarch/P1ElementwiseDiffusion_toMatrix_macro_3D.cpp
    )
 endif()
 
diff --git a/operators/div_k_grad/CMakeLists.txt b/operators/div_k_grad/CMakeLists.txt
index 776654d509397a5467874774eda569f1a638f0db..114e682f1e6ec8f34b9c242de39fb0736247353d 100644
--- a/operators/div_k_grad/CMakeLists.txt
+++ b/operators/div_k_grad/CMakeLists.txt
@@ -45,16 +45,16 @@ else()
 
       noarch/P1ElementwiseDivKGrad_apply_macro_2D.cpp
       noarch/P1ElementwiseDivKGrad_apply_macro_3D.cpp
-      noarch/P1ElementwiseDivKGrad_toMatrix_macro_2D.cpp
-      noarch/P1ElementwiseDivKGrad_toMatrix_macro_3D.cpp
       noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P1ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P1ElementwiseDivKGrad_toMatrix_macro_2D.cpp
+      noarch/P1ElementwiseDivKGrad_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseDivKGrad_apply_macro_2D.cpp
       noarch/P2ElementwiseDivKGrad_apply_macro_3D.cpp
-      noarch/P2ElementwiseDivKGrad_toMatrix_macro_2D.cpp
-      noarch/P2ElementwiseDivKGrad_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P2ElementwiseDivKGrad_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseDivKGrad_toMatrix_macro_2D.cpp
+      noarch/P2ElementwiseDivKGrad_toMatrix_macro_3D.cpp
    )
 endif()
 
diff --git a/operators/epsilon/CMakeLists.txt b/operators/epsilon/CMakeLists.txt
index 2a893fe3344c34948c5fe9d763ccf0abe34706ea..9b499f0b4470d3f215b0d585b68b2581b78d601e 100644
--- a/operators/epsilon/CMakeLists.txt
+++ b/operators/epsilon/CMakeLists.txt
@@ -1,23 +1,5 @@
 add_library( opgen-epsilon
 
-   P2ElementwiseEpsilon_0_0.cpp
-   P2ElementwiseEpsilon_0_0.hpp
-   P2ElementwiseEpsilon_0_1.cpp
-   P2ElementwiseEpsilon_0_1.hpp
-   P2ElementwiseEpsilon_0_2.cpp
-   P2ElementwiseEpsilon_0_2.hpp
-   P2ElementwiseEpsilon_1_0.cpp
-   P2ElementwiseEpsilon_1_0.hpp
-   P2ElementwiseEpsilon_1_1.cpp
-   P2ElementwiseEpsilon_1_1.hpp
-   P2ElementwiseEpsilon_1_2.cpp
-   P2ElementwiseEpsilon_1_2.hpp
-   P2ElementwiseEpsilon_2_0.cpp
-   P2ElementwiseEpsilon_2_0.hpp
-   P2ElementwiseEpsilon_2_1.cpp
-   P2ElementwiseEpsilon_2_1.hpp
-   P2ElementwiseEpsilon_2_2.cpp
-   P2ElementwiseEpsilon_2_2.hpp
    P2ElementwiseEpsilonIcosahedralShellMap_0_0.cpp
    P2ElementwiseEpsilonIcosahedralShellMap_0_0.hpp
    P2ElementwiseEpsilonIcosahedralShellMap_0_1.cpp
@@ -36,11 +18,41 @@ add_library( opgen-epsilon
    P2ElementwiseEpsilonIcosahedralShellMap_2_1.hpp
    P2ElementwiseEpsilonIcosahedralShellMap_2_2.cpp
    P2ElementwiseEpsilonIcosahedralShellMap_2_2.hpp
+   P2ElementwiseEpsilon_0_0.cpp
+   P2ElementwiseEpsilon_0_0.hpp
+   P2ElementwiseEpsilon_0_1.cpp
+   P2ElementwiseEpsilon_0_1.hpp
+   P2ElementwiseEpsilon_0_2.cpp
+   P2ElementwiseEpsilon_0_2.hpp
+   P2ElementwiseEpsilon_1_0.cpp
+   P2ElementwiseEpsilon_1_0.hpp
+   P2ElementwiseEpsilon_1_1.cpp
+   P2ElementwiseEpsilon_1_1.hpp
+   P2ElementwiseEpsilon_1_2.cpp
+   P2ElementwiseEpsilon_1_2.hpp
+   P2ElementwiseEpsilon_2_0.cpp
+   P2ElementwiseEpsilon_2_0.hpp
+   P2ElementwiseEpsilon_2_1.cpp
+   P2ElementwiseEpsilon_2_1.hpp
+   P2ElementwiseEpsilon_2_2.cpp
+   P2ElementwiseEpsilon_2_2.hpp
 )
 
 if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
    target_sources(opgen-epsilon PRIVATE
 
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_0_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_1_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_2_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_0_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_1_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_2_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_0_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_1_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_2_apply_macro_3D.cpp
+      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
       avx/P2ElementwiseEpsilon_0_0_apply_macro_2D.cpp
       avx/P2ElementwiseEpsilon_0_0_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilon_0_0_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -59,6 +71,15 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       avx/P2ElementwiseEpsilon_2_1_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilon_2_2_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilon_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_0_0_toMatrix_macro_2D.cpp
       noarch/P2ElementwiseEpsilon_0_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_0_1_toMatrix_macro_2D.cpp
@@ -72,6 +93,10 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       noarch/P2ElementwiseEpsilon_2_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_2_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_2_2_toMatrix_macro_3D.cpp
+   )
+
+   set_source_files_properties(
+
       avx/P2ElementwiseEpsilonIcosahedralShellMap_0_0_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilonIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
       avx/P2ElementwiseEpsilonIcosahedralShellMap_0_1_apply_macro_3D.cpp
@@ -84,19 +109,6 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       avx/P2ElementwiseEpsilonIcosahedralShellMap_2_1_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilonIcosahedralShellMap_2_2_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilonIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
-   )
-
-   set_source_files_properties(
-
       avx/P2ElementwiseEpsilon_0_0_apply_macro_2D.cpp
       avx/P2ElementwiseEpsilon_0_0_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilon_0_0_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -115,18 +127,6 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       avx/P2ElementwiseEpsilon_2_1_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilon_2_2_apply_macro_3D.cpp
       avx/P2ElementwiseEpsilon_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_0_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_1_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_0_2_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_0_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_1_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_1_2_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_0_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_1_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_2_apply_macro_3D.cpp
-      avx/P2ElementwiseEpsilonIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
 
       PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}
    )
@@ -137,12 +137,33 @@ else()
 
    target_sources(opgen-epsilon PRIVATE
 
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_1_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_2_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_0_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_2_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_0_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_1_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_apply_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_0_0_apply_macro_2D.cpp
       noarch/P2ElementwiseEpsilon_0_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilon_0_0_toMatrix_macro_2D.cpp
-      noarch/P2ElementwiseEpsilon_0_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_0_0_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P2ElementwiseEpsilon_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilon_0_0_toMatrix_macro_2D.cpp
+      noarch/P2ElementwiseEpsilon_0_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_0_1_apply_macro_2D.cpp
       noarch/P2ElementwiseEpsilon_0_1_apply_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_0_1_toMatrix_macro_2D.cpp
@@ -155,10 +176,10 @@ else()
       noarch/P2ElementwiseEpsilon_1_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_1_1_apply_macro_2D.cpp
       noarch/P2ElementwiseEpsilon_1_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilon_1_1_toMatrix_macro_2D.cpp
-      noarch/P2ElementwiseEpsilon_1_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_1_1_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P2ElementwiseEpsilon_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilon_1_1_toMatrix_macro_2D.cpp
+      noarch/P2ElementwiseEpsilon_1_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_1_2_apply_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_1_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_2_0_apply_macro_3D.cpp
@@ -166,29 +187,8 @@ else()
       noarch/P2ElementwiseEpsilon_2_1_apply_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_2_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_2_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilon_2_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseEpsilon_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseEpsilonIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseEpsilon_2_2_toMatrix_macro_3D.cpp
    )
 endif()
 
diff --git a/operators/full_stokes/CMakeLists.txt b/operators/full_stokes/CMakeLists.txt
index 68397a63122cbed89b111d332b6a41bb68dfd16c..d01c2a478ea8a0af31ccccf6a76b7e531a0ac383 100644
--- a/operators/full_stokes/CMakeLists.txt
+++ b/operators/full_stokes/CMakeLists.txt
@@ -1,23 +1,5 @@
 add_library( opgen-full_stokes
 
-   P2ElementwiseFullStokes_0_0.cpp
-   P2ElementwiseFullStokes_0_0.hpp
-   P2ElementwiseFullStokes_0_1.cpp
-   P2ElementwiseFullStokes_0_1.hpp
-   P2ElementwiseFullStokes_0_2.cpp
-   P2ElementwiseFullStokes_0_2.hpp
-   P2ElementwiseFullStokes_1_0.cpp
-   P2ElementwiseFullStokes_1_0.hpp
-   P2ElementwiseFullStokes_1_1.cpp
-   P2ElementwiseFullStokes_1_1.hpp
-   P2ElementwiseFullStokes_1_2.cpp
-   P2ElementwiseFullStokes_1_2.hpp
-   P2ElementwiseFullStokes_2_0.cpp
-   P2ElementwiseFullStokes_2_0.hpp
-   P2ElementwiseFullStokes_2_1.cpp
-   P2ElementwiseFullStokes_2_1.hpp
-   P2ElementwiseFullStokes_2_2.cpp
-   P2ElementwiseFullStokes_2_2.hpp
    P2ElementwiseFullStokesIcosahedralShellMap_0_0.cpp
    P2ElementwiseFullStokesIcosahedralShellMap_0_0.hpp
    P2ElementwiseFullStokesIcosahedralShellMap_0_1.cpp
@@ -36,11 +18,41 @@ add_library( opgen-full_stokes
    P2ElementwiseFullStokesIcosahedralShellMap_2_1.hpp
    P2ElementwiseFullStokesIcosahedralShellMap_2_2.cpp
    P2ElementwiseFullStokesIcosahedralShellMap_2_2.hpp
+   P2ElementwiseFullStokes_0_0.cpp
+   P2ElementwiseFullStokes_0_0.hpp
+   P2ElementwiseFullStokes_0_1.cpp
+   P2ElementwiseFullStokes_0_1.hpp
+   P2ElementwiseFullStokes_0_2.cpp
+   P2ElementwiseFullStokes_0_2.hpp
+   P2ElementwiseFullStokes_1_0.cpp
+   P2ElementwiseFullStokes_1_0.hpp
+   P2ElementwiseFullStokes_1_1.cpp
+   P2ElementwiseFullStokes_1_1.hpp
+   P2ElementwiseFullStokes_1_2.cpp
+   P2ElementwiseFullStokes_1_2.hpp
+   P2ElementwiseFullStokes_2_0.cpp
+   P2ElementwiseFullStokes_2_0.hpp
+   P2ElementwiseFullStokes_2_1.cpp
+   P2ElementwiseFullStokes_2_1.hpp
+   P2ElementwiseFullStokes_2_2.cpp
+   P2ElementwiseFullStokes_2_2.hpp
 )
 
 if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
    target_sources(opgen-full_stokes PRIVATE
 
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_0_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_1_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_2_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_0_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_1_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_2_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_0_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_1_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_2_apply_macro_3D.cpp
+      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
       avx/P2ElementwiseFullStokes_0_0_apply_macro_2D.cpp
       avx/P2ElementwiseFullStokes_0_0_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokes_0_0_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -59,6 +71,15 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       avx/P2ElementwiseFullStokes_2_1_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokes_2_2_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokes_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_0_0_toMatrix_macro_2D.cpp
       noarch/P2ElementwiseFullStokes_0_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_0_1_toMatrix_macro_2D.cpp
@@ -72,6 +93,10 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       noarch/P2ElementwiseFullStokes_2_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_2_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_2_2_toMatrix_macro_3D.cpp
+   )
+
+   set_source_files_properties(
+
       avx/P2ElementwiseFullStokesIcosahedralShellMap_0_0_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokesIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
       avx/P2ElementwiseFullStokesIcosahedralShellMap_0_1_apply_macro_3D.cpp
@@ -84,19 +109,6 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       avx/P2ElementwiseFullStokesIcosahedralShellMap_2_1_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokesIcosahedralShellMap_2_2_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokesIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
-   )
-
-   set_source_files_properties(
-
       avx/P2ElementwiseFullStokes_0_0_apply_macro_2D.cpp
       avx/P2ElementwiseFullStokes_0_0_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokes_0_0_computeInverseDiagonalOperatorValues_macro_2D.cpp
@@ -115,18 +127,6 @@ if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY)
       avx/P2ElementwiseFullStokes_2_1_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokes_2_2_apply_macro_3D.cpp
       avx/P2ElementwiseFullStokes_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_0_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_1_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_0_2_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_0_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_1_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_1_2_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_0_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_1_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_2_apply_macro_3D.cpp
-      avx/P2ElementwiseFullStokesIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
 
       PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS}
    )
@@ -137,12 +137,33 @@ else()
 
    target_sources(opgen-full_stokes PRIVATE
 
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_1_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_2_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_0_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_2_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_0_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_1_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_apply_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_0_0_apply_macro_2D.cpp
       noarch/P2ElementwiseFullStokes_0_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokes_0_0_toMatrix_macro_2D.cpp
-      noarch/P2ElementwiseFullStokes_0_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_0_0_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P2ElementwiseFullStokes_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokes_0_0_toMatrix_macro_2D.cpp
+      noarch/P2ElementwiseFullStokes_0_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_0_1_apply_macro_2D.cpp
       noarch/P2ElementwiseFullStokes_0_1_apply_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_0_1_toMatrix_macro_2D.cpp
@@ -155,10 +176,10 @@ else()
       noarch/P2ElementwiseFullStokes_1_0_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_1_1_apply_macro_2D.cpp
       noarch/P2ElementwiseFullStokes_1_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokes_1_1_toMatrix_macro_2D.cpp
-      noarch/P2ElementwiseFullStokes_1_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_1_1_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P2ElementwiseFullStokes_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokes_1_1_toMatrix_macro_2D.cpp
+      noarch/P2ElementwiseFullStokes_1_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_1_2_apply_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_1_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_2_0_apply_macro_3D.cpp
@@ -166,29 +187,8 @@ else()
       noarch/P2ElementwiseFullStokes_2_1_apply_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_2_1_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_2_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokes_2_2_toMatrix_macro_3D.cpp
       noarch/P2ElementwiseFullStokes_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_0_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_0_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_1_computeInverseDiagonalOperatorValues_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_1_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_0_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_0_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_1_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_1_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_apply_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_toMatrix_macro_3D.cpp
-      noarch/P2ElementwiseFullStokesIcosahedralShellMap_2_2_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P2ElementwiseFullStokes_2_2_toMatrix_macro_3D.cpp
    )
 endif()
 
diff --git a/operators/mass/CMakeLists.txt b/operators/mass/CMakeLists.txt
index 9a363eb5eacf4b50b5d22f9a1c7b737826618bee..02882b0d37e11e60fadc3abe089b0adf194112f4 100644
--- a/operators/mass/CMakeLists.txt
+++ b/operators/mass/CMakeLists.txt
@@ -33,10 +33,10 @@ else()
 
       noarch/P1ElementwiseMass_apply_macro_2D.cpp
       noarch/P1ElementwiseMass_apply_macro_3D.cpp
-      noarch/P1ElementwiseMass_toMatrix_macro_2D.cpp
-      noarch/P1ElementwiseMass_toMatrix_macro_3D.cpp
       noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_2D.cpp
       noarch/P1ElementwiseMass_computeInverseDiagonalOperatorValues_macro_3D.cpp
+      noarch/P1ElementwiseMass_toMatrix_macro_2D.cpp
+      noarch/P1ElementwiseMass_toMatrix_macro_3D.cpp
    )
 endif()