diff --git a/src/ExternalSensorMain.cpp b/src/ExternalSensorMain.cpp
index 2c10dc8..455df07 100644
--- a/src/ExternalSensorMain.cpp
+++ b/src/ExternalSensorMain.cpp
@@ -190,8 +190,8 @@
                           << interfacePath << "\n";
                 continue;
             }
-            double minValue =
-                std::visit(VariantToDoubleVisitor(), minFound->second);
+            double minValue = std::visit(VariantToDoubleVisitor(),
+                                         minFound->second);
             if (!std::isfinite(minValue))
             {
                 std::cerr << "MinValue parameter not parsed for "
@@ -206,8 +206,8 @@
                           << interfacePath << "\n";
                 continue;
             }
-            double maxValue =
-                std::visit(VariantToDoubleVisitor(), maxFound->second);
+            double maxValue = std::visit(VariantToDoubleVisitor(),
+                                         maxFound->second);
             if (!std::isfinite(maxValue))
             {
                 std::cerr << "MaxValue parameter not parsed for "
@@ -221,8 +221,8 @@
             auto timeoutFound = baseConfigMap.find("Timeout");
             if (timeoutFound != baseConfigMap.end())
             {
-                timeoutSecs =
-                    std::visit(VariantToDoubleVisitor(), timeoutFound->second);
+                timeoutSecs = std::visit(VariantToDoubleVisitor(),
+                                         timeoutFound->second);
             }
             if (!std::isfinite(timeoutSecs) || (timeoutSecs < 0.0))
             {
@@ -242,8 +242,8 @@
                           << "\n";
                 continue;
             }
-            sensorName =
-                std::visit(VariantToStringVisitor(), nameFound->second);
+            sensorName = std::visit(VariantToStringVisitor(),
+                                    nameFound->second);
             if (sensorName.empty())
             {
                 std::cerr << "Name parameter not parsed for " << interfacePath
@@ -258,8 +258,8 @@
                           << "\n";
                 continue;
             }
-            sensorUnits =
-                std::visit(VariantToStringVisitor(), unitsFound->second);
+            sensorUnits = std::visit(VariantToStringVisitor(),
+                                     unitsFound->second);
             if (sensorUnits.empty())
             {
                 std::cerr << "Units parameter not parsed for " << interfacePath
