diff --git a/include/cpu.hpp b/include/cpu.hpp
index 7b6434e..6328393 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -32,17 +32,17 @@
 {
 
 using rev =
-    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Revision;
+    sdbusplus::server::xyz::openbmc_project::inventory::decorator::Revision;
 using asset =
-    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset;
+    sdbusplus::server::xyz::openbmc_project::inventory::decorator::Asset;
 using location =
-    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::LocationCode;
+    sdbusplus::server::xyz::openbmc_project::inventory::decorator::LocationCode;
 using connector =
-    sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Slot;
-using processor = sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu;
-using Item = sdbusplus::xyz::openbmc_project::Inventory::server::Item;
+    sdbusplus::server::xyz::openbmc_project::inventory::connector::Slot;
+using processor = sdbusplus::server::xyz::openbmc_project::inventory::item::Cpu;
+using Item = sdbusplus::server::xyz::openbmc_project::inventory::Item;
 using association =
-    sdbusplus::xyz::openbmc_project::Association::server::Definitions;
+    sdbusplus::server::xyz::openbmc_project::association::Definitions;
 
 // Definition follow smbios spec DSP0134 3.0.0
 static const std::map<uint8_t, const char*> familyTable = {
diff --git a/include/cpuinfo.hpp b/include/cpuinfo.hpp
index e4f4d76..2ac5b37 100644
--- a/include/cpuinfo.hpp
+++ b/include/cpuinfo.hpp
@@ -34,12 +34,12 @@
 
 /** \ todo add cpu interface to CPUInfo and consolidate with smbios service
  * using processor =
-    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu;
+    sdbusplus::server::xyz::openbmc_project::inventory::item::Cpu;
 */
 
 using UniqueIdentifierBase =
-    sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                    Decorator::server::UniqueIdentifier>;
+    sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                    inventory::decorator::UniqueIdentifier>;
 
 struct CPUInfo : public UniqueIdentifierBase
 {
diff --git a/include/dimm.hpp b/include/dimm.hpp
index 2a02fb6..dbeb053 100644
--- a/include/dimm.hpp
+++ b/include/dimm.hpp
@@ -32,26 +32,26 @@
 {
 
 using DeviceType =
-    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::DeviceType;
+    sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::DeviceType;
 
 using EccType =
-    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::Ecc;
+    sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::Ecc;
 
 class Dimm :
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm>,
+        sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm>,
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset>,
-    sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                    Decorator::server::LocationCode>,
+        sdbusplus::server::xyz::openbmc_project::inventory::decorator::Asset>,
+    sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                    inventory::decorator::LocationCode>,
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Slot>,
+        sdbusplus::server::xyz::openbmc_project::inventory::connector::Slot>,
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Inventory::server::Item>,
+        sdbusplus::server::xyz::openbmc_project::inventory::Item>,
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Association::server::Definitions>,
-    sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::State::
-                                    Decorator::server::OperationalStatus>
+        sdbusplus::server::xyz::openbmc_project::association::Definitions>,
+    sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::state::
+                                    decorator::OperationalStatus>
 {
   public:
     Dimm() = delete;
@@ -66,25 +66,25 @@
          const std::string& motherboard) :
 
         sdbusplus::server::object_t<
-            sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm>(
+            sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm>(
             bus, objPath.c_str()),
-        sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                        Decorator::server::Asset>(
+        sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                        inventory::decorator::Asset>(
             bus, objPath.c_str()),
-        sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                        Decorator::server::LocationCode>(
+        sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                        inventory::decorator::LocationCode>(
             bus, objPath.c_str()),
-        sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                        Connector::server::Slot>(
+        sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                        inventory::connector::Slot>(
             bus, objPath.c_str()),
         sdbusplus::server::object_t<
-            sdbusplus::xyz::openbmc_project::Inventory::server::Item>(
+            sdbusplus::server::xyz::openbmc_project::inventory::Item>(
             bus, objPath.c_str()),
         sdbusplus::server::object_t<
-            sdbusplus::xyz::openbmc_project::Association::server::Definitions>(
+            sdbusplus::server::xyz::openbmc_project::association::Definitions>(
             bus, objPath.c_str()),
-        sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::State::
-                                        Decorator::server::OperationalStatus>(
+        sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                        state::decorator::OperationalStatus>(
             bus, objPath.c_str()),
         dimmNum(dimmId), storage(smbiosTableStorage),
         motherboardPath(motherboard)
diff --git a/include/mdrv2.hpp b/include/mdrv2.hpp
index b4b5efe..c9396e2 100644
--- a/include/mdrv2.hpp
+++ b/include/mdrv2.hpp
@@ -61,7 +61,7 @@
 
 class MDRV2 :
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Smbios::server::MDRV2>
+        sdbusplus::server::xyz::openbmc_project::smbios::MDRV2>
 {
   public:
     MDRV2() = delete;
@@ -74,7 +74,7 @@
     MDRV2(sdbusplus::bus_t& bus, const char* path,
           boost::asio::io_context& io) :
         sdbusplus::server::object_t<
-            sdbusplus::xyz::openbmc_project::Smbios::server::MDRV2>(bus, path),
+            sdbusplus::server::xyz::openbmc_project::smbios::MDRV2>(bus, path),
         bus(bus), timer(io), smbiosInterface(getObjectServer().add_interface(
                                  smbiosPath, smbiosInterfaceName))
     {
diff --git a/include/pcieslot.hpp b/include/pcieslot.hpp
index d3c9588..f984650 100644
--- a/include/pcieslot.hpp
+++ b/include/pcieslot.hpp
@@ -18,18 +18,18 @@
 {
 
 using PCIeSlot =
-    sdbusplus::xyz::openbmc_project::Inventory::Item::server::PCIeSlot;
-using PCIeGeneration = sdbusplus::xyz::openbmc_project::Inventory::Item::
-    server::PCIeSlot::Generations;
-using PCIeType = sdbusplus::xyz::openbmc_project::Inventory::Item::server::
+    sdbusplus::server::xyz::openbmc_project::inventory::item::PCIeSlot;
+using PCIeGeneration = sdbusplus::server::xyz::openbmc_project::inventory::
+    item::PCIeSlot::Generations;
+using PCIeType = sdbusplus::server::xyz::openbmc_project::inventory::item::
     PCIeSlot::SlotTypes;
 using embedded =
-    sdbusplus::xyz::openbmc_project::Inventory::Connector::server::Embedded;
+    sdbusplus::server::xyz::openbmc_project::inventory::connector::Embedded;
 using location =
-    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::LocationCode;
-using item = sdbusplus::xyz::openbmc_project::Inventory::server::Item;
+    sdbusplus::server::xyz::openbmc_project::inventory::decorator::LocationCode;
+using item = sdbusplus::server::xyz::openbmc_project::inventory::Item;
 using association =
-    sdbusplus::xyz::openbmc_project::Association::server::Definitions;
+    sdbusplus::server::xyz::openbmc_project::association::Definitions;
 
 class Pcie :
     sdbusplus::server::object_t<PCIeSlot, location, embedded, item, association>
diff --git a/include/system.hpp b/include/system.hpp
index 80822e2..992408e 100644
--- a/include/system.hpp
+++ b/include/system.hpp
@@ -28,9 +28,9 @@
 
 class System :
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Common::server::UUID>,
+        sdbusplus::server::xyz::openbmc_project::common::UUID>,
     sdbusplus::server::object_t<
-        sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Revision>
+        sdbusplus::server::xyz::openbmc_project::inventory::decorator::Revision>
 {
   public:
     System() = delete;
@@ -43,11 +43,11 @@
     System(sdbusplus::bus_t& bus, const std::string& objPath,
            uint8_t* smbiosTableStorage) :
         sdbusplus::server::object_t<
-            sdbusplus::xyz::openbmc_project::Common::server::UUID>(
+            sdbusplus::server::xyz::openbmc_project::common::UUID>(
             bus, objPath.c_str()),
         bus(bus),
-        sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                        Decorator::server::Revision>(
+        sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                        inventory::decorator::Revision>(
             bus, objPath.c_str()),
         path(objPath), storage(smbiosTableStorage)
     {
diff --git a/src/cpuinfo_utils.cpp b/src/cpuinfo_utils.cpp
index a96235f..51136bb 100644
--- a/src/cpuinfo_utils.cpp
+++ b/src/cpuinfo_utils.cpp
@@ -28,9 +28,9 @@
 namespace cpu_info
 {
 
-using namespace sdbusplus::xyz::openbmc_project;
-using PowerState = State::server::Host::HostState;
-using OsState = State::OperatingSystem::server::Status::OSStatus;
+using namespace sdbusplus::server::xyz::openbmc_project;
+using PowerState = state::Host::HostState;
+using OsState = state::operating_system::Status::OSStatus;
 
 HostState hostState = HostState::off;
 static PowerState powerState = PowerState::Off;
@@ -86,7 +86,7 @@
 
 void updatePowerState(const std::string& newState)
 {
-    powerState = State::server::Host::convertHostStateFromString(newState);
+    powerState = state::Host::convertHostStateFromString(newState);
     updateHostState();
 }
 
@@ -115,9 +115,8 @@
 
     try
     {
-        osState =
-            State::OperatingSystem::server::Status::convertOSStatusFromString(
-                full_path);
+        osState = state::operating_system::Status::convertOSStatusFromString(
+            full_path);
     }
     catch (const sdbusplus::exception::InvalidEnumString& ex)
     {
@@ -285,7 +284,7 @@
     // Leak the returned match objects. We want them to run forever.
     subscribeToProperty(
         "xyz.openbmc_project.State.Host", "/xyz/openbmc_project/state/host0",
-        State::server::Host::interface, "CurrentHostState", updatePowerState);
+        state::Host::interface, "CurrentHostState", updatePowerState);
     subscribeToProperty("xyz.openbmc_project.Host.Misc.Manager",
                         "/xyz/openbmc_project/misc/platform_state",
                         "xyz.openbmc_project.State.Host.Misc", "CoreBiosDone",
diff --git a/src/dimm.cpp b/src/dimm.cpp
index 6102627..bb68d13 100644
--- a/src/dimm.cpp
+++ b/src/dimm.cpp
@@ -33,10 +33,10 @@
 #endif
 
 using DeviceType =
-    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::DeviceType;
+    sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::DeviceType;
 
 using EccType =
-    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::Ecc;
+    sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::Ecc;
 
 static constexpr uint16_t maxOldDimmSize = 0x7fff;
 void Dimm::memoryInfoUpdate(void)
@@ -142,13 +142,13 @@
 
 EccType Dimm::ecc(EccType value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::ecc(
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::ecc(
         value);
 }
 
 uint16_t Dimm::memoryDataWidth(uint16_t value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memoryDataWidth(value);
 }
 
@@ -172,7 +172,7 @@
 
 size_t Dimm::memorySizeInKB(size_t value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memorySizeInKB(value);
 }
 
@@ -202,7 +202,7 @@
 
 std::string Dimm::memoryDeviceLocator(std::string value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memoryDeviceLocator(value);
 }
 
@@ -221,7 +221,7 @@
 
 DeviceType Dimm::memoryType(DeviceType value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memoryType(value);
 }
 
@@ -241,13 +241,13 @@
 
 std::string Dimm::memoryTypeDetail(std::string value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memoryTypeDetail(value);
 }
 
 uint16_t Dimm::maxMemorySpeedInMhz(uint16_t value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         maxMemorySpeedInMhz(value);
 }
 
@@ -268,13 +268,13 @@
 
 std::string Dimm::manufacturer(std::string value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+    return sdbusplus::server::xyz::openbmc_project::inventory::decorator::
         Asset::manufacturer(value);
 }
 
 bool Dimm::present(bool value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::server::Item::present(
+    return sdbusplus::server::xyz::openbmc_project::inventory::Item::present(
         value);
 }
 
@@ -288,7 +288,7 @@
 
 std::string Dimm::serialNumber(std::string value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+    return sdbusplus::server::xyz::openbmc_project::inventory::decorator::
         Asset::serialNumber(value);
 }
 
@@ -305,31 +305,31 @@
 
 std::string Dimm::partNumber(std::string value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+    return sdbusplus::server::xyz::openbmc_project::inventory::decorator::
         Asset::partNumber(value);
 }
 
 std::string Dimm::locationCode(std::string value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+    return sdbusplus::server::xyz::openbmc_project::inventory::decorator::
         LocationCode::locationCode(value);
 }
 
 uint8_t Dimm::memoryAttributes(uint8_t value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memoryAttributes(value);
 }
 
 uint16_t Dimm::memoryConfiguredSpeedInMhz(uint16_t value)
 {
-    return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
+    return sdbusplus::server::xyz::openbmc_project::inventory::item::Dimm::
         memoryConfiguredSpeedInMhz(value);
 }
 
 bool Dimm::functional(bool value)
 {
-    return sdbusplus::xyz::openbmc_project::State::Decorator::server::
+    return sdbusplus::server::xyz::openbmc_project::state::decorator::
         OperationalStatus::functional(value);
 }
 
diff --git a/src/mdrv2.cpp b/src/mdrv2.cpp
index 6fb5a40..373978a 100644
--- a/src/mdrv2.cpp
+++ b/src/mdrv2.cpp
@@ -387,7 +387,7 @@
     {
         value = smbiosDir.dirEntries;
     }
-    return sdbusplus::xyz::openbmc_project::Smbios::server::MDRV2::
+    return sdbusplus::server::xyz::openbmc_project::smbios::MDRV2::
         directoryEntries(value);
 }
 
diff --git a/src/speed_select.cpp b/src/speed_select.cpp
index 56c0ec8..fb92dd1 100644
--- a/src/speed_select.cpp
+++ b/src/speed_select.cpp
@@ -103,12 +103,12 @@
 }
 
 using BaseCurrentOperatingConfig =
-    sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Control::
-                                    Processor::server::CurrentOperatingConfig>;
+    sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                    control::processor::CurrentOperatingConfig>;
 
 using BaseOperatingConfig =
-    sdbusplus::server::object_t<sdbusplus::xyz::openbmc_project::Inventory::
-                                    Item::Cpu::server::OperatingConfig>;
+    sdbusplus::server::object_t<sdbusplus::server::xyz::openbmc_project::
+                                    inventory::item::cpu::OperatingConfig>;
 
 class OperatingConfig : public BaseOperatingConfig
 {
diff --git a/src/system.cpp b/src/system.cpp
index c5c905e..1ebaf2c 100644
--- a/src/system.cpp
+++ b/src/system.cpp
@@ -61,11 +61,11 @@
         stream << std::setw(2) << static_cast<int>(systemInfo->uuid.node[4]);
         stream << std::setw(2) << static_cast<int>(systemInfo->uuid.node[5]);
 
-        return sdbusplus::xyz::openbmc_project::Common::server::UUID::uuid(
+        return sdbusplus::server::xyz::openbmc_project::common::UUID::uuid(
             stream.str());
     }
 
-    return sdbusplus::xyz::openbmc_project::Common::server::UUID::uuid(
+    return sdbusplus::server::xyz::openbmc_project::common::UUID::uuid(
         "00000000-0000-0000-0000-000000000000");
 }
 
@@ -145,8 +145,8 @@
             smbiosFile.close();
             phosphor::logging::log<phosphor::logging::level::ERR>(
                 "Find non-print char, delete the broken MDRV2 table file!");
-            return sdbusplus::xyz::openbmc_project::Inventory::Decorator::
-                server::Revision::version(result);
+            return sdbusplus::server::xyz::openbmc_project::inventory::
+                decorator::Revision::version(result);
         }
         result = tempS;
 
@@ -155,7 +155,7 @@
     }
     lg2::info("VERSION INFO - BIOS - {VER}", "VER", result);
 
-    return sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
+    return sdbusplus::server::xyz::openbmc_project::inventory::decorator::
         Revision::version(result);
 }
 
