diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644
index 0000000..b0c8d84
--- /dev/null
+++ b/src/main.cpp
@@ -0,0 +1,54 @@
+/*
+// Copyright (c) 2020 Intel Corporation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+*/
+
+#include "manager.hpp"
+#include "password.hpp"
+
+#include <boost/asio.hpp>
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/lg2.hpp>
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+int main()
+{
+    boost::asio::io_service io;
+    auto systemBus = std::make_shared<sdbusplus::asio::connection>(io);
+
+    systemBus->request_name(bios_config::service);
+    sdbusplus::asio::object_server objectServer(systemBus);
+
+    /**
+     * Manager class is responsible handling methods and signals under
+     * the following object path and interface.
+     *
+     * Object path : /xyz/openbmc_project/bios_config/manager
+     * Interface : xyz.openbmc_project.BIOSConfig.Manager
+     */
+    bios_config::Manager manager(objectServer, systemBus);
+
+    /**
+     * Password class is responsible handling methods and signals under
+     * the following object path and interface.
+     *
+     * Object path : /xyz/openbmc_project/bios_config/password
+     * Interface : xyz.openbmc_project.BIOSConfig.Password
+     */
+    bios_config_pwd::Password password(objectServer, systemBus);
+
+    io.run();
+    return 0;
+}
diff --git a/src/manager.cpp b/src/manager.cpp
index c2ea188..fa619a8 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -323,16 +323,3 @@
 }
 
 } // namespace bios_config
-
-int main()
-{
-    boost::asio::io_service io;
-    auto systemBus = std::make_shared<sdbusplus::asio::connection>(io);
-
-    systemBus->request_name(bios_config::service);
-    sdbusplus::asio::object_server objectServer(systemBus);
-    bios_config::Manager manager(objectServer, systemBus);
-
-    io.run();
-    return 0;
-}
diff --git a/src/password.cpp b/src/password.cpp
index f3cb321..d13ed93 100644
--- a/src/password.cpp
+++ b/src/password.cpp
@@ -238,16 +238,3 @@
 }
 
 } // namespace bios_config_pwd
-
-int main()
-{
-    boost::asio::io_service io;
-    auto systemBus = std::make_shared<sdbusplus::asio::connection>(io);
-
-    systemBus->request_name(bios_config_pwd::servicePwd);
-    sdbusplus::asio::object_server objectServer(systemBus);
-    bios_config_pwd::Password password(objectServer, systemBus);
-
-    io.run();
-    return 0;
-}
