diff --git a/frup.hpp b/frup.hpp
index 15b5eaf..3f68acd 100644
--- a/frup.hpp
+++ b/frup.hpp
@@ -84,16 +84,25 @@
 };
 
 using DbusProperty = std::string;
-using DbusPropertyVec = std::vector<std::pair<DbusProperty,IPMIFruData>>;
+using DbusPropertyVec = std::vector<std::pair<DbusProperty, IPMIFruData>>;
 
 using DbusInterface = std::string;
-using DbusInterfaceVec = std::vector<std::pair<DbusInterface,DbusPropertyVec>>;
+using DbusInterfaceVec = std::vector<std::pair<DbusInterface, DbusPropertyVec>>;
 
 using FruInstancePath = std::string;
-using FruInstanceVec = std::vector<std::pair<FruInstancePath,DbusInterfaceVec>>;
+
+struct FruInstance
+{
+    uint8_t entityID;
+    uint8_t entityInstance;
+    FruInstancePath path;
+    DbusInterfaceVec interfaces;
+};
+
+using FruInstanceVec = std::vector<FruInstance>;
 
 using FruId = uint32_t;
-using FruMap = std::map<FruId,FruInstanceVec>;
+using FruMap = std::map<FruId, FruInstanceVec>;
 
 /* Parse an IPMI write fru data message into a dictionary containing name value pair of VPD entries.*/
 int parse_fru (const void* msgbuf, sd_bus_message* vpdtbl);
diff --git a/scripts/example.yaml b/scripts/example.yaml
index 69d7ebd..d257d42 100644
--- a/scripts/example.yaml
+++ b/scripts/example.yaml
@@ -7,118 +7,133 @@
 # Format of the YAML:
 # Fruid:
 #   Associated Fru paths
-#     d-bus Interafaces
+#     d-bus Interfaces
 #       d-bus Properties
 #         IPMI Fru mapping
 0:
   /system:
-    xyz.openbmc_project.Inventory.Item:
-      PrettyName:
-        IPMIFruProperty: Product Name
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Decorator.Asset:
-      Manufacturer:
-        IPMIFruProperty: Manufacturer
-        IPMIFruSection: Product
-      PartNumber:
-        IPMIFruProperty: Part Number
-        IPMIFruSection: Product
-      SerialNumber:
-        IPMIFruProperty: Serial Number
-        IPMIFruSection: Product
-      BuildDate:
-        IPMIFruProperty: Mfg Date
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Revision:
-      Version:
-        IPMIFruProperty: Version
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Item.System:
+    entityID: 200
+    entityInstance: 1
+    interfaces:
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Product Name
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Product
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Product
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Product
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Decorator.Revision:
+        Version:
+          IPMIFruProperty: Version
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Item.System:
 1:
   /system/chassis/motherboard/dimm0:
-    xyz.openbmc_project.Inventory.Item:
-      PrettyName:
-        IPMIFruProperty: Product Name
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Decorator.Asset:
-      Manufacturer:
-        IPMIFruProperty: Manufacturer
-        IPMIFruSection: Product
-      BuildDate:
-        IPMIFruProperty: Mfg Date
-        IPMIFruSection: Product
-      SerialNumber:
-        IPMIFruProperty: Serial Number
-        IPMIFruSection: Product
-      PartNumber:
-        IPMIFruProperty: Part Number
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Revision:
-      Version:
-        IPMIFruProperty: Version
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Item.Dimm:
+    entityID: 8
+    entityInstance: 1
+    interfaces:
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Product Name
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Product
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Product
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Product
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Decorator.Revision:
+        Version:
+          IPMIFruProperty: Version
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Item.Dimm:
 2:
   /system/chassis/motherboard/dimm1:
-    xyz.openbmc_project.Inventory.Item:
-      PrettyName:
-        IPMIFruProperty: Product Name
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Decorator.Asset:
-      Manufacturer:
-        IPMIFruProperty: Manufacturer
-        IPMIFruSection: Product
-      BuildDate:
-        IPMIFruProperty: Mfg Date
-        IPMIFruSection: Product
-      SerialNumber:
-        IPMIFruProperty: Serial Number
-        IPMIFruSection: Product
-      PartNumber:
-        IPMIFruProperty: Part Number
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Revision:
-      Version:
-        IPMIFruProperty: Version
-        IPMIFruSection: Product
-    xyz.openbmc_project.Inventory.Item.Dimm:
+    entityID: 8
+    entityInstance: 2
+    interfaces:
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Product Name
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Product
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Product
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Product
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Decorator.Revision:
+        Version:
+          IPMIFruProperty: Version
+          IPMIFruSection: Product
+      xyz.openbmc_project.Inventory.Item.Dimm:
 3:
   /system/chassis/motherboard/cpu0:
