diff --git a/.clang-format b/.clang-format
index ef6f54e..abedc25 100644
--- a/.clang-format
+++ b/.clang-format
@@ -41,7 +41,7 @@
 BreakBeforeTernaryOperators: true
 BreakConstructorInitializers: AfterColon
 BreakInheritanceList: AfterColon
-BreakStringLiterals: true
+BreakStringLiterals: false
 ColumnLimit:     80
 CommentPragmas:  '^ IWYU pragma:'
 CompactNamespaces: false
@@ -108,8 +108,7 @@
 SpacesInCStyleCastParentheses: false
 SpacesInParentheses: false
 SpacesInSquareBrackets: false
-Standard:        Cpp11
+Standard:        Latest
 TabWidth:        4
 UseTab:          Never
 ...
-
diff --git a/power-control-x86/src/power_control.cpp b/power-control-x86/src/power_control.cpp
index d7899b3..bcc0914 100644
--- a/power-control-x86/src/power_control.cpp
+++ b/power-control-x86/src/power_control.cpp
@@ -606,12 +606,10 @@
             return "xyz.openbmc_project.State.Host.RestartCause.WatchdogTimer";
             break;
         case RestartCause::powerPolicyOn:
-            return "xyz.openbmc_project.State.Host.RestartCause."
-                   "PowerPolicyAlwaysOn";
+            return "xyz.openbmc_project.State.Host.RestartCause.PowerPolicyAlwaysOn";
             break;
         case RestartCause::powerPolicyRestore:
-            return "xyz.openbmc_project.State.Host.RestartCause."
-                   "PowerPolicyPreviousState";
+            return "xyz.openbmc_project.State.Host.RestartCause.PowerPolicyPreviousState";
             break;
         case RestartCause::softReset:
             return "xyz.openbmc_project.State.Host.RestartCause.SoftReset";
@@ -806,8 +804,8 @@
         sendPowerControlEvent(Event::powerOnRequest);
         setRestartCauseProperty(getRestartCause(RestartCause::powerPolicyOn));
     }
-    else if (policy == "xyz.openbmc_project.Control.Power.RestorePolicy."
-                       "Policy.Restore")
+    else if (policy ==
+             "xyz.openbmc_project.Control.Power.RestorePolicy.Policy.Restore")
     {
         if (wasPowerDropped())
         {
@@ -1354,8 +1352,7 @@
         }
 
         phosphor::logging::log<phosphor::logging::level::INFO>(
-            "PCH Power-button override failed. Issuing Unconditional Powerdown "
-            "SMBus command.");
+            "PCH Power-button override failed. Issuing Unconditional Powerdown SMBus command.");
         const static constexpr size_t pchDevBusAddress = 3;
         const static constexpr size_t pchDevSlaveAddress = 0x44;
         const static constexpr size_t pchCmdReg = 0;
@@ -1364,8 +1361,7 @@
                    pchPowerDownCmd) < 0)
         {
             phosphor::logging::log<phosphor::logging::level::ERR>(
-                "Unconditional Powerdown command failed! Not sure what to do "
-                "now.");
+                "Unconditional Powerdown command failed! Not sure what to do now.");
         }
     });
 }
@@ -2201,8 +2197,8 @@
         "/xyz/openbmc_project/Chassis/Control/NMISource",
         "org.freedesktop.DBus.Properties", "Set",
         "xyz.openbmc_project.Chassis.Control.NMISource", "BMCSource",
-        std::variant<std::string>{"xyz.openbmc_project.Chassis.Control."
-                                  "NMISource.BMCSourceSignal.FpBtn"});
+        std::variant<std::string>{
+            "xyz.openbmc_project.Chassis.Control.NMISource.BMCSourceSignal.FpBtn"});
     // set Enable Property
     nmiSetEnableProperty(true);
 }
@@ -2381,8 +2377,7 @@
             else
             {
                 phosphor::logging::log<phosphor::logging::level::ERR>(
-                    "The \'LineName\' field must be defined for GPIO "
-                    "configuration");
+                    "The \'LineName\' field must be defined for GPIO configuration");
                 return -1;
             }
             if (gpioConfig.contains("Polarity"))
@@ -2399,8 +2394,7 @@
                 else
                 {
                     std::string errMsg =
-                        "Polarity defined but not properly setup. Please "
-                        "only ActiveHigh or ActiveLow. Currently set to " +
+                        "Polarity defined but not properly setup. Please only ActiveHigh or ActiveLow. Currently set to " +
                         polarity;
                     phosphor::logging::log<phosphor::logging::level::ERR>(
                         errMsg.c_str());
@@ -2660,8 +2654,7 @@
         else
         {
             phosphor::logging::log<phosphor::logging::level::ERR>(
-                "sioOnControl name should be configured from json"
-                "config file\n");
+                "sioOnControl name should be configured from jsonconfig file\n");
             return -1;
         }
 
@@ -2918,8 +2911,9 @@
                     return 0;
                 }
             }
-            else if (requested == "xyz.openbmc_project.State.Host.Transition."
-                                  "GracefulWarmReboot")
+            else if (
+                requested ==
+                "xyz.openbmc_project.State.Host.Transition.GracefulWarmReboot")
             {
                 // if reset button is masked, ignore this
                 if (!resetButtonMask)
@@ -2935,8 +2929,9 @@
                     return 0;
                 }
             }
-            else if (requested == "xyz.openbmc_project.State.Host.Transition."
-                                  "ForceWarmReboot")
+            else if (
+                requested ==
+                "xyz.openbmc_project.State.Host.Transition.ForceWarmReboot")
             {
                 // if reset button is masked, ignore this
                 if (!resetButtonMask)
@@ -3113,16 +3108,16 @@
                 {
                     slotPowerOff();
                 }
-                else if (requested == "xyz.openbmc_project.State.Chassis."
-                                      "Transition.PowerCycle")
+                else if (
+                    requested ==
+                    "xyz.openbmc_project.State.Chassis.Transition.PowerCycle")
                 {
                     slotPowerCycle();
                 }
                 else
                 {
                     phosphor::logging::log<phosphor::logging::level::ERR>(
-                        "Unrecognized chassis system state transition "
-                        "request.\n");
+                        "Unrecognized chassis system state transition request.\n");
                     throw std::invalid_argument(
                         "Unrecognized Transition Request");
                     return 0;
