diff --git a/src/entity_manager/dbus_interface.cpp b/src/entity_manager/dbus_interface.cpp
index 72f67f4..45e4f6d 100644
--- a/src/entity_manager/dbus_interface.cpp
+++ b/src/entity_manager/dbus_interface.cpp
@@ -194,63 +194,26 @@
             }
             case (nlohmann::json::value_t::number_integer):
             {
-                if (array)
-                {
-                    addArrayToDbus<int64_t>(key, value, iface.get(), permission,
-                                            systemConfiguration, path);
-                }
-                else
-                {
-                    addProperty(key, value.get<int64_t>(), iface.get(),
-                                systemConfiguration, path,
-                                sdbusplus::asio::PropertyPermission::readOnly);
-                }
+                addValueToDBus<int64_t>(key, value, *iface, permission,
+                                        systemConfiguration, path);
                 break;
             }
             case (nlohmann::json::value_t::number_unsigned):
             {
-                if (array)
-                {
-                    addArrayToDbus<uint64_t>(key, value, iface.get(),
-                                             permission, systemConfiguration,
-                                             path);
-                }
-                else
-                {
-                    addProperty(key, value.get<uint64_t>(), iface.get(),
-                                systemConfiguration, path,
-                                sdbusplus::asio::PropertyPermission::readOnly);
-                }
+                addValueToDBus<uint64_t>(key, value, *iface, permission,
+                                         systemConfiguration, path);
                 break;
             }
             case (nlohmann::json::value_t::number_float):
             {
-                if (array)
-                {
-                    addArrayToDbus<double>(key, value, iface.get(), permission,
-                                           systemConfiguration, path);
-                }
-
-                else
-                {
-                    addProperty(key, value.get<double>(), iface.get(),
-                                systemConfiguration, path, permission);
-                }
+                addValueToDBus<double>(key, value, *iface, permission,
+                                       systemConfiguration, path);
                 break;
             }
             case (nlohmann::json::value_t::string):
             {
-                if (array)
-                {
-                    addArrayToDbus<std::string>(key, value, iface.get(),
-                                                permission, systemConfiguration,
-                                                path);
-                }
-                else
-                {
-                    addProperty(key, value.get<std::string>(), iface.get(),
-                                systemConfiguration, path, permission);
-                }
+                addValueToDBus<std::string>(key, value, *iface, permission,
+                                            systemConfiguration, path);
                 break;
             }
             default:
