diff --git a/ibm_vpd_utils.cpp b/ibm_vpd_utils.cpp
index 0d49a3f..bf50bd8 100644
--- a/ibm_vpd_utils.cpp
+++ b/ibm_vpd_utils.cpp
@@ -570,5 +570,39 @@
     return kwVal;
 }
 
+string getPrintableValue(const vector<unsigned char>& vec)
+{
+    string str{};
+    bool printableChar = true;
+    for (auto i : vec)
+    {
+        if (!isprint(i))
+        {
+            printableChar = false;
+            break;
+        }
+    }
+
+    if (!printableChar)
+    {
+        stringstream ss;
+        string hexRep = "0x";
+        ss << hexRep;
+        str = ss.str();
+
+        // convert Decimal to Hex
+        for (auto& v : vec)
+        {
+            ss << setfill('0') << setw(2) << hex << (int)v;
+            str = ss.str();
+        }
+    }
+    else
+    {
+        str = string(vec.begin(), vec.end());
+    }
+    return str;
+}
+
 } // namespace vpd
 } // namespace openpower
\ No newline at end of file
diff --git a/ibm_vpd_utils.hpp b/ibm_vpd_utils.hpp
index f067b9b..209d070 100644
--- a/ibm_vpd_utils.hpp
+++ b/ibm_vpd_utils.hpp
@@ -241,5 +241,17 @@
             driverType + "/" + bindOrUnbind);
 }
 
+/**
+ * @brief Get Printable Value
+ *
+ * Checks if the vector value has non printable characters.
+ * Returns hex value if non printable char is found else
+ * returns ascii value.
+ *
+ * @param[in] vector - Reference of the Binary vector
+ * @return printable value - either in hex or in ascii.
+ */
+string getPrintableValue(const vector<unsigned char>& vec);
+
 } // namespace vpd
 } // namespace openpower
\ No newline at end of file
diff --git a/vpd_tool_impl.cpp b/vpd_tool_impl.cpp
index d01a28d..931bba1 100644
--- a/vpd_tool_impl.cpp
+++ b/vpd_tool_impl.cpp
@@ -56,40 +56,6 @@
     }
 }
 
-string VpdTool::getPrintableValue(const vector<unsigned char>& vec)
-{
-    string str{};
-    bool printableChar = true;
-    for (auto i : vec)
-    {
-        if (!isprint(i))
-        {
-            printableChar = false;
-            break;
-        }
-    }
-
-    if (!printableChar)
-    {
-        stringstream ss;
-        string hexRep = "0x";
-        ss << hexRep;
-        str = ss.str();
-
-        // convert Decimal to Hex
-        for (auto& v : vec)
-        {
-            ss << setfill('0') << setw(2) << hex << (int)v;
-            str = ss.str();
-        }
-    }
-    else
-    {
-        str = string(vec.begin(), vec.end());
-    }
-    return str;
-}
-
 void VpdTool::eraseInventoryPath(string& fru)
 {
     // Power supply frupath comes with INVENTORY_PATH appended in prefix.
diff --git a/vpd_tool_impl.hpp b/vpd_tool_impl.hpp
index 0337617..ac0b2f5 100644
--- a/vpd_tool_impl.hpp
+++ b/vpd_tool_impl.hpp
@@ -165,18 +165,6 @@
     void forceReset(const nlohmann::basic_json<>& jsObject);
 
     /**
-     * @brief Get Printable Value
-     *
-     * Checks if the vector value has non printable characters.
-     * Returns hex value if non printable char is found else
-     * returns ascii value.
-     *
-     * @param[in] vector - Reference of the Binary vector
-     * @return printable value - either in hex or in ascii.
-     */
-    std::string getPrintableValue(const std::vector<unsigned char>& vector);
-
-    /**
      * @brief Update Hardware
      * If the given record-keyword pair is present in dbus_properties.json,
      * then will update the given data in both dbus and hardware.
