diff --git a/lpcsnoop/snoop.hpp b/lpcsnoop/snoop.hpp
index 2c89127..68d51b4 100644
--- a/lpcsnoop/snoop.hpp
+++ b/lpcsnoop/snoop.hpp
@@ -13,6 +13,9 @@
 using ServerObject = typename sdbusplus::server::object::object<T...>;
 using PostInterface = sdbusplus::xyz::openbmc_project::State::Boot::server::Raw;
 using PostObject = ServerObject<PostInterface>;
+using primary_post_code_t = uint64_t;
+using secondary_post_code_t = std::vector<uint8_t>;
+using postcode_t = std::tuple<primary_post_code_t, secondary_post_code_t>;
 
 class PostReporter : public PostObject
 {
diff --git a/lpcsnoop/snoop_listen.hpp b/lpcsnoop/snoop_listen.hpp
index 1ff189d..475028f 100644
--- a/lpcsnoop/snoop_listen.hpp
+++ b/lpcsnoop/snoop_listen.hpp
@@ -36,7 +36,7 @@
 class SnoopListen
 {
     using message_handler_t = std::function<void(sdbusplus::message::message&)>;
-    using postcode_handler_t = std::function<void(uint64_t)>;
+    using postcode_handler_t = std::function<void(postcode_t)>;
 
   public:
     SnoopListen(sdbusplus::bus::bus& busIn, sd_bus_message_handler_t handler) :
@@ -74,7 +74,7 @@
                                       sdbusplus::message::message& m)
     {
         std::string messageBusName;
-        std::map<std::string, std::variant<uint64_t>> messageData;
+        std::map<std::string, std::variant<postcode_t>> messageData;
         constexpr char propertyKey[] = "Value";
 
         m.read(messageBusName, messageData);
@@ -82,7 +82,7 @@
         if (messageBusName == SNOOP_BUSNAME &&
             messageData.find(propertyKey) != messageData.end())
         {
-            handler(get<uint64_t>(messageData[propertyKey]));
+            handler(get<postcode_t>(messageData[propertyKey]));
         }
     }
 };
