diff --git a/extensions/openpower-pels/additional_data.hpp b/extensions/openpower-pels/additional_data.hpp
index f133e0f..ca4a47d 100644
--- a/extensions/openpower-pels/additional_data.hpp
+++ b/extensions/openpower-pels/additional_data.hpp
@@ -37,7 +37,7 @@
      * @param[in] ad - the AdditionalData property vector with
      *                 entries of "KEY=VALUE"
      */
-    AdditionalData(const std::vector<std::string>& ad)
+    explicit AdditionalData(const std::vector<std::string>& ad)
     {
         for (auto& item : ad)
         {
@@ -101,6 +101,27 @@
         return j;
     }
 
+    /**
+     * @brief Returns the underlying map of data
+     *
+     * @return const std::map<std::string, std::string>& - The data
+     */
+    const std::map<std::string, std::string>& getData() const
+    {
+        return _data;
+    }
+
+    /**
+     * @brief Adds a key/value pair to the object
+     *
+     * @param[in] key - The key
+     * @param[in] value - The value
+     */
+    void add(const std::string& key, const std::string& value)
+    {
+        _data.emplace(key, value);
+    }
+
   private:
     /**
      * @brief a map of keys to values
