diff --git a/GeoLib/GEOObjects.cpp b/GeoLib/GEOObjects.cpp
index efc6a4c95a95a9cb6044fc39caa84f45ab4b3ce6..fc3852e9d582b6f6e22c7703c6c9db02dcb3ce5b 100644
--- a/GeoLib/GEOObjects.cpp
+++ b/GeoLib/GEOObjects.cpp
@@ -247,6 +247,15 @@ void GEOObjects::addSurfaceVec(
     _callbacks->addSurfaceVec(name);
 }
 
+void GEOObjects::addSurfaceVec(std::vector<Surface*>&& sfc,
+                               const std::string& name,
+                               SurfaceVec::NameIdMap&& sfc_names)
+{
+    _sfc_vecs.push_back(
+        new SurfaceVec(name, std::move(sfc), std::move(sfc_names)));
+    _callbacks->addSurfaceVec(name);
+}
+
 bool GEOObjects::appendSurfaceVec(const std::vector<Surface*>& surfaces,
                                   const std::string& name)
 {
diff --git a/GeoLib/GEOObjects.h b/GeoLib/GEOObjects.h
index a220c8054b70d67c23fe8904c931dd3421e5c30e..6b38e283a05a2fa8b4b5c3bc4309cbb3e7341d47 100644
--- a/GeoLib/GEOObjects.h
+++ b/GeoLib/GEOObjects.h
@@ -183,6 +183,9 @@ public:
                        const std::string& name,
                        std::unique_ptr<std::map<std::string, std::size_t>>
                            sfc_names = nullptr);
+    void addSurfaceVec(std::vector<Surface*>&& sfc,
+                       const std::string& name,
+                       SurfaceVec::NameIdMap&& sfc_names);
 
     /**
      * Copies the surfaces in the vector to the SurfaceVec with the given name.