diff --git a/GeoLib/GEOObjects.cpp b/GeoLib/GEOObjects.cpp
index 114e70630b24bbe5003c7197a9c8dd957310af5f..a48c2cd0a033a0a1f01671b144a52610dedf05ea 100644
--- a/GeoLib/GEOObjects.cpp
+++ b/GeoLib/GEOObjects.cpp
@@ -589,30 +589,21 @@ void GEOObjects::renameGeometry(std::string const& old_name,
                                 std::string const& new_name)
 {
     _callbacks->renameGeometry(old_name, new_name);
-    for (auto* pnt_vec : _pnt_vecs)
-    {
-        if (pnt_vec->getName() == old_name)
-        {
-            pnt_vec->setName(new_name);
-            break;
-        }
-    }
-    for (auto* ply_vec : _ply_vecs)
-    {
-        if (ply_vec->getName() == old_name)
-        {
-            ply_vec->setName(new_name);
-            break;
-        }
-    }
-    for (auto* sfc_vec : _sfc_vecs)
+
+    auto rename = [&old_name, &new_name](auto const& container)
     {
-        if (sfc_vec->getName() == old_name)
+        auto it = std::find_if(container.begin(), container.end(),
+                               [&old_name](auto const item)
+                               { return item->getName() == old_name; });
+        if (it != container.end())
         {
-            sfc_vec->setName(new_name);
-            break;
+            (*it)->setName(new_name);
         }
-    }
+    };
+
+    rename(_pnt_vecs);
+    rename(_ply_vecs);
+    rename(_sfc_vecs);
 }
 
 void markUnusedPoints(GEOObjects const& geo_objects,