diff --git a/service/inc/pfr_mgr.hpp b/service/inc/pfr_mgr.hpp
index 47fc0f4..8a0acf6 100644
--- a/service/inc/pfr_mgr.hpp
+++ b/service/inc/pfr_mgr.hpp
@@ -16,36 +16,37 @@
 
 #pragma once
 
-#include <string>
-#include <sdbusplus/asio/object_server.hpp>
-#include <phosphor-logging/log.hpp>
-#include <boost/asio.hpp>
-
 #include "pfr.hpp"
 
+#include <boost/asio.hpp>
+#include <phosphor-logging/log.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+#include <string>
+
 namespace intel
 {
 namespace pfr
 {
 
-static constexpr const char *versionPurposeBMC =
+static constexpr const char* versionPurposeBMC =
     "xyz.openbmc_project.Software.Version.VersionPurpose.BMC";
-static constexpr const char *versionPurposeHost =
+static constexpr const char* versionPurposeHost =
     "xyz.openbmc_project.Software.Version.VersionPurpose.Host";
-static constexpr const char *versionPurposeOther =
+static constexpr const char* versionPurposeOther =
     "xyz.openbmc_project.Software.Version.VersionPurpose.Other";
 
-static constexpr const char *versionStr = "Version";
-static constexpr const char *ufmProvisionedStr = "UfmProvisioned";
-static constexpr const char *ufmLockedStr = "UfmLocked";
+static constexpr const char* versionStr = "Version";
+static constexpr const char* ufmProvisionedStr = "UfmProvisioned";
+static constexpr const char* ufmLockedStr = "UfmLocked";
 
 class PfrVersion
 {
   public:
-    PfrVersion(sdbusplus::asio::object_server &srv_,
-               std::shared_ptr<sdbusplus::asio::connection> &conn_,
-               const std::string &path_, const ImageType &imgType_,
-               const std::string &purpose_);
+    PfrVersion(sdbusplus::asio::object_server& srv_,
+               std::shared_ptr<sdbusplus::asio::connection>& conn_,
+               const std::string& path_, const ImageType& imgType_,
+               const std::string& purpose_);
     ~PfrVersion() = default;
 
     std::shared_ptr<sdbusplus::asio::connection> conn;
@@ -53,7 +54,7 @@
     void updateVersion();
 
   private:
-    sdbusplus::asio::object_server &server;
+    sdbusplus::asio::object_server& server;
     std::shared_ptr<sdbusplus::asio::dbus_interface> versionIface;
     bool internalSet = false;
 
@@ -66,8 +67,8 @@
 class PfrConfig
 {
   public:
-    PfrConfig(sdbusplus::asio::object_server &srv_,
-              std::shared_ptr<sdbusplus::asio::connection> &conn_);
+    PfrConfig(sdbusplus::asio::object_server& srv_,
+              std::shared_ptr<sdbusplus::asio::connection>& conn_);
     ~PfrConfig() = default;
 
     std::shared_ptr<sdbusplus::asio::connection> conn;
@@ -75,7 +76,7 @@
     void updateProvisioningStatus();
 
   private:
-    sdbusplus::asio::object_server &server;
+    sdbusplus::asio::object_server& server;
     std::shared_ptr<sdbusplus::asio::dbus_interface> pfrCfgIface;
     bool internalSet = false;
 
diff --git a/service/src/mainapp.cpp b/service/src/mainapp.cpp
index 9b45ea2..52e0b85 100644
--- a/service/src/mainapp.cpp
+++ b/service/src/mainapp.cpp
@@ -14,10 +14,11 @@
 // limitations under the License.
 */
 
+#include "pfr.hpp"
+#include "pfr_mgr.hpp"
+
 #include <systemd/sd-journal.h>
 
-#include "pfr_mgr.hpp"
-#include "pfr.hpp"
 #include <boost/asio.hpp>
 
 // Caches the last Recovery/Panic Count to
diff --git a/service/src/pfr_mgr.cpp b/service/src/pfr_mgr.cpp
index abc2938..bb31b5c 100644
--- a/service/src/pfr_mgr.cpp
+++ b/service/src/pfr_mgr.cpp
@@ -27,10 +27,10 @@
 std::shared_ptr<sdbusplus::asio::dbus_interface> associationIface;
 std::set<std::tuple<std::string, std::string, std::string>> associations;
 
-PfrVersion::PfrVersion(sdbusplus::asio::object_server &srv_,
-                       std::shared_ptr<sdbusplus::asio::connection> &conn_,
-                       const std::string &path_, const ImageType &imgType_,
-                       const std::string &purpose_) :
+PfrVersion::PfrVersion(sdbusplus::asio::object_server& srv_,
+                       std::shared_ptr<sdbusplus::asio::connection>& conn_,
+                       const std::string& path_, const ImageType& imgType_,
+                       const std::string& purpose_) :
     server(srv_),
     conn(conn_), path(path_), imgType(imgType_), purpose(purpose_)
 {
@@ -43,7 +43,7 @@
     versionIface->register_property(
         versionStr, version,
         // Override set
-        [this](const std::string &req, std::string &propertyValue) {
+        [this](const std::string& req, std::string& propertyValue) {
             if (internalSet)
             {
                 if (req != propertyValue)
@@ -110,8 +110,8 @@
     return;
 }
 
-PfrConfig::PfrConfig(sdbusplus::asio::object_server &srv_,
-                     std::shared_ptr<sdbusplus::asio::connection> &conn_) :
+PfrConfig::PfrConfig(sdbusplus::asio::object_server& srv_,
+                     std::shared_ptr<sdbusplus::asio::connection>& conn_) :
     server(srv_),
     conn(conn_)
 {
