diff --git a/extensions/openpower-pels/user_header.cpp b/extensions/openpower-pels/user_header.cpp
index c52d4b5..9258e78 100644
--- a/extensions/openpower-pels/user_header.cpp
+++ b/extensions/openpower-pels/user_header.cpp
@@ -16,6 +16,7 @@
 #include "user_header.hpp"
 
 #include "pel_types.hpp"
+#include "pel_values.hpp"
 #include "severity.hpp"
 
 #include <iostream>
@@ -26,6 +27,7 @@
 namespace pels
 {
 
+namespace pv = openpower::pels::pel_values;
 using namespace phosphor::logging;
 
 void UserHeader::unflatten(Stream& stream)
@@ -127,30 +129,16 @@
     _valid = (failed) ? false : true;
 }
 
-std::string UserHeader::getValue(const uint8_t field,
-                                 const pel_values::PELValues& values) const
-{
-
-    auto tmp = pel_values::findByValue(field, values);
-    if (tmp != values.end())
-    {
-        return std::get<pel_values::registryNamePos>(*tmp);
-    }
-    else
-    {
-        return "invalid";
-    }
-}
 std::optional<std::string> UserHeader::getJSON() const
 {
     std::string severity;
     std::string subsystem;
     std::string eventScope;
     std::string eventType;
-    severity = getValue(_eventSeverity, pel_values::severityValues);
-    subsystem = getValue(_eventSubsystem, pel_values::subsystemValues);
-    eventScope = getValue(_eventScope, pel_values::eventScopeValues);
-    eventType = getValue(_eventType, pel_values::eventTypeValues);
+    severity = pv::getValue(_eventSeverity, pel_values::severityValues);
+    subsystem = pv::getValue(_eventSubsystem, pel_values::subsystemValues);
+    eventScope = pv::getValue(_eventScope, pel_values::eventScopeValues);
+    eventType = pv::getValue(_eventType, pel_values::eventTypeValues);
     char tmpUhVal[8];
     sprintf(tmpUhVal, "%d", userHeaderVersion);
     std::string uhVerStr(tmpUhVal);
diff --git a/extensions/openpower-pels/user_header.hpp b/extensions/openpower-pels/user_header.hpp
index 6692dd3..14407dc 100644
--- a/extensions/openpower-pels/user_header.hpp
+++ b/extensions/openpower-pels/user_header.hpp
@@ -168,20 +168,10 @@
 
     /**
      * @brief Get section in JSON.
-     * @return std::optional<std::string> - If a section comes with a JSON
-     * repressentation, this would return the string for it.
+     * @return std::optional<std::string> -User header section's JSON
      */
     std::optional<std::string> getJSON() const override;
 
-    /**
-     * @brief Helper function to get values from lookup tables.
-     * @return std::string - the value
-     * @param[in] uint8_t - field to get value for
-     * @param[in] PELValues - lookup table
-     */
-    std::string getValue(const uint8_t field,
-                         const pel_values::PELValues& values) const;
-
   private:
     /**
      * @brief Fills in the object from the stream data