-    xyz.openbmc_project.Inventory.Item:
-      PrettyName:
-        IPMIFruProperty: Product Name
-        IPMIFruSection: Board
-    xyz.openbmc_project.Inventory.Decorator.Asset:
-      BuildDate:
-        IPMIFruProperty: Mfg Date
-        IPMIFruSection: Board
-      SerialNumber:
-        IPMIFruProperty: Serial Number
-        IPMIFruSection: Board
-      PartNumber:
-        IPMIFruProperty: Part Number
-        IPMIFruSection: Board
-      Manufacturer:
-        IPMIFruProperty: Manufacturer
-        IPMIFruSection: Board
-    xyz.openbmc_project.Inventory.Item.Cpu:
+    entityID: 3
+    entityInstance: 1
+    interfaces:
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Product Name
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Board
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Board
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Board
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Item.Cpu:
 4:
   /system/chassis/motherboard/cpu1:
-    xyz.openbmc_project.Inventory.Item:
-      PrettyName:
-        IPMIFruProperty: Product Name
-        IPMIFruSection: Board
-    xyz.openbmc_project.Inventory.Decorator.Asset:
-      BuildDate:
-        IPMIFruProperty: Mfg Date
-        IPMIFruSection: Board
-      SerialNumber:
-        IPMIFruProperty: Serial Number
-        IPMIFruSection: Board
-      PartNumber:
-        IPMIFruProperty: Part Number
-        IPMIFruSection: Board
-      Manufacturer:
-        IPMIFruProperty: Manufacturer
-        IPMIFruSection: Board
-    xyz.openbmc_project.Inventory.Item.Cpu:
+    entityID: 3
+    entityInstance: 2
+    interfaces:
+      xyz.openbmc_project.Inventory.Item:
+        PrettyName:
+          IPMIFruProperty: Product Name
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Decorator.Asset:
+        BuildDate:
+          IPMIFruProperty: Mfg Date
+          IPMIFruSection: Board
+        SerialNumber:
+          IPMIFruProperty: Serial Number
+          IPMIFruSection: Board
+        PartNumber:
+          IPMIFruProperty: Part Number
+          IPMIFruSection: Board
+        Manufacturer:
+          IPMIFruProperty: Manufacturer
+          IPMIFruSection: Board
+      xyz.openbmc_project.Inventory.Item.Cpu:
diff --git a/scripts/writefru.mako.cpp b/scripts/writefru.mako.cpp
index 0a0a14f..a3de4b5 100644
--- a/scripts/writefru.mako.cpp
+++ b/scripts/writefru.mako.cpp
@@ -6,17 +6,22 @@
 % for key in fruDict.keys():
    {${key},{
 <%
-    fru = fruDict[key]
+    instanceList = fruDict[key]
 %>
-    % for object,interfaces in fru.items():
-         {"${object}",{
+    % for instancePath,instanceInfo in instanceList.items():
+<%
+        entityID = instanceInfo["entityID"]
+        entityInstance = instanceInfo["entityInstance"]
+        interfaces = instanceInfo["interfaces"]
+%>
+         {${entityID}, ${entityInstance}, "${instancePath}",{
          % for interface,properties in interfaces.items():
              {"${interface}",{
             % if properties:
                 % for dbus_property,property_value in properties.items():
                     {"${dbus_property}",{
                         "${property_value.get("IPMIFruSection", "")}",
-                        "${property_value.get("IPMIFruProperty", "")}", \
+                        "${property_value.get("IPMIFruProperty", "")}",\
 <%
     delimiter = property_value.get("IPMIFruValueDelimiter")
     if not delimiter:
diff --git a/writefrudata.cpp b/writefrudata.cpp
index 97282ea..6e1fbec 100644
--- a/writefrudata.cpp
+++ b/writefrudata.cpp
@@ -353,9 +353,9 @@
     for (auto& instance : instanceList)
     {
         InterfaceMap interfaces;
-        const auto& extrasIter = extras.find(instance.first);
+        const auto& extrasIter = extras.find(instance.path);
 
-        for (auto& interfaceList : instance.second)
+        for (auto& interfaceList : instance.interfaces)
         {
             PropertyMap props;//store all the properties
             for (auto& properties : interfaceList.second)
@@ -388,7 +388,7 @@
         }
 
         // Call the inventory manager
-        sdbusplus::message::object_path path = instance.first;
+        sdbusplus::message::object_path path = instance.path;
         // Check and update extra properties
         if(extras.end() != extrasIter)
         {
