diff --git a/extensions/openpower-pels/callouts.cpp b/extensions/openpower-pels/callouts.cpp
index 17f5bdd..2440621 100644
--- a/extensions/openpower-pels/callouts.cpp
+++ b/extensions/openpower-pels/callouts.cpp
@@ -15,6 +15,8 @@
  */
 #include "callouts.hpp"
 
+#include <phosphor-logging/log.hpp>
+
 namespace openpower
 {
 namespace pels
@@ -46,6 +48,20 @@
     }
 }
 
+void Callouts::addCallout(std::unique_ptr<Callout> callout)
+{
+    if (_callouts.size() < maxNumberOfCallouts)
+    {
+        _callouts.push_back(std::move(callout));
+
+        _subsectionWordLength += _callouts.back()->flattenedSize() / 4;
+    }
+    else
+    {
+        using namespace phosphor::logging;
+        log<level::INFO>("Dropping PEL callout because at max");
+    }
+}
 } // namespace src
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/callouts.hpp b/extensions/openpower-pels/callouts.hpp
index 9226a1b..4a05306 100644
--- a/extensions/openpower-pels/callouts.hpp
+++ b/extensions/openpower-pels/callouts.hpp
@@ -10,6 +10,9 @@
 namespace src
 {
 
+constexpr uint8_t calloutsSubsectionID = 0xC0;
+constexpr size_t maxNumberOfCallouts = 10;
+
 /**
  * @class Callouts
  *
@@ -23,7 +26,6 @@
 class Callouts
 {
   public:
-    Callouts() = default;
     ~Callouts() = default;
     Callouts(const Callouts&) = delete;
     Callouts& operator=(const Callouts&) = delete;
@@ -33,6 +35,17 @@
     /**
      * @brief Constructor
      *
+     * Creates the object with no callouts.
+     */
+    Callouts() :
+        _subsectionID(calloutsSubsectionID), _subsectionFlags(0),
+        _subsectionWordLength(1)
+    {
+    }
+
+    /**
+     * @brief Constructor
+     *
      * Fills in this class's data fields from the stream.
      *
      * @param[in] pel - the PEL data stream
@@ -66,6 +79,13 @@
         return _callouts;
     }
 
+    /**
+     * @brief Adds a callout
+     *
+     * @param[in] callout - The callout to add
+     */
+    void addCallout(std::unique_ptr<Callout> callout);
+
   private:
     /**
      * @brief The ID of this subsection, which is 0xC0.
