diff --git a/tests/test_StencilBuilder.cpp b/tests/test_StencilBuilder.cpp
index 8759b36c5c8dbf5e1b1d6c8af9b72ee4b7fe940f..0666ca112873073d243fbc6318bf8aec5573e629 100644
--- a/tests/test_StencilBuilder.cpp
+++ b/tests/test_StencilBuilder.cpp
@@ -100,21 +100,6 @@ TEST_CASE("StencilBuilder", "[mesh]")
     return true;
   };
 
-  auto are_stencil_by_nodes_valid = [&](const auto& connectivity, const auto& stencil_array,
-                                        const size_t number_of_layers) {
-    return is_valid.template operator()<ItemType::node>(connectivity, stencil_array, number_of_layers);
-  };
-
-  auto are_stencil_by_faces_valid = [&](const auto& connectivity, const auto& stencil_array,
-                                        const size_t number_of_layers) {
-    return is_valid.template operator()<ItemType::face>(connectivity, stencil_array, number_of_layers);
-  };
-
-  auto are_stencil_by_edges_valid = [&](const auto& connectivity, const auto& stencil_array,
-                                        const size_t number_of_layers) {
-    return is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, number_of_layers);
-  };
-
   SECTION("inner stencil")
   {
     SECTION("1 layer")
@@ -128,7 +113,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
           const Connectivity<1>& connectivity = mesh.connectivity();
 
           REQUIRE(
-            are_stencil_by_nodes_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::node>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -136,7 +122,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_edges_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::edge>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -144,7 +131,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_faces_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::face>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -159,7 +147,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
           const Connectivity<1>& connectivity = mesh.connectivity();
 
           REQUIRE(
-            are_stencil_by_nodes_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::node>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -167,7 +156,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_edges_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::edge>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -175,7 +165,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_faces_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::face>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -192,7 +183,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
           const Connectivity<2>& connectivity = mesh.connectivity();
           REQUIRE(
-            are_stencil_by_nodes_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::node>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -200,7 +192,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_edges_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::edge>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -208,7 +201,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_faces_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::face>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -222,7 +216,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
           const Connectivity<2>& connectivity = mesh.connectivity();
           REQUIRE(
-            are_stencil_by_nodes_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::node>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -230,7 +225,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_edges_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::edge>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -238,7 +234,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_faces_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::face>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -255,7 +252,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
           const Connectivity<3>& connectivity = mesh.connectivity();
           REQUIRE(
-            are_stencil_by_nodes_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::node>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -263,7 +261,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_edges_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::edge>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -271,7 +270,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_faces_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::face>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -285,7 +285,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
           const Connectivity<3>& connectivity = mesh.connectivity();
           REQUIRE(
-            are_stencil_by_nodes_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::node>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -293,7 +294,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_edges_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::edge>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -301,7 +303,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        1));
 
           REQUIRE(
-            are_stencil_by_faces_valid(connectivity,
+            is_valid.template
+            operator()<ItemType::face>(connectivity,
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(connectivity,
                                                                     StencilDescriptor{1, StencilDescriptor::
@@ -324,7 +327,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
           const auto& mesh = *mesh_v->get<Mesh<1>>();
 
           REQUIRE(
-            are_stencil_by_nodes_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::node>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -332,7 +336,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        2));
 
           REQUIRE(
-            are_stencil_by_edges_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::edge>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -340,7 +345,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        2));
 
           REQUIRE(
-            are_stencil_by_faces_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::face>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -358,7 +364,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
           const auto& mesh = *mesh_v->get<Mesh<2>>();
 
           REQUIRE(
-            are_stencil_by_nodes_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::node>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -366,7 +373,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        2));
 
           REQUIRE(
-            are_stencil_by_edges_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::edge>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -374,7 +382,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        2));
 
           REQUIRE(
-            are_stencil_by_faces_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::face>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -393,7 +402,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
           const auto& mesh = *mesh_v->get<Mesh<3>>();
 
           REQUIRE(
-            are_stencil_by_nodes_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::node>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -401,7 +411,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        2));
 
           REQUIRE(
-            are_stencil_by_edges_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::edge>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -409,7 +420,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
                                        2));
 
           REQUIRE(
-            are_stencil_by_faces_valid(mesh.connectivity(),
+            is_valid.template
+            operator()<ItemType::face>(mesh.connectivity(),
                                        StencilManager::instance()
                                          .getCellToCellStencilArray(mesh.connectivity(),
                                                                     StencilDescriptor{2, StencilDescriptor::
@@ -612,21 +624,6 @@ TEST_CASE("StencilBuilder", "[mesh]")
       return are_valid_symmetries;
     };
 
-    auto are_symmetry_stencils_by_nodes_valid = [&](const auto& stencil_array, const auto& mesh,
-                                                    const size_t number_of_layers) {
-      return are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, number_of_layers);
-    };
-
-    auto are_symmetry_stencils_by_edges_valid = [&](const auto& stencil_array, const auto& mesh,
-                                                    const size_t number_of_layers) {
-      return are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, number_of_layers);
-    };
-
-    auto are_symmetry_stencils_by_faces_valid = [&](const auto& stencil_array, const auto& mesh,
-                                                    const size_t number_of_layers) {
-      return are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, number_of_layers);
-    };
-
     SECTION("1 layer")
     {
       SECTION("1D")
@@ -649,8 +646,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -661,8 +658,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -673,8 +670,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
         }
 
@@ -692,8 +689,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -704,8 +701,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -716,8 +713,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
         }
       }
@@ -744,8 +741,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -756,8 +753,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_edges_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, 1));
           }
 
           {
@@ -768,9 +765,9 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 1));
-            REQUIRE(not(are_stencil_by_nodes_valid(connectivity, stencil_array, 1)));
-            REQUIRE(are_stencil_by_faces_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 1));
+            REQUIRE(not(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1)));
+            REQUIRE(is_valid.template operator()<ItemType::face>(connectivity, stencil_array, 1));
           }
         }
 
