diff --git a/src/utils/conversion_trigger.cpp b/src/utils/conversion_trigger.cpp
index d577f76..29545db 100644
--- a/src/utils/conversion_trigger.cpp
+++ b/src/utils/conversion_trigger.cpp
@@ -21,11 +21,11 @@
     const std::vector<numeric::ThresholdParam>& arg) const
 {
     return utils::transform(arg, [](const auto& thresholdParam) {
-        const auto& [type, dwellTime, direction,
-                     thresholdValue] = thresholdParam;
-        return numeric::LabeledThresholdParam(numeric::toType(type), dwellTime,
-                                              numeric::toDirection(direction),
-                                              thresholdValue);
+        const auto& [type, dwellTime, direction, thresholdValue] =
+            thresholdParam;
+        return numeric::LabeledThresholdParam(
+            numeric::toType(type), dwellTime, numeric::toDirection(direction),
+            thresholdValue);
     });
 }
 
@@ -33,8 +33,8 @@
     const std::vector<discrete::ThresholdParam>& arg) const
 {
     return utils::transform(arg, [](const auto& thresholdParam) {
-        const auto& [userId, severity, dwellTime,
-                     thresholdValue] = thresholdParam;
+        const auto& [userId, severity, dwellTime, thresholdValue] =
+            thresholdParam;
         return discrete::LabeledThresholdParam(
             userId, utils::toSeverity(severity), dwellTime, thresholdValue);
     });
@@ -45,13 +45,14 @@
 {
     return utils::transform(
         arg, [](const numeric::LabeledThresholdParam& labeledThresholdParam) {
-        return numeric::ThresholdParam(
-            numeric::typeToString(labeledThresholdParam.at_label<ts::Type>()),
-            labeledThresholdParam.at_label<ts::DwellTime>(),
-            numeric::directionToString(
-                labeledThresholdParam.at_label<ts::Direction>()),
-            labeledThresholdParam.at_label<ts::ThresholdValue>());
-    });
+            return numeric::ThresholdParam(
+                numeric::typeToString(
+                    labeledThresholdParam.at_label<ts::Type>()),
+                labeledThresholdParam.at_label<ts::DwellTime>(),
+                numeric::directionToString(
+                    labeledThresholdParam.at_label<ts::Direction>()),
+                labeledThresholdParam.at_label<ts::ThresholdValue>());
+        });
 }
 
 TriggerThresholdParams FromLabeledThresholdParamConversion::operator()(
@@ -59,12 +60,13 @@
 {
     return utils::transform(
         arg, [](const discrete::LabeledThresholdParam& labeledThresholdParam) {
-        return discrete::ThresholdParam(
-            labeledThresholdParam.at_label<ts::UserId>(),
-            utils::enumToString(labeledThresholdParam.at_label<ts::Severity>()),
-            labeledThresholdParam.at_label<ts::DwellTime>(),
-            labeledThresholdParam.at_label<ts::ThresholdValue>());
-    });
+            return discrete::ThresholdParam(
+                labeledThresholdParam.at_label<ts::UserId>(),
+                utils::enumToString(
+                    labeledThresholdParam.at_label<ts::Severity>()),
+                labeledThresholdParam.at_label<ts::DwellTime>(),
+                labeledThresholdParam.at_label<ts::ThresholdValue>());
+        });
 }
 
 SensorsInfo fromLabeledSensorsInfo(const std::vector<LabeledSensorInfo>& infos)
@@ -76,8 +78,8 @@
     });
 }
 
-TriggerThresholdParams
-    fromLabeledThresholdParam(const std::vector<LabeledThresholdParam>& params)
+TriggerThresholdParams fromLabeledThresholdParam(
+    const std::vector<LabeledThresholdParam>& params)
 {
     namespace ts = utils::tstring;
     if (params.empty())
