diff --git a/bmc_state_manager_main.cpp b/bmc_state_manager_main.cpp
index d11d952..c03eeac 100644
--- a/bmc_state_manager_main.cpp
+++ b/bmc_state_manager_main.cpp
@@ -2,7 +2,7 @@
 #include "config.h"
 #include "bmc_state_manager.hpp"
 
-int main(int argc, char**)
+int main()
 {
     auto bus = sdbusplus::bus::new_default();
 
diff --git a/chassis_state_manager.hpp b/chassis_state_manager.hpp
index 4780e0f..d1943dc 100644
--- a/chassis_state_manager.hpp
+++ b/chassis_state_manager.hpp
@@ -40,13 +40,10 @@
      *       determineInitialState() and set our properties
      *
      * @param[in] bus       - The Dbus bus object
-     * @param[in] instance  - The instance of this object
      * @param[in] objPath   - The Dbus object path
      */
-    Chassis(sdbusplus::bus::bus& bus, const char* busName,
-            const char* objPath) :
-        ChassisInherit(bus, objPath, true),
-        bus(bus),
+    Chassis(sdbusplus::bus::bus& bus, const char* objPath) :
+        ChassisInherit(bus, objPath, true), bus(bus),
         systemdSignals(
             bus,
             sdbusRule::type::signal() + sdbusRule::member("JobRemoved") +
diff --git a/chassis_state_manager_main.cpp b/chassis_state_manager_main.cpp
index 1870890..30112a4 100644
--- a/chassis_state_manager_main.cpp
+++ b/chassis_state_manager_main.cpp
@@ -5,7 +5,7 @@
 #include "config.h"
 #include "chassis_state_manager.hpp"
 
-int main(int argc, char *argv[])
+int main()
 {
     auto bus = sdbusplus::bus::new_default();
 
@@ -15,8 +15,7 @@
     // Add sdbusplus ObjectManager.
     sdbusplus::server::manager::manager objManager(bus, objPathInst.c_str());
 
-    phosphor::state::manager::Chassis manager(bus, CHASSIS_BUSNAME,
-                                              objPathInst.c_str());
+    phosphor::state::manager::Chassis manager(bus, objPathInst.c_str());
 
     bus.request_name(CHASSIS_BUSNAME);
     manager.startPOHCounter();
diff --git a/discover_system_state.cpp b/discover_system_state.cpp
index 3a38152..836011a 100644
--- a/discover_system_state.cpp
+++ b/discover_system_state.cpp
@@ -2,7 +2,7 @@
 #include <iostream>
 #include <map>
 #include <string>
-#include <config.h>
+#include "config.h"
 #include <systemd/sd-bus.h>
 #include <sdbusplus/exception.hpp>
 #include <sdbusplus/server.hpp>
diff --git a/host_check_main.cpp b/host_check_main.cpp
index b9f5327..56b22fb 100644
--- a/host_check_main.cpp
+++ b/host_check_main.cpp
@@ -7,7 +7,7 @@
 #include <sdbusplus/exception.hpp>
 #include <phosphor-logging/log.hpp>
 #include <xyz/openbmc_project/Control/Host/server.hpp>
-#include <config.h>
+#include "config.h"
 
 using namespace std::literals;
 using namespace phosphor::logging;
@@ -29,6 +29,9 @@
 static int hostControlSignal(sd_bus_message* msg, void* userData,
                              sd_bus_error* retError)
 {
+    // retError and userData are not used
+    (void)(retError);
+    (void)(userData);
     std::string cmdCompleted{};
     std::string cmdStatus{};
 
@@ -107,7 +110,7 @@
     return;
 }
 
-int main(int argc, char* argv[])
+int main()
 {
     log<level::INFO>("Check if host is running");
 
diff --git a/host_state_manager.cpp b/host_state_manager.cpp
index 425e5c8..a1a0a8c 100644
--- a/host_state_manager.cpp
+++ b/host_state_manager.cpp
@@ -18,7 +18,7 @@
 #include "config.h"
 
 // Register class version with Cereal
-CEREAL_CLASS_VERSION(phosphor::state::manager::Host, CLASS_VERSION);
+CEREAL_CLASS_VERSION(phosphor::state::manager::Host, CLASS_VERSION)
 
 namespace phosphor
 {
diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index 2b00777..5a35de2 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -47,10 +47,9 @@
      *       determineInitialState() and set our properties
      *
      * @param[in] bus       - The Dbus bus object
-     * @param[in] busName   - The Dbus name to own
      * @param[in] objPath   - The Dbus object path
      */
-    Host(sdbusplus::bus::bus& bus, const char* busName, const char* objPath) :
+    Host(sdbusplus::bus::bus& bus, const char* objPath) :
         HostInherit(bus, objPath, true), bus(bus),
         systemdSignals(
             bus,
@@ -102,6 +101,8 @@
      */
     uint32_t attemptsLeft(uint32_t value) override
     {
+        // value is ignored in this implementation
+        (void)(value);
         log<level::DEBUG>("External request to reset reboot count");
         return (sdbusplus::xyz::openbmc_project::Control::Boot::server::
                     RebootAttempts::attemptsLeft(BOOT_COUNT_MAX_ALLOWED));
@@ -186,6 +187,8 @@
     template <class Archive>
     void save(Archive& archive, const std::uint32_t version) const
     {
+        // version is not used currently
+        (void)(version);
         archive(convertForMessage(sdbusplus::xyz::openbmc_project::State::
                                       server::Host::requestedHostTransition()),
                 convertForMessage(sdbusplus::xyz::openbmc_project::State::Boot::
@@ -205,6 +208,8 @@
     template <class Archive>
     void load(Archive& archive, const std::uint32_t version)
     {
+        // version is not used currently
+        (void)(version);
         std::string reqTranState;
         std::string bootProgress;
         std::string osState;
diff --git a/host_state_manager_main.cpp b/host_state_manager_main.cpp
index 4844a02..6c82cf9 100644
--- a/host_state_manager_main.cpp
+++ b/host_state_manager_main.cpp
@@ -6,7 +6,7 @@
 #include "config.h"
 #include "host_state_manager.hpp"
 
-int main(int argc, char *argv[])
+int main()
 {
     namespace fs = std::experimental::filesystem;
 
@@ -18,8 +18,7 @@
     // Add sdbusplus ObjectManager.
     sdbusplus::server::manager::manager objManager(bus, objPathInst.c_str());
 
-    phosphor::state::manager::Host manager(bus, HOST_BUSNAME,
-                                           objPathInst.c_str());
+    phosphor::state::manager::Host manager(bus, objPathInst.c_str());
 
     auto dir = fs::path(HOST_STATE_PERSIST_PATH).parent_path();
     fs::create_directories(dir);
diff --git a/systemd_target_monitor.cpp b/systemd_target_monitor.cpp
index dc94951..c269f32 100644
--- a/systemd_target_monitor.cpp
+++ b/systemd_target_monitor.cpp
@@ -3,8 +3,8 @@
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
 #include <sdeventplus/event.hpp>
-#include <systemd_target_parser.hpp>
-#include <systemd_target_signal.hpp>
+#include "systemd_target_parser.hpp"
+#include "systemd_target_signal.hpp"
 #include <vector>
 
 using phosphor::logging::level;
diff --git a/systemd_target_parser.cpp b/systemd_target_parser.cpp
index 9656a46..391d30a 100644
--- a/systemd_target_parser.cpp
+++ b/systemd_target_parser.cpp
@@ -1,7 +1,7 @@
 #include <cassert>
 #include <fstream>
 #include <iostream>
-#include <systemd_target_parser.hpp>
+#include "systemd_target_parser.hpp"
 
 void validateErrorsToMonitor(std::vector<std::string>& errorsToMonitor)
 {
diff --git a/systemd_target_signal.cpp b/systemd_target_signal.cpp
index 0f710b2..d85f819 100644
--- a/systemd_target_signal.cpp
+++ b/systemd_target_signal.cpp
@@ -3,7 +3,7 @@
 #include <sdbusplus/server/manager.hpp>
 #include <sdeventplus/event.hpp>
 #include <sdbusplus/exception.hpp>
-#include <systemd_target_signal.hpp>
+#include "systemd_target_signal.hpp"
 #include <xyz/openbmc_project/Common/error.hpp>
 
 namespace phosphor
diff --git a/systemd_target_signal.hpp b/systemd_target_signal.hpp
index 3864602..0d0abad 100644
--- a/systemd_target_signal.hpp
+++ b/systemd_target_signal.hpp
@@ -2,7 +2,7 @@
 
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/bus/match.hpp>
-#include <systemd_target_parser.hpp>
+#include "systemd_target_parser.hpp"
 
 extern bool gVerbose;
 
