diff --git a/src/main.cpp b/src/main.cpp
index ca7fbaa..a99c603 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -14,14 +14,12 @@
 // limitations under the License.
 */
 
+#include "button_factory.hpp"
 #include "gpio.hpp"
-#include "id_button.hpp"
-#include "power_button.hpp"
-#include "reset_button.hpp"
 
 #include <fstream>
 #include <nlohmann/json.hpp>
-
+#include <phosphor-logging/elog-errors.hpp>
 static constexpr auto gpioDefFile = "/etc/default/obmc/gpio/gpio_defs.json";
 
 int main(int argc, char* argv[])
@@ -29,7 +27,7 @@
     int ret = 0;
 
     phosphor::logging::log<phosphor::logging::level::INFO>(
-        "Start power button service...");
+        "Start Phosphor buttons service...");
 
     sd_event* event = nullptr;
     ret = sd_event_default(&event);
@@ -47,6 +45,8 @@
         bus, "/xyz/openbmc_project/Chassis/Buttons"};
 
     bus.request_name("xyz.openbmc_project.Chassis.Buttons");
+    //
+    std::vector<std::unique_ptr<ButtonIface>> buttonInterfaces;
 
     std::ifstream gpios{gpioDefFile};
     auto json = nlohmann::json::parse(gpios, nullptr, true);
@@ -54,9 +54,6 @@
 
     // load gpio config from gpio defs json file and create button interface
     // objects based on the button form factor type
-    std::unique_ptr<PowerButton> pb;
-    std::unique_ptr<ResetButton> rb;
-    std::unique_ptr<IDButton> ib;
 
     for (auto groupGpioConfig : gpioDefs)
     {
@@ -72,23 +69,9 @@
             buttonCfg.formFactorName = formFactorName;
             buttonCfg.gpios.push_back(gpioCfg);
         }
-        if (buttonCfg.formFactorName == PowerButton::getGpioName())
-        {
-            pb = std::make_unique<PowerButton>(bus, POWER_DBUS_OBJECT_NAME,
-                                               eventP, buttonCfg);
-        }
 
-        if (buttonCfg.formFactorName == ResetButton::getGpioName())
-        {
-            rb = std::make_unique<ResetButton>(bus, RESET_DBUS_OBJECT_NAME,
-                                               eventP, buttonCfg);
-        }
-
-        if (buttonCfg.formFactorName == IDButton::getGpioName())
-        {
-            ib = std::make_unique<IDButton>(bus, ID_DBUS_OBJECT_NAME, eventP,
-                                            buttonCfg);
-        }
+        buttonInterfaces.emplace_back(ButtonFactory::instance().createInstance(
+            formFactorName, bus, eventP, buttonCfg));
     }
 
     try