@@ -788,8 +785,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -800,8 +797,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_edges_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, 1));
           }
 
           {
@@ -812,9 +809,9 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 1));
-            REQUIRE(not(are_stencil_by_nodes_valid(connectivity, stencil_array, 1)));
-            REQUIRE(are_stencil_by_faces_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 1));
+            REQUIRE(not(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1)));
+            REQUIRE(is_valid.template operator()<ItemType::face>(connectivity, stencil_array, 1));
           }
         }
       }
@@ -842,8 +839,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -854,8 +851,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_edges_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, 1));
           }
 
           {
@@ -866,8 +863,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_faces_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::face>(connectivity, stencil_array, 1));
           }
         }
 
@@ -884,8 +881,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 1));
           }
 
           {
@@ -896,8 +893,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_edges_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, 1));
           }
 
           {
@@ -908,8 +905,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 1));
-            REQUIRE(are_stencil_by_faces_valid(connectivity, stencil_array, 1));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 1));
+            REQUIRE(is_valid.template operator()<ItemType::face>(connectivity, stencil_array, 1));
           }
         }
       }
@@ -940,8 +937,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 2));
           }
 
           {
@@ -952,8 +949,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 2));
           }
 
           {
@@ -964,8 +961,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 2);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 2));
           }
         }
       }
@@ -993,8 +990,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 2));
           }
 
           {
@@ -1005,8 +1002,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_edges_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, 2));
           }
 
           {
@@ -1017,9 +1014,9 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 4);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 2));
-            REQUIRE(not(are_stencil_by_nodes_valid(connectivity, stencil_array, 2)));
-            REQUIRE(are_stencil_by_faces_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 2));
+            REQUIRE(not(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 2)));
+            REQUIRE(is_valid.template operator()<ItemType::face>(connectivity, stencil_array, 2));
           }
         }
       }
@@ -1050,8 +1047,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_nodes_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_nodes_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::node>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::node>(connectivity, stencil_array, 2));
           }
 
           {
@@ -1062,8 +1059,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_edges_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_edges_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::edge>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::edge>(connectivity, stencil_array, 2));
           }
 
           {
@@ -1074,8 +1071,8 @@ TEST_CASE("StencilBuilder", "[mesh]")
 
             REQUIRE(stencil_array.symmetryBoundaryStencilArrayList().size() == 6);
             REQUIRE(check_ghost_cells_have_empty_stencils(stencil_array, connectivity));
-            REQUIRE(are_symmetry_stencils_by_faces_valid(stencil_array, mesh, 2));
-            REQUIRE(are_stencil_by_faces_valid(connectivity, stencil_array, 2));
+            REQUIRE(are_symmetry_stencils_valid.template operator()<ItemType::face>(stencil_array, mesh, 2));
+            REQUIRE(is_valid.template operator()<ItemType::face>(connectivity, stencil_array, 2));
           }
         }
       }