diff --git a/CMakeLists.txt b/CMakeLists.txt
index cb69d6d..3503c7f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,7 +31,8 @@
 include_directories (${DBUSINTERFACE_INCLUDE_DIRS})
 link_directories (${DBUSINTERFACE_LIBRARY_DIRS})
 
-set (SRC_FILES src/mdrv2.cpp src/mdrv2_main.cpp)
+set (SRC_FILES src/mdrv2.cpp src/mdrv2_main.cpp src/cpu.cpp src/dimm.cpp
+     src/system.cpp)
 
 include_directories (${CMAKE_CURRENT_BINARY_DIR})
 
diff --git a/include/cpu.hpp b/include/cpu.hpp
index 78c4c9c..22b6c08 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -15,7 +15,7 @@
 */
 
 #pragma once
-#include "smbios_mdrv2.hpp"
+#include "smbios.hpp"
 
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/Cpu/server.hpp>
@@ -29,13 +29,13 @@
 {
 
 // Definition follow smbios spec DSP0134 3.0.0
-static const std::map<uint8_t, const char *> processorTypeTable = {
+static const std::map<uint8_t, const char*> processorTypeTable = {
     {0x1, "Other"},          {0x2, "Unknown"},       {0x3, "Central Processor"},
     {0x4, "Math Processor"}, {0x5, "DSP Processor"}, {0x6, "Video Processor"},
 };
 
 // Definition follow smbios spec DSP0134 3.0.0
-static const std::map<uint8_t, const char *> familyTable = {
+static const std::map<uint8_t, const char*> familyTable = {
     {0x1, "Other"},
     {0x2, "Unknown"},
     {0x10, "Pentium II Xeon processor"},
@@ -102,14 +102,14 @@
 {
   public:
     Cpu() = delete;
-    Cpu(const Cpu &) = delete;
-    Cpu &operator=(const Cpu &) = delete;
-    Cpu(Cpu &&) = delete;
-    Cpu &operator=(Cpu &&) = delete;
+    Cpu(const Cpu&) = delete;
+    Cpu& operator=(const Cpu&) = delete;
+    Cpu(Cpu&&) = delete;
+    Cpu& operator=(Cpu&&) = delete;
     ~Cpu() = default;
 
-    Cpu(sdbusplus::bus::bus &bus, const std::string &objPath,
-        const uint8_t &cpuId, uint8_t *smbiosTableStorage) :
+    Cpu(sdbusplus::bus::bus& bus, const std::string& objPath,
+        const uint8_t& cpuId, uint8_t* smbiosTableStorage) :
         sdbusplus::server::object::object<
             sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu>(
             bus, objPath.c_str()),
@@ -145,7 +145,7 @@
   private:
     uint8_t cpuNum;
 
-    uint8_t *storage;
+    uint8_t* storage;
 
     struct ProcessorInfo
     {
@@ -181,13 +181,13 @@
     } __attribute__((packed));
 
     void cpuSocket(const uint8_t positionNum, const uint8_t structLen,
-                   uint8_t *dataIn);
+                   uint8_t* dataIn);
     void cpuType(const uint8_t value);
     void cpuFamily(const uint8_t value);
     void cpuManufacturer(const uint8_t positionNum, const uint8_t structLen,
-                         uint8_t *dataIn);
+                         uint8_t* dataIn);
     void cpuVersion(const uint8_t positionNum, const uint8_t structLen,
-                    uint8_t *dataIn);
+                    uint8_t* dataIn);
     void cpuCharacteristics(const uint16_t value);
     void cpuStatus(const uint8_t value);
 };
diff --git a/include/mdrv2.hpp b/include/mdrv2.hpp
index 772711d..48df53e 100644
--- a/include/mdrv2.hpp
+++ b/include/mdrv2.hpp
@@ -16,6 +16,9 @@
 
 #pragma once
 #include "cpu.hpp"
+#include "dimm.hpp"
+#include "smbios.hpp"
+#include "system.hpp"
 
 #include <sys/stat.h>
 #include <sys/types.h>
diff --git a/include/smbios.hpp b/include/smbios.hpp
index 2e02d82..e6dc743 100644
--- a/include/smbios.hpp
+++ b/include/smbios.hpp
@@ -33,6 +33,15 @@
 static constexpr const char* smbiosPath = "/var/lib/smbios";
 static constexpr uint16_t mdrSMBIOSSize = 32 * 1024;
 
+static constexpr const char* cpuPath =
+    "/xyz/openbmc_project/inventory/system/chassis/motherboard/cpu";
+
+static constexpr const char* dimmPath =
+    "/xyz/openbmc_project/inventory/system/chassis/motherboard/dimm";
+
+static constexpr const char* systemPath =
+    "/xyz/openbmc_project/inventory/system/chassis/motherboard/bios";
+
 enum class DirDataRequestEnum
 {
     dirDataNotRequested = 0x00,
diff --git a/include/system.hpp b/include/system.hpp
index 6d99599..ea1eccf 100644
--- a/include/system.hpp
+++ b/include/system.hpp
@@ -35,13 +35,13 @@
   public:
     System() = delete;
     ~System() = default;
-    System(const System &) = delete;
-    System &operator=(const System &) = delete;
-    System(System &&) = default;
-    System &operator=(System &&) = default;
+    System(const System&) = delete;
+    System& operator=(const System&) = delete;
+    System(System&&) = default;
+    System& operator=(System&&) = default;
 
-    System(sdbusplus::bus::bus &bus, const std::string &objPath,
-           uint8_t *smbiosTableStorage) :
+    System(sdbusplus::bus::bus& bus, const std::string& objPath,
+           uint8_t* smbiosTableStorage) :
         sdbusplus::server::object::object<
             sdbusplus::xyz::openbmc_project::Common::server::UUID>(
             bus, objPath.c_str()),
@@ -63,7 +63,7 @@
     /** @brief Path of the group instance */
     std::string path;
 
-    uint8_t *storage;
+    uint8_t* storage;
 
     struct BIOSInfo
     {
diff --git a/src/cpu.cpp b/src/cpu.cpp
index f7681c9..ffef3cf 100644
--- a/src/cpu.cpp
+++ b/src/cpu.cpp
@@ -25,7 +25,7 @@
 {
 
 void Cpu::cpuSocket(const uint8_t positionNum, const uint8_t structLen,
-                    uint8_t *dataIn)
+                    uint8_t* dataIn)
 {
     std::string result = positionToString(positionNum, structLen, dataIn);
 
@@ -40,7 +40,7 @@
 
 void Cpu::cpuType(const uint8_t value)
 {
-    std::map<uint8_t, const char *>::const_iterator it =
+    std::map<uint8_t, const char*>::const_iterator it =
         processorTypeTable.find(value);
     if (it == processorTypeTable.end())
     {
@@ -60,8 +60,7 @@
 
 void Cpu::cpuFamily(const uint8_t value)
 {
-    std::map<uint8_t, const char *>::const_iterator it =
-        familyTable.find(value);
+    std::map<uint8_t, const char*>::const_iterator it = familyTable.find(value);
     if (it == familyTable.end())
     {
         processorFamily("Unknown Processor Family");
@@ -79,7 +78,7 @@
 }
 
 void Cpu::cpuManufacturer(const uint8_t positionNum, const uint8_t structLen,
-                          uint8_t *dataIn)
+                          uint8_t* dataIn)
 {
     std::string result = positionToString(positionNum, structLen, dataIn);
 
@@ -99,7 +98,7 @@
 }
 
 void Cpu::cpuVersion(const uint8_t positionNum, const uint8_t structLen,
-                     uint8_t *dataIn)
+                     uint8_t* dataIn)
 {
     std::string result;
 
@@ -189,7 +188,7 @@
 static constexpr uint8_t maxOldVersionCount = 0xff;
 void Cpu::processorInfoUpdate(void)
 {
-    uint8_t *dataIn = storage;
+    uint8_t* dataIn = storage;
 
     dataIn = getSMBIOSTypePtr(dataIn, processorsType);
     if (dataIn == nullptr)
@@ -211,7 +210,7 @@
         }
     }
 
-    auto cpuInfo = reinterpret_cast<struct ProcessorInfo *>(dataIn);
+    auto cpuInfo = reinterpret_cast<struct ProcessorInfo*>(dataIn);
 
     cpuSocket(cpuInfo->socketDesignation, cpuInfo->length,
               dataIn);               // offset 4h
diff --git a/src/dimm.cpp b/src/dimm.cpp
index db4170a..71123d2 100644
--- a/src/dimm.cpp
+++ b/src/dimm.cpp
@@ -29,7 +29,7 @@
 static constexpr uint16_t maxOldDimmSize = 0x7fff;
 void Dimm::memoryInfoUpdate(void)
 {
-    uint8_t *dataIn = storage;
+    uint8_t* dataIn = storage;
 
     dataIn = getSMBIOSTypePtr(dataIn, memoryDeviceType);
 
@@ -51,7 +51,7 @@
         }
     }
 
-    auto memoryInfo = reinterpret_cast<struct MemoryInfo *>(dataIn);
+    auto memoryInfo = reinterpret_cast<struct MemoryInfo*>(dataIn);
 
     memoryDataWidth(memoryInfo->dataWidth);
 
@@ -108,7 +108,7 @@
 }
 
 void Dimm::dimmDeviceLocator(const uint8_t positionNum, const uint8_t structLen,
-                             uint8_t *dataIn)
+                             uint8_t* dataIn)
 {
     std::string result = positionToString(positionNum, structLen, dataIn);
 
@@ -167,7 +167,7 @@
 }
 
 void Dimm::dimmManufacturer(const uint8_t positionNum, const uint8_t structLen,
-                            uint8_t *dataIn)
+                            uint8_t* dataIn)
 {
     std::string result = positionToString(positionNum, structLen, dataIn);
 
@@ -181,7 +181,7 @@
 }
 
 void Dimm::dimmSerialNum(const uint8_t positionNum, const uint8_t structLen,
-                         uint8_t *dataIn)
+                         uint8_t* dataIn)
 {
     std::string result = positionToString(positionNum, structLen, dataIn);
 
@@ -195,7 +195,7 @@
 }
 
 void Dimm::dimmPartNum(const uint8_t positionNum, const uint8_t structLen,
-                       uint8_t *dataIn)
+                       uint8_t* dataIn)
 {
     std::string result = positionToString(positionNum, structLen, dataIn);
 
diff --git a/src/system.cpp b/src/system.cpp
index 8cdcbe3..9e4e263 100644
--- a/src/system.cpp
+++ b/src/system.cpp
@@ -28,11 +28,11 @@
 
 std::string System::uUID(std::string value)
 {
-    uint8_t *dataIn = storage;
+    uint8_t* dataIn = storage;
     dataIn = getSMBIOSTypePtr(dataIn, systemType);
     if (dataIn != nullptr)
     {
-        auto systemInfo = reinterpret_cast<struct SystemInfo *>(dataIn);
+        auto systemInfo = reinterpret_cast<struct SystemInfo*>(dataIn);
         std::stringstream stream;
         stream << std::setfill('0') << std::hex;
         stream << std::setw(8) << systemInfo->uUID.timeLow;
@@ -64,11 +64,11 @@
 std::string System::version(std::string value)
 {
     std::string result = "No BIOS Version";
-    uint8_t *dataIn = storage;
+    uint8_t* dataIn = storage;
     dataIn = getSMBIOSTypePtr(dataIn, biosType);
     if (dataIn != nullptr)
     {
-        auto biosInfo = reinterpret_cast<struct BIOSInfo *>(dataIn);
+        auto biosInfo = reinterpret_cast<struct BIOSInfo*>(dataIn);
         uint8_t biosVerByte = biosInfo->biosVersion;
         std::string tempS =
             positionToString(biosInfo->biosVersion, biosInfo->length, dataIn);
