diff --git a/vpd-parser/memory_vpd_parser.hpp b/vpd-parser/memory_vpd_parser.hpp
index 21a45b9..36e84e2 100644
--- a/vpd-parser/memory_vpd_parser.hpp
+++ b/vpd-parser/memory_vpd_parser.hpp
@@ -57,12 +57,56 @@
     kwdVpdMap readKeywords(Binary::const_iterator iterator);
 
     /**
-     * @brief This function calculates dimm size from DIMM VPD
+     * @brief This function calculates dimm size from DDIMM VPD
      *
      * @param[in] iterator - iterator to buffer containing VPD
      * @return calculated data or 0 in case of any error.
      */
-    auto getDimmSize(Binary::const_iterator iterator);
+    size_t getDDimmSize(Binary::const_iterator iterator);
+
+    /**
+     * @brief This function calculates DDR4 based DDIMM's capacity
+     *
+     * @param[in] iterator - iterator to buffer containing VPD
+     * @return calculated data or 0 in case of any error.
+     */
+    auto getDdr4BasedDDimmSize(Binary::const_iterator iterator);
+
+    /**
+     * @brief This function calculates DDR5 based DDIMM's capacity
+     *
+     * @param[in] iterator - iterator to buffer containing VPD
+     * @return calculated data or 0 in case of any error.
+     */
+    auto getDdr5BasedDDimmSize(Binary::const_iterator iterator);
+
+    /**
+     * @brief This function calculates DDR5 based die per package
+     *
+     * @param[in] l_ByteValue - the bit value for calculation
+     * @return die per package value.
+     */
+    uint8_t getDDR5DiePerPackage(uint8_t l_ByteValue);
+
+    /**
+     * @brief This function calculates DDR5 based density per die
+     *
+     * @param[in] l_ByteValue - the bit value for calculation
+     * @return density per die.
+     */
+    uint8_t getDDR5DensityPerDie(uint8_t l_ByteValue);
+
+    /**
+     * @brief This function checks the validity of the bits
+     *
+     * @param[in] l_ByteValue - the byte value with relevant bits
+     * @param[in] shift - shifter value to selects needed bits
+     * @param[in] minValue - minimum value it can contain
+     * @param[in] maxValue - maximum value it can contain
+     * @return true if valid else false.
+     */
+    bool checkValidValue(uint8_t l_ByteValue, uint8_t shift, uint8_t minValue,
+                         uint8_t maxValue);
 
     // vdp file to be parsed
     const Binary& memVpd;
