diff --git a/include/dimm.hpp b/include/dimm.hpp
index 79da4cf..4230ae4 100644
--- a/include/dimm.hpp
+++ b/include/dimm.hpp
@@ -66,7 +66,7 @@
     void memoryInfoUpdate(void);
 
     uint16_t memoryDataWidth(uint16_t value) override;
-    uint32_t memorySizeInKB(uint32_t value) override;
+    size_t memorySizeInKB(size_t value) override;
     std::string memoryDeviceLocator(std::string value) override;
     DeviceType memoryType(DeviceType value) override;
     std::string memoryTypeDetail(std::string value) override;
@@ -84,7 +84,7 @@
     uint8_t* storage;
 
     void dimmSize(const uint16_t size);
-    void dimmSizeExt(const uint32_t size);
+    void dimmSizeExt(const size_t size);
     void dimmDeviceLocator(const uint8_t positionNum, const uint8_t structLen,
                            uint8_t* dataIn);
     void dimmType(const uint8_t type);
@@ -119,7 +119,7 @@
     uint8_t assetTag;
     uint8_t partNum;
     uint8_t attributes;
-    uint32_t extendedSize;
+    size_t extendedSize;
     uint16_t confClockSpeed;
     uint16_t minimumVoltage;
     uint16_t maximumVoltage;
diff --git a/include/system.hpp b/include/system.hpp
index cf69cb7..79f4eab 100644
--- a/include/system.hpp
+++ b/include/system.hpp
@@ -51,11 +51,11 @@
         path(objPath), storage(smbiosTableStorage)
     {
         std::string input = "0";
-        uUID(input);
+        uuid(input);
         version("0.00");
     }
 
-    std::string uUID(std::string value) override;
+    std::string uuid(std::string value) override;
 
     std::string version(std::string value) override;
 
@@ -102,7 +102,7 @@
         uint8_t productName;
         uint8_t version;
         uint8_t serialNum;
-        struct UUID uUID;
+        struct UUID uuid;
         uint8_t wakeupType;
         uint8_t skuNum;
         uint8_t family;
diff --git a/src/dimm.cpp b/src/dimm.cpp
index a1763dc..e2cfbc6 100644
--- a/src/dimm.cpp
+++ b/src/dimm.cpp
@@ -87,7 +87,7 @@
 static constexpr uint16_t dimmSizeUnit = 1024;
 void Dimm::dimmSize(const uint16_t size)
 {
-    uint32_t result = size & maxOldDimmSize;
+    size_t result = size & maxOldDimmSize;
     if (0 == (size & baseNewVersionDimmSize))
     {
         result = result * dimmSizeUnit;
@@ -95,13 +95,13 @@
     memorySizeInKB(result);
 }
 
-void Dimm::dimmSizeExt(uint32_t size)
+void Dimm::dimmSizeExt(size_t size)
 {
     size = size * dimmSizeUnit;
     memorySizeInKB(size);
 }
 
-uint32_t Dimm::memorySizeInKB(uint32_t value)
+size_t Dimm::memorySizeInKB(size_t value)
 {
     return sdbusplus::xyz::openbmc_project::Inventory::Item::server::Dimm::
         memorySizeInKB(value);
diff --git a/src/system.cpp b/src/system.cpp
index 2f6e3e4..81c6ef5 100644
--- a/src/system.cpp
+++ b/src/system.cpp
@@ -27,7 +27,7 @@
 namespace smbios
 {
 
-std::string System::uUID(std::string value)
+std::string System::uuid(std::string value)
 {
     uint8_t* dataIn = storage;
     dataIn = getSMBIOSTypePtr(dataIn, systemType);
@@ -36,29 +36,29 @@
         auto systemInfo = reinterpret_cast<struct SystemInfo*>(dataIn);
         std::stringstream stream;
         stream << std::setfill('0') << std::hex;
-        stream << std::setw(8) << systemInfo->uUID.timeLow;
+        stream << std::setw(8) << systemInfo->uuid.timeLow;
         stream << "-";
-        stream << std::setw(4) << systemInfo->uUID.timeMid;
+        stream << std::setw(4) << systemInfo->uuid.timeMid;
         stream << "-";
-        stream << std::setw(4) << systemInfo->uUID.timeHiAndVer;
+        stream << std::setw(4) << systemInfo->uuid.timeHiAndVer;
         stream << "-";
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.clockSeqHi);
+        stream << std::setw(2) << static_cast<int>(systemInfo->uuid.clockSeqHi);
         stream << std::setw(2)
-               << static_cast<int>(systemInfo->uUID.clockSeqLow);
+               << static_cast<int>(systemInfo->uuid.clockSeqLow);
         stream << "-";
-        static_assert(sizeof(systemInfo->uUID.node) == 6);
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.node[0]);
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.node[1]);
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.node[2]);
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.node[3]);
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.node[4]);
-        stream << std::setw(2) << static_cast<int>(systemInfo->uUID.node[5]);
+        static_assert(sizeof(systemInfo->uuid.node) == 6);
+        stream << std::setw(2) << static_cast<int>(systemInfo->uuid.node[0]);
+        stream << std::setw(2) << static_cast<int>(systemInfo->uuid.node[1]);
+        stream << std::setw(2) << static_cast<int>(systemInfo->uuid.node[2]);
+        stream << std::setw(2) << static_cast<int>(systemInfo->uuid.node[3]);
+        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::xyz::openbmc_project::Common::server::UUID::uuid(
             stream.str());
     }
 
-    return sdbusplus::xyz::openbmc_project::Common::server::UUID::uUID(
+    return sdbusplus::xyz::openbmc_project::Common::server::UUID::uuid(
         "00000000-0000-0000-0000-000000000000");
 }
 
