diff --git a/control/json/utils/flight_recorder.cpp b/control/json/utils/flight_recorder.cpp
index 71d4afd..8c8ce06 100644
--- a/control/json/utils/flight_recorder.cpp
+++ b/control/json/utils/flight_recorder.cpp
@@ -71,8 +71,8 @@
 
     std::sort(output.begin(), output.end(),
               [](const auto& left, const auto& right) {
-                  return std::get<Timepoint>(left) < std::get<Timepoint>(right);
-              });
+        return std::get<Timepoint>(left) < std::get<Timepoint>(right);
+    });
 
     auto formatTime = [](const Timepoint& tp) {
         std::stringstream ss;
diff --git a/control/json/utils/pcie_card_metadata.cpp b/control/json/utils/pcie_card_metadata.cpp
index 8e65c7c..6fd8fd1 100644
--- a/control/json/utils/pcie_card_metadata.cpp
+++ b/control/json/utils/pcie_card_metadata.cpp
@@ -119,10 +119,10 @@
         }
 
         Metadata data;
-        data.vendorID =
-            std::stoul(card.at("vendor_id").get<std::string>(), nullptr, 16);
-        data.deviceID =
-            std::stoul(card.at("device_id").get<std::string>(), nullptr, 16);
+        data.vendorID = std::stoul(card.at("vendor_id").get<std::string>(),
+                                   nullptr, 16);
+        data.deviceID = std::stoul(card.at("device_id").get<std::string>(),
+                                   nullptr, 16);
         data.subsystemVendorID = std::stoul(
             card.at("subsystem_vendor_id").get<std::string>(), nullptr, 16);
         data.subsystemID =
@@ -172,15 +172,13 @@
     log<level::DEBUG>(fmt::format("Lookup {:#x} ${:#x} {:#x} {:#x}", deviceID,
                                   vendorID, subsystemID, subsystemVendorID)
                           .c_str());
-    auto card =
-        std::find_if(_cards.begin(), _cards.end(),
-                     [&deviceID, &vendorID, &subsystemID,
-                      &subsystemVendorID](const auto& card) {
-                         return (deviceID == card.deviceID) &&
-                                (vendorID == card.vendorID) &&
-                                (subsystemID == card.subsystemID) &&
-                                (subsystemVendorID == card.subsystemVendorID);
-                     });
+    auto card = std::find_if(_cards.begin(), _cards.end(),
+                             [&deviceID, &vendorID, &subsystemID,
+                              &subsystemVendorID](const auto& card) {
+        return (deviceID == card.deviceID) && (vendorID == card.vendorID) &&
+               (subsystemID == card.subsystemID) &&
+               (subsystemVendorID == card.subsystemVendorID);
+    });
 
     if (card != _cards.end())
     {
