diff --git a/dumux/multidomain/facet/vertexmapper.hh b/dumux/multidomain/facet/vertexmapper.hh
index 4d7aca243ecbc3f4fe707c79072fd3c1f489ae64..82cb88f3d542b751559b3382f79aa5f794ef3224 100644
--- a/dumux/multidomain/facet/vertexmapper.hh
+++ b/dumux/multidomain/facet/vertexmapper.hh
@@ -77,21 +77,17 @@ public:
                                                              dim ) ] = true;
         }
 
-        // for now, set all markers to true for vertices on codim one grid
-        for (const auto& vertex : vertices(codimOneGridView))
-            vertexMarkers[codimOneGridAdapter.bulkGridVertexIndex(vertex)] = true;
-
-        // unmark where necessary
+        // mark all vertices on the lower-dimensional grid to be enriched (except immersed boundaries)
+        std::vector<typename GridView::IndexSet::IndexType> vertexIndicesStorage;
         for (const auto& codimOneElement : elements(codimOneGridView))
         {
-            // if a codimension one element has less than two embedments  we do not need to enrich
-            if (codimOneGridAdapter.numEmbedments(codimOneElement) < 2)
+            // if a codimension one element has 2 or more embedments, we need to enrich
+            if (codimOneGridAdapter.numEmbedments(codimOneElement) >= 2)
+            {
                 for (int i = 0; i < codimOneElement.subEntities(dim-1); ++i)
-                    vertexMarkers[ codimOneGridAdapter.bulkGridVertexIndex(codimOneElement.template subEntity<dim-1>(i)) ] = false;
+                    vertexMarkers[ codimOneGridAdapter.bulkGridVertexIndex(codimOneElement.template subEntity<dim-1>(i)) ] = true;
 
-            // otherwise, we check for immersed boundaries where we also must not enrich
-            else
-            {
+                // however, we have to exclude immersed boundaries
                 const auto refElem = referenceElement(codimOneElement);
                 for (const auto& intersection : intersections(codimOneGridView, codimOneElement))
                 {
@@ -99,18 +95,18 @@ public:
                     if (!intersection.boundary())
                         continue;
 
-                    // obtain all grid indices of the intersection corners
+                    // obtain all bulk grid indices of the lower-dimensional intersection corners
                     const auto numCorners = intersection.geometry().corners();
-                    std::vector<typename GridView::IndexSet::IndexType> vertexIndices(numCorners);
+                    vertexIndicesStorage.resize(numCorners);
                     for (int i = 0; i < numCorners; ++i)
                     {
                         const auto vIdxLocal = refElem.subEntity(intersection.indexInInside(), 1, i, dim-1);
-                        vertexIndices[i] = codimOneGridAdapter.bulkGridVertexIndex( codimOneElement.template subEntity<dim-1>(vIdxLocal) );
+                        vertexIndicesStorage[i] = codimOneGridAdapter.bulkGridVertexIndex( codimOneElement.template subEntity<dim-1>(vIdxLocal) );
                     }
 
                     // if any of the vertices is on an immersed boundary, we must not enrich any of them
-                    if (std::any_of(vertexIndices.begin(), vertexIndices.end(), [&isOnBoundary] (auto idx) { return !isOnBoundary[idx]; }))
-                        std::for_each(vertexIndices.begin(), vertexIndices.end(), [&vertexMarkers] (auto idx) { vertexMarkers[idx] = false; });
+                    if (std::any_of(vertexIndicesStorage.begin(), vertexIndicesStorage.end(), [&isOnBoundary] (auto idx) { return !isOnBoundary[idx]; }))
+                        std::for_each(vertexIndicesStorage.begin(), vertexIndicesStorage.end(), [&vertexMarkers] (auto idx) { vertexMarkers[idx] = false; });
                 }
             }
         }