diff --git a/frup.hpp b/frup.hpp
index ad342fc..09ffc9f 100644
--- a/frup.hpp
+++ b/frup.hpp
@@ -75,12 +75,15 @@
 using IPMIFruInfo = std::array<std::pair<std::string,std::string>,
                            OPENBMC_VPD_KEY_MAX>;
 
-using IPMIFruMetadata = std::string;
-using IPMIFruMetadataValue = std::string;
-using IPMIFruMap = std::map<IPMIFruMetadata,IPMIFruMetadataValue>;
+struct IPMIFruData
+{
+    std::string section;
+    std::string property;
+    std::string delimiter;
+};
 
 using DbusProperty = std::string;
-using DbusPropertyMap = std::map<DbusProperty,IPMIFruMap>;
+using DbusPropertyMap = std::map<DbusProperty,IPMIFruData>;
 
 using DbusInterface = std::string;
 using DbusInterfaceMap = std::map<DbusInterface,DbusPropertyMap>;
diff --git a/scripts/writefru.mako.cpp b/scripts/writefru.mako.cpp
index 6180e13..82941a4 100644
--- a/scripts/writefru.mako.cpp
+++ b/scripts/writefru.mako.cpp
@@ -14,9 +14,16 @@
              {"${interface}",{
             % for dbus_property,property_value in properties.items():
                  {"${dbus_property}",{
-                % for name,value in property_value.items():
-                     {"${name}","${value}"},
-                % endfor
+                     "${property_value.get("IPMIFruSection", "")}",
+                     "${property_value.get("IPMIFruProperty", "")}", \
+<%
+    delimiter = property_value.get("IPMIFruValueDelimiter")
+    if not delimiter:
+        delimiter = ""
+    else:
+        delimiter = '\\' + hex(delimiter)[1:]
+%>
+                     "${delimiter}"
                  }},
             % endfor
              }},
diff --git a/writefrudata.cpp b/writefrudata.cpp
index 27ea6e2..97282ea 100644
--- a/writefrudata.cpp
+++ b/writefrudata.cpp
@@ -360,37 +360,13 @@
             PropertyMap props;//store all the properties
             for (auto& properties : interfaceList.second)
             {
-                std::string section, property, delimiter, value;
-                for (auto& info : properties.second)
-                {
-                    if (info.first == "IPMIFruSection")
-                    {
-                        section = std::move(info.second);
-                    }
-                    if (info.first == "IPMIFruProperty")
-                    {
-                        property = std::move(info.second);
-                    }
-                    if (info.first == "IPMIFruValueDelimiter")
-                    {
-                        //Read the delimeter as ascii value
-                        //convert it into char
-                        if( info.second.length() > 0 )
-                        {
-                            char dlm = ' ';
-                            rc = sscanf(info.second.c_str(),"%hhd",&dlm);
-                            if (rc > 0)
-                            {
-                                delimiter = std::string(1,dlm);
-                            }
-                        }
-                    }
+                std::string value;
+                decltype(auto) pdata = properties.second;
 
-                }
-
-                if (!section.empty() && !property.empty())
+                if (!pdata.section.empty() && !pdata.property.empty())
                 {
-                    value = getFRUValue(section, property, delimiter, fruData);
+                    value = getFRUValue(pdata.section, pdata.property,
+                                        pdata.delimiter, fruData);
                 }
                 props.emplace(std::move(properties.first), std::move(value));
             }
