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:
