diff --git a/src/config_parser.cpp b/src/config_parser.cpp
index 599908e..1e8e646 100644
--- a/src/config_parser.cpp
+++ b/src/config_parser.cpp
@@ -82,7 +82,7 @@
                      [](const Value& v) { return std::string(v); });
 }
 
-void KeyCheck::operator()(const std::string& s)
+void KeyCheck::operator()(std::string_view s)
 {
     for (auto c : s)
     {
@@ -94,7 +94,7 @@
     }
 }
 
-void SectionCheck::operator()(const std::string& s)
+void SectionCheck::operator()(std::string_view s)
 {
     for (auto c : s)
     {
@@ -106,7 +106,7 @@
     }
 }
 
-void ValueCheck::operator()(const std::string& s)
+void ValueCheck::operator()(std::string_view s)
 {
     for (auto c : s)
     {
diff --git a/src/config_parser.hpp b/src/config_parser.hpp
index 12ac417..461a22d 100644
--- a/src/config_parser.hpp
+++ b/src/config_parser.hpp
@@ -88,15 +88,15 @@
 
 struct KeyCheck
 {
-    void operator()(const std::string& s);
+    void operator()(std::string_view s);
 };
 struct SectionCheck
 {
-    void operator()(const std::string& s);
+    void operator()(std::string_view s);
 };
 struct ValueCheck
 {
-    void operator()(const std::string& s);
+    void operator()(std::string_view s);
 };
 
 struct string_hash : public std::hash<std::string_view>
diff --git a/src/dhcp_configuration.cpp b/src/dhcp_configuration.cpp
index c14f547..5914277 100644
--- a/src/dhcp_configuration.cpp
+++ b/src/dhcp_configuration.cpp
@@ -19,8 +19,8 @@
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 
-Configuration::Configuration(sdbusplus::bus_t& bus, const std::string& objPath,
-                             Manager& parent) :
+Configuration::Configuration(sdbusplus::bus_t& bus,
+                             stdplus::const_zstring objPath, Manager& parent) :
     Iface(bus, objPath.c_str(), Iface::action::defer_emit),
     bus(bus), manager(parent)
 {
diff --git a/src/dhcp_configuration.hpp b/src/dhcp_configuration.hpp
index 19a8888..98f8e46 100644
--- a/src/dhcp_configuration.hpp
+++ b/src/dhcp_configuration.hpp
@@ -1,7 +1,7 @@
 #pragma once
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <string>
+#include <stdplus/zstring.hpp>
 #include <xyz/openbmc_project/Network/DHCPConfiguration/server.hpp>
 
 namespace phosphor
@@ -39,7 +39,7 @@
      *  @param[in] objPath - Path to attach at.
      *  @param[in] parent - Parent object.
      */
-    Configuration(sdbusplus::bus_t& bus, const std::string& objPath,
+    Configuration(sdbusplus::bus_t& bus, stdplus::const_zstring objPath,
                   Manager& parent);
 
     /** @brief If true then DNS servers received from the DHCP server
diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 7c1f187..3f1743c 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -53,16 +53,16 @@
 }
 
 EthernetInterface::EthernetInterface(sdbusplus::bus_t& bus,
-                                     const std::string& objPath,
+                                     stdplus::zstring_view objPath,
                                      const config::Parser& config,
                                      Manager& parent, bool emitSignal,
                                      std::optional<bool> enabled) :
     Ifaces(bus, objPath.c_str(),
            emitSignal ? Ifaces::action::defer_emit
                       : Ifaces::action::emit_no_signals),
-    bus(bus), manager(parent), objPath(objPath)
+    bus(bus), manager(parent), objPath(objPath.c_str())
 {
-    auto intfName = objPath.substr(objPath.rfind("/") + 1);
+    auto intfName = std::string(objPath.substr(objPath.rfind('/') + 1));
     std::replace(intfName.begin(), intfName.end(), '_', '.');
     interfaceName(intfName);
     auto dhcpVal = getDHCPValue(config);
@@ -366,7 +366,7 @@
  */
 
 std::string
-    EthernetInterface::getMACAddress(const std::string& interfaceName) const
+    EthernetInterface::getMACAddress(stdplus::const_zstring interfaceName) const
 {
     std::string activeMACAddr = MacAddressIntf::macAddress();
 
@@ -386,13 +386,13 @@
         stdplus::raw::refFrom<ether_addr>(ifr.ifr_hwaddr.sa_data));
 }
 
-std::string EthernetInterface::generateId(const std::string& ipaddress,
+std::string EthernetInterface::generateId(std::string_view ipaddress,
                                           uint8_t prefixLength,
-                                          const std::string& gateway,
-                                          const std::string& origin)
+                                          std::string_view gateway,
+                                          std::string_view origin)
 {
     std::stringstream hexId;
-    std::string hashString = ipaddress;
+    std::string hashString = std::string(ipaddress);
     hashString += std::to_string(prefixLength);
     hashString += gateway;
     hashString += origin;
@@ -402,18 +402,19 @@
     return hexId.str();
 }
 
-std::string EthernetInterface::generateNeighborId(const std::string& ipAddress,
-                                                  const std::string& macAddress)
+std::string EthernetInterface::generateNeighborId(std::string_view ipAddress,
+                                                  std::string_view macAddress)
 {
     std::stringstream hexId;
-    std::string hashString = ipAddress + macAddress;
+    std::string hashString = std::string(ipAddress);
+    hashString += macAddress;
 
     // Only want 8 hex digits.
     hexId << std::hex << ((std::hash<std::string>{}(hashString)) & 0xFFFFFFFF);
     return hexId.str();
 }
 
-void EthernetInterface::deleteObject(const std::string& ipaddress)
+void EthernetInterface::deleteObject(std::string_view ipaddress)
 {
     auto it = addrs.find(ipaddress);
     if (it == addrs.end())
@@ -427,7 +428,7 @@
     manager.reloadConfigs();
 }
 
-void EthernetInterface::deleteStaticNeighborObject(const std::string& ipAddress)
+void EthernetInterface::deleteStaticNeighborObject(std::string_view ipAddress)
 {
     auto it = staticNeighbors.find(ipAddress);
     if (it == staticNeighbors.end())
@@ -442,7 +443,7 @@
     manager.reloadConfigs();
 }
 
-void EthernetInterface::deleteVLANFromSystem(const std::string& interface)
+void EthernetInterface::deleteVLANFromSystem(stdplus::zstring_view interface)
 {
     const auto& confDir = manager.getConfDir();
     auto networkFile = config::pathForIntfConf(confDir, interface);
@@ -466,7 +467,7 @@
     }
 }
 
-void EthernetInterface::deleteVLANObject(const std::string& interface)
+void EthernetInterface::deleteVLANObject(stdplus::zstring_view interface)
 {
     auto it = vlanInterfaces.find(interface);
     if (it == vlanInterfaces.end())
@@ -485,9 +486,8 @@
 }
 
 std::string EthernetInterface::generateObjectPath(
-    IP::Protocol addressType, const std::string& ipaddress,
-    uint8_t prefixLength, const std::string& gateway,
-    IP::AddressOrigin origin) const
+    IP::Protocol addressType, std::string_view ipaddress, uint8_t prefixLength,
+    std::string_view gateway, IP::AddressOrigin origin) const
 {
     std::string type = convertForMessage(addressType);
     type = type.substr(type.rfind('.') + 1);
@@ -502,7 +502,7 @@
 }
 
 std::string EthernetInterface::generateStaticNeighborObjectPath(
-    const std::string& ipAddress, const std::string& macAddress) const
+    std::string_view ipAddress, std::string_view macAddress) const
 {
     std::filesystem::path objectPath;
     objectPath /= objPath;
@@ -657,7 +657,7 @@
 
     // Store / Parser for the AdministrativeState return value
     std::optional<bool> ret;
-    auto cb = [&](const std::string& state) {
+    auto cb = [&](std::string_view state) {
         if (state != "initialized")
         {
             ret = state != "unmanaged";
diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp
index f0931d7..f726f48 100644
--- a/src/ethernet_interface.hpp
+++ b/src/ethernet_interface.hpp
@@ -7,6 +7,8 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
+#include <stdplus/zstring.hpp>
+#include <stdplus/zstring_view.hpp>
 #include <string>
 #include <vector>
 #include <xyz/openbmc_project/Collection/DeleteAll/server.hpp>
@@ -81,7 +83,7 @@
      *                          send.
      *  @param[in] enabled - Override the lookup of nicEnabled
      */
-    EthernetInterface(sdbusplus::bus_t& bus, const std::string& objPath,
+    EthernetInterface(sdbusplus::bus_t& bus, stdplus::zstring_view objPath,
                       const config::Parser& config, Manager& parent,
                       bool emitSignal = true,
                       std::optional<bool> enabled = std::nullopt);
@@ -109,18 +111,18 @@
     /* @brief delete the dbus object of the given ipAddress.
      * @param[in] ipAddress - IP address.
      */
-    void deleteObject(const std::string& ipAddress);
+    void deleteObject(std::string_view ipAddress);
 
     /* @brief delete the dbus object of the given ipAddress.
      * @param[in] ipAddress - IP address.
      */
-    void deleteStaticNeighborObject(const std::string& ipAddress);
+    void deleteStaticNeighborObject(std::string_view ipAddress);
 
     /* @brief delete the vlan dbus object of the given interface.
      *        Also deletes the device file and the network file.
      * @param[in] interface - VLAN Interface.
      */
-    void deleteVLANObject(const std::string& interface);
+    void deleteVLANObject(stdplus::zstring_view interface);
 
     /* @brief creates the dbus object(IPaddres) given in the address list.
      * @param[in] addrs - address list for which dbus objects needs
@@ -244,14 +246,14 @@
     /* @brief delete the vlan interface from system.
      * @param[in] interface - vlan Interface.
      */
-    void deleteVLANFromSystem(const std::string& interface);
+    void deleteVLANFromSystem(stdplus::zstring_view interface);
 
     /** @brief get the mac address of the interface.
      *  @param[in] interfaceName - Network interface name.
      *  @return macaddress on success
      */
 
-    std::string getMACAddress(const std::string& interfaceName) const;
+    std::string getMACAddress(stdplus::const_zstring interfaceName) const;
 
     /** @brief construct the ip address dbus object path.
      *  @param[in] addressType - Type of ip address.
@@ -264,14 +266,14 @@
      */
 
     std::string generateObjectPath(IP::Protocol addressType,
-                                   const std::string& ipAddress,
+                                   std::string_view ipAddress,
                                    uint8_t prefixLength,
-                                   const std::string& gateway,
+                                   std::string_view gateway,
                                    IP::AddressOrigin origin) const;
 
     std::string
-        generateStaticNeighborObjectPath(const std::string& ipAddress,
-                                         const std::string& macAddress) const;
+        generateStaticNeighborObjectPath(std::string_view ipAddress,
+                                         std::string_view macAddress) const;
 
     /** @brief generates the id by doing hash of ipAddress,
      *         prefixlength and the gateway.
@@ -282,10 +284,10 @@
      *  @return hash string.
      */
 
-    static std::string generateId(const std::string& ipAddress,
+    static std::string generateId(std::string_view ipAddress,
                                   uint8_t prefixLength,
-                                  const std::string& gateway,
-                                  const std::string& origin);
+                                  std::string_view gateway,
+                                  std::string_view origin);
 
     /** @brief generates the id by doing hash of ipAddress
      *         and the mac address.
@@ -293,8 +295,8 @@
      *  @param[in] macAddress - Gateway address.
      *  @return hash string.
      */
-    static std::string generateNeighborId(const std::string& ipAddress,
-                                          const std::string& macAddress);
+    static std::string generateNeighborId(std::string_view ipAddress,
+                                          std::string_view macAddress);
 
     /** @brief get the NTP server list from the network conf
      *
diff --git a/src/neighbor.cpp b/src/neighbor.cpp
index f68dd90..cfa8e60 100644
--- a/src/neighbor.cpp
+++ b/src/neighbor.cpp
@@ -15,6 +15,7 @@
 #include <phosphor-logging/elog.hpp>
 #include <stdexcept>
 #include <stdplus/raw.hpp>
+#include <string>
 #include <string_view>
 #include <utility>
 #include <vector>
@@ -86,14 +87,14 @@
     return neighbors;
 }
 
-Neighbor::Neighbor(sdbusplus::bus_t& bus, const char* objPath,
-                   EthernetInterface& parent, const std::string& ipAddress,
-                   const std::string& macAddress, State state) :
-    NeighborObj(bus, objPath, NeighborObj::action::defer_emit),
+Neighbor::Neighbor(sdbusplus::bus_t& bus, stdplus::const_zstring objPath,
+                   EthernetInterface& parent, std::string_view ipAddress,
+                   std::string_view macAddress, State state) :
+    NeighborObj(bus, objPath.c_str(), NeighborObj::action::defer_emit),
     parent(parent)
 {
-    NeighborObj::ipAddress(ipAddress);
-    NeighborObj::macAddress(macAddress);
+    NeighborObj::ipAddress(std::string(ipAddress));
+    NeighborObj::macAddress(std::string(macAddress));
     NeighborObj::state(state);
 
     // Emit deferred signal.
diff --git a/src/neighbor.hpp b/src/neighbor.hpp
index 4672726..a29218d 100644
--- a/src/neighbor.hpp
+++ b/src/neighbor.hpp
@@ -1,5 +1,4 @@
 #pragma once
-
 #include "types.hpp"
 
 #include <linux/netlink.h>
@@ -9,7 +8,7 @@
 #include <optional>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <string>
+#include <stdplus/zstring.hpp>
 #include <string_view>
 #include <vector>
 #include <xyz/openbmc_project/Network/Neighbor/server.hpp>
@@ -80,9 +79,9 @@
      *  @param[in] macAddress - Low level MAC address.
      *  @param[in] state - The state of the neighbor entry.
      */
-    Neighbor(sdbusplus::bus_t& bus, const char* objPath,
-             EthernetInterface& parent, const std::string& ipAddress,
-             const std::string& macAddress, State state);
+    Neighbor(sdbusplus::bus_t& bus, stdplus::const_zstring objPath,
+             EthernetInterface& parent, std::string_view ipAddress,
+             std::string_view macAddress, State state);
 
     /** @brief Delete this d-bus object.
      */
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index eecbe68..f959a69 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -41,12 +41,11 @@
 using Argument = xyz::openbmc_project::Common::InvalidArgument;
 
 Manager::Manager(sdbusplus::bus_t& bus, const char* objPath,
-                 const std::string& path) :
+                 const fs::path& confDir) :
     details::VLANCreateIface(bus, objPath,
                              details::VLANCreateIface::action::defer_emit),
     bus(bus), objectPath(objPath)
 {
-    fs::path confDir(path);
     setConfDir(confDir);
 }
 
diff --git a/src/network_manager.hpp b/src/network_manager.hpp
index edd7125..18bb7d5 100644
--- a/src/network_manager.hpp
+++ b/src/network_manager.hpp
@@ -53,9 +53,10 @@
     /** @brief Constructor to put object onto bus at a dbus path.
      *  @param[in] bus - Bus to attach to.
      *  @param[in] objPath - Path to attach at.
-     *  @param[in] dir - Network Configuration directory path.
+     *  @param[in] confDir - Network Configuration directory path.
      */
-    Manager(sdbusplus::bus_t& bus, const char* objPath, const std::string& dir);
+    Manager(sdbusplus::bus_t& bus, const char* objPath,
+            const fs::path& confDir);
 
     ObjectPath vlan(std::string interfaceName, uint32_t id) override;
 
diff --git a/src/system_configuration.cpp b/src/system_configuration.cpp
index a302ace..192f12d 100644
--- a/src/system_configuration.cpp
+++ b/src/system_configuration.cpp
@@ -24,7 +24,7 @@
     sdbusplus::xyz::openbmc_project::Network::server::SystemConfiguration;
 
 SystemConfiguration::SystemConfiguration(sdbusplus::bus_t& bus,
-                                         const std::string& objPath) :
+                                         stdplus::const_zstring objPath) :
     Iface(bus, objPath.c_str(), Iface::action::defer_emit),
     bus(bus)
 {
diff --git a/src/system_configuration.hpp b/src/system_configuration.hpp
index f5289ce..6bbb83f 100644
--- a/src/system_configuration.hpp
+++ b/src/system_configuration.hpp
@@ -2,6 +2,7 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
+#include <stdplus/zstring.hpp>
 #include <string>
 #include <xyz/openbmc_project/Network/SystemConfiguration/server.hpp>
 
@@ -37,7 +38,7 @@
      *  @param[in] objPath - Path to attach at.
      *  @param[in] parent - Parent object.
      */
-    SystemConfiguration(sdbusplus::bus_t& bus, const std::string& objPath);
+    SystemConfiguration(sdbusplus::bus_t& bus, stdplus::const_zstring objPath);
 
     /** @brief set the hostname of the system.
      *  @param[in] name - host name of the system.
diff --git a/src/vlan_interface.cpp b/src/vlan_interface.cpp
index 67074f0..efd1341 100644
--- a/src/vlan_interface.cpp
+++ b/src/vlan_interface.cpp
@@ -17,7 +17,8 @@
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 
-VlanInterface::VlanInterface(sdbusplus::bus_t& bus, const std::string& objPath,
+VlanInterface::VlanInterface(sdbusplus::bus_t& bus,
+                             stdplus::const_zstring objPath,
                              const config::Parser& config, bool nicEnabled,
                              uint32_t vlanID, EthernetInterface& intf,
                              Manager& parent) :
diff --git a/src/vlan_interface.hpp b/src/vlan_interface.hpp
index 09b9bb0..bc5a1c8 100644
--- a/src/vlan_interface.hpp
+++ b/src/vlan_interface.hpp
@@ -7,7 +7,7 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <string>
+#include <stdplus/zstring.hpp>
 #include <xyz/openbmc_project/Object/Delete/server.hpp>
 
 namespace phosphor
@@ -47,7 +47,7 @@
      *
      *  This constructor is called during loading the VLAN Interface
      */
-    VlanInterface(sdbusplus::bus_t& bus, const std::string& objPath,
+    VlanInterface(sdbusplus::bus_t& bus, stdplus::const_zstring objPath,
                   const config::Parser& config, bool nicEnabled,
                   uint32_t vlanID, EthernetInterface& intf, Manager& parent);
 
