diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 2d7ce98..79a4e41 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -124,19 +124,19 @@
     }
 }
 
-void Manager::createInterface(const InterfaceInfo& info, bool enabled)
+void Manager::createInterface(const UndiscoveredInfo& info, bool enabled)
 {
-    removeInterface(info);
-    config::Parser config(config::pathForIntfConf(confDir, *info.name));
+    removeInterface(info.intf);
+    config::Parser config(config::pathForIntfConf(confDir, *info.intf.name));
     auto intf = std::make_unique<EthernetInterface>(
-        bus, *this, info, objectPath, config, true, enabled);
+        bus, *this, info.intf, objectPath, config, true, enabled);
     intf->createIPAddressObjects();
     intf->createStaticNeighborObjects();
     intf->loadNameServers(config);
     intf->loadNTPServers(config);
     auto ptr = intf.get();
-    interfaces.emplace(*info.name, std::move(intf));
-    interfacesByIdx.emplace(info.idx, ptr);
+    interfaces.insert_or_assign(*info.intf.name, std::move(intf));
+    interfacesByIdx.insert_or_assign(info.intf.idx, ptr);
 }
 
 void Manager::addInterface(const InterfaceInfo& info)
@@ -144,11 +144,12 @@
     auto it = systemdNetworkdEnabled.find(info.idx);
     if (it != systemdNetworkdEnabled.end())
     {
-        createInterface(info, it->second);
+        createInterface({info}, it->second);
     }
     else
     {
-        undiscoveredIntfInfo.insert_or_assign(info.idx, std::move(info));
+        undiscoveredIntfInfo.insert_or_assign(
+            info.idx, UndiscoveredInfo{std::move(info)});
     }
 }
 
