diff --git a/src/entity_manager/devices.hpp b/src/entity_manager/devices.hpp
index ed0f8dc..6437e32 100644
--- a/src/entity_manager/devices.hpp
+++ b/src/entity_manager/devices.hpp
@@ -2,7 +2,7 @@
 // SPDX-FileCopyrightText: Copyright 2018 Intel Corporation
 
 #pragma once
-#include <flat_map>
+#include <array>
 
 namespace devices
 {
@@ -31,165 +31,89 @@
 
 struct ExportTemplate
 {
-    ExportTemplate(const char* params, const char* bus, const char* constructor,
-                   const char* destructor, createsHWMon hasHWMonDir) :
-        parameters(params), busPath(bus), add(constructor), remove(destructor),
-        hasHWMonDir(hasHWMonDir) {};
-    const char* parameters;
-    const char* busPath;
-    const char* add;
-    const char* remove;
+    std::string_view type;
+    std::string_view parameters;
+    std::string_view busPath;
+    std::string_view add;
+    std::string_view remove;
     createsHWMon hasHWMonDir;
 };
 
-const std::flat_map<std::string_view, ExportTemplate, std::less<>>
-    exportTemplates{
-        {{"EEPROM_24C01",
-          ExportTemplate("24c01 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C02",
-          ExportTemplate("24c02 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C04",
-          ExportTemplate("24c04 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C08",
-          ExportTemplate("24c08 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C16",
-          ExportTemplate("24c16 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C32",
-          ExportTemplate("24c32 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C64",
-          ExportTemplate("24c64 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C128",
-          ExportTemplate("24c128 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM_24C256",
-          ExportTemplate("24c256 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"ADS1015",
-          ExportTemplate("ads1015 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"ADS7828",
-          ExportTemplate("ads7828 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"EEPROM",
-          ExportTemplate("eeprom $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"Gpio", ExportTemplate("$Index", "/sys/class/gpio", "export",
-                                 "unexport", createsHWMon::noHWMonDir)},
-         {"IPSPS1",
-          ExportTemplate("ipsps1 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"MAX34440",
-          ExportTemplate("max34440 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"PCA9537",
-          ExportTemplate("pca9537 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9542Mux",
-          ExportTemplate("pca9542 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9543Mux",
-          ExportTemplate("pca9543 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9544Mux",
-          ExportTemplate("pca9544 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9545Mux",
-          ExportTemplate("pca9545 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9546Mux",
-          ExportTemplate("pca9546 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9547Mux",
-          ExportTemplate("pca9547 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9548Mux",
-          ExportTemplate("pca9548 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9846Mux",
-          ExportTemplate("pca9846 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9847Mux",
-          ExportTemplate("pca9847 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9848Mux",
-          ExportTemplate("pca9848 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"PCA9849Mux",
-          ExportTemplate("pca9849 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"SIC450",
-          ExportTemplate("sic450 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"Q50SN12072",
-          ExportTemplate("q50sn12072 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"MAX31790",
-          ExportTemplate("max31790 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"PIC32", ExportTemplate("pic32 $Address",
-                                  "/sys/bus/i2c/devices/i2c-$Bus", "new_device",
-                                  "delete_device", createsHWMon::hasHWMonDir)},
-         {"INA226",
-          ExportTemplate("ina226 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"RAA229620",
-          ExportTemplate("raa229620 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"RAA229621",
-          ExportTemplate("raa229621 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"PIC32", ExportTemplate("pic32 $Address",
-                                  "/sys/bus/i2c/devices/i2c-$Bus", "new_device",
-                                  "delete_device", createsHWMon::hasHWMonDir)},
-         {"INA233",
-          ExportTemplate("ina233 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)},
-         {"RTQ6056",
-          ExportTemplate("rtq6056 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::noHWMonDir)},
-         {"SY24655",
-          ExportTemplate("sy24655 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
-                         "new_device", "delete_device",
-                         createsHWMon::hasHWMonDir)}}};
+constexpr auto exportTemplates = std::to_array<ExportTemplate>(
+    {{"EEPROM_24C01", "24c01 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C02", "24c02 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C04", "24c04 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C08", "24c08 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C16", "24c16 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C32", "24c32 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C64", "24c64 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C128", "24c128 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM_24C256", "24c256 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"ADS1015", "ads1015 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"ADS7828", "ads7828 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"EEPROM", "eeprom $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"Gpio", "$Index", "/sys/class/gpio", "export", "unexport",
+      createsHWMon::noHWMonDir},
+     {"IPSPS1", "ipsps1 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"MAX34440", "max34440 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"PCA9537", "pca9537 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9542Mux", "pca9542 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9543Mux", "pca9543 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9544Mux", "pca9544 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9545Mux", "pca9545 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9546Mux", "pca9546 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9547Mux", "pca9547 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9548Mux", "pca9548 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9846Mux", "pca9846 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9847Mux", "pca9847 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9848Mux", "pca9848 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"PCA9849Mux", "pca9849 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"SIC450", "sic450 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"Q50SN12072", "q50sn12072 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"MAX31790", "max31790 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"PIC32", "pic32 $Address", "/sys/bus/i2c/devices/i2c-$Bus", "new_device",
+      "delete_device", createsHWMon::hasHWMonDir},
+     {"INA226", "ina226 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"RAA229620", "raa229620 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"RAA229621", "raa229621 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"PIC32", "pic32 $Address", "/sys/bus/i2c/devices/i2c-$Bus", "new_device",
+      "delete_device", createsHWMon::hasHWMonDir},
+     {"INA233", "ina233 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir},
+     {"RTQ6056", "rtq6056 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::noHWMonDir},
+     {"SY24655", "sy24655 $Address", "/sys/bus/i2c/devices/i2c-$Bus",
+      "new_device", "delete_device", createsHWMon::hasHWMonDir}});
 } // namespace devices
diff --git a/src/entity_manager/overlay.cpp b/src/entity_manager/overlay.cpp
index f289715..60e9af6 100644
--- a/src/entity_manager/overlay.cpp
+++ b/src/entity_manager/overlay.cpp
@@ -53,7 +53,7 @@
     return name.str();
 }
 
-void linkMux(const std::string& muxName, uint64_t busIndex, uint64_t address,
+void linkMux(std::string_view muxName, uint64_t busIndex, uint64_t address,
              const std::vector<std::string>& channelNames)
 {
     std::error_code ec;
@@ -98,8 +98,8 @@
     }
 }
 
-static int deleteDevice(const std::string& busPath, uint64_t address,
-                        const std::string& destructor)
+static int deleteDevice(std::string_view busPath, uint64_t address,
+                        std::string_view destructor)
 {
     std::filesystem::path deviceDestructor(busPath);
     deviceDestructor /= destructor;
@@ -114,9 +114,8 @@
     return 0;
 }
 
-static int createDevice(const std::string& busPath,
-                        const std::string& parameters,
-                        const std::string& constructor)
+static int createDevice(std::string_view busPath, std::string_view parameters,
+                        std::string_view constructor)
 {
     std::filesystem::path deviceConstructor(busPath);
     deviceConstructor /= constructor;
@@ -132,7 +131,7 @@
     return 0;
 }
 
-static bool deviceIsCreated(const std::string& busPath, uint64_t bus,
+static bool deviceIsCreated(std::string_view busPath, uint64_t bus,
                             uint64_t address,
                             const devices::createsHWMon hasHWMonDir)
 {
@@ -149,9 +148,9 @@
 }
 
 static int buildDevice(
-    const std::string& name, const std::string& busPath,
-    const std::string& parameters, uint64_t bus, uint64_t address,
-    const std::string& constructor, const std::string& destructor,
+    std::string_view name, std::string_view busPath,
+    std::string_view parameters, uint64_t bus, uint64_t address,
+    std::string_view constructor, std::string_view destructor,
     const devices::createsHWMon hasHWMonDir,
     std::vector<std::string> channelNames, boost::asio::io_context& io,
     const size_t retries = 5)
@@ -203,15 +202,15 @@
     return 0;
 }
 
-void exportDevice(const std::string& type,
-                  const devices::ExportTemplate& exportTemplate,
+void exportDevice(const devices::ExportTemplate& exportTemplate,
                   const nlohmann::json& configuration,
                   boost::asio::io_context& io)
 {
-    std::string parameters = exportTemplate.parameters;
-    std::string busPath = exportTemplate.busPath;
-    std::string constructor = exportTemplate.add;
-    std::string destructor = exportTemplate.remove;
+    std::string_view type = exportTemplate.type;
+    std::string parameters(exportTemplate.parameters);
+    std::string busPath(exportTemplate.busPath);
+    std::string_view constructor = exportTemplate.add;
+    std::string_view destructor = exportTemplate.remove;
     devices::createsHWMon hasHWMonDir = exportTemplate.hasHWMonDir;
     std::string name = "unknown";
     std::optional<uint64_t> bus;
@@ -289,11 +288,13 @@
             {
                 continue;
             }
-            std::string type = findType.value().get<std::string>();
-            auto device = devices::exportTemplates.find(type.c_str());
+            const std::string& type = findType.value().get<std::string>();
+            const auto* device = std::ranges::find_if(
+                devices::exportTemplates,
+                [&type](const auto& tmp) { return tmp.type == type; });
             if (device != devices::exportTemplates.end())
             {
-                exportDevice(type, device->second, configuration, io);
+                exportDevice(*device, configuration, io);
                 continue;
             }
 
