diff --git a/y2019/control_loops/drivetrain/drivetrain_replay.cc b/y2019/control_loops/drivetrain/drivetrain_replay.cc
index 26c87e8..d9d928c 100644
--- a/y2019/control_loops/drivetrain/drivetrain_replay.cc
+++ b/y2019/control_loops/drivetrain/drivetrain_replay.cc
@@ -1,14 +1,15 @@
 #include <iostream>
 
+#include "gflags/gflags.h"
+
 #include "aos/configuration.h"
-#include "aos/events/logging/log_writer.h"
 #include "aos/events/logging/log_reader.h"
+#include "aos/events/logging/log_writer.h"
 #include "aos/events/simulated_event_loop.h"
 #include "aos/init.h"
 #include "aos/json_to_flatbuffer.h"
 #include "aos/network/team_number.h"
 #include "frc971/control_loops/drivetrain/drivetrain.h"
-#include "gflags/gflags.h"
 #include "y2019/control_loops/drivetrain/drivetrain_base.h"
 #include "y2019/control_loops/drivetrain/event_loop_localizer.h"
 
diff --git a/y2019/control_loops/drivetrain/event_loop_localizer.h b/y2019/control_loops/drivetrain/event_loop_localizer.h
index a78f3a2..0847479 100644
--- a/y2019/control_loops/drivetrain/event_loop_localizer.h
+++ b/y2019/control_loops/drivetrain/event_loop_localizer.h
@@ -66,9 +66,7 @@
 
   Localizer::State Xhat() const override { return localizer_.X_hat(); }
 
-  TargetSelector *target_selector() override {
-    return &target_selector_;
-  }
+  TargetSelector *target_selector() override { return &target_selector_; }
 
  private:
   void HandleFrame(const CameraFrame *frame);
diff --git a/y2019/control_loops/drivetrain/localized_drivetrain_test.cc b/y2019/control_loops/drivetrain/localized_drivetrain_test.cc
index 4d6f84a..016e3b7 100644
--- a/y2019/control_loops/drivetrain/localized_drivetrain_test.cc
+++ b/y2019/control_loops/drivetrain/localized_drivetrain_test.cc
@@ -1,11 +1,12 @@
 #include <queue>
 
+#include "gtest/gtest.h"
+
 #include "aos/network/team_number.h"
 #include "frc971/control_loops/control_loop_test.h"
 #include "frc971/control_loops/drivetrain/drivetrain.h"
 #include "frc971/control_loops/drivetrain/drivetrain_test_lib.h"
 #include "frc971/control_loops/team_number_test_environment.h"
-#include "gtest/gtest.h"
 #include "y2019/control_loops/drivetrain/camera_generated.h"
 #include "y2019/control_loops/drivetrain/drivetrain_base.h"
 #include "y2019/control_loops/drivetrain/event_loop_localizer.h"
diff --git a/y2019/control_loops/drivetrain/localizer.h b/y2019/control_loops/drivetrain/localizer.h
index 818e1b9..2e7c3a5 100644
--- a/y2019/control_loops/drivetrain/localizer.h
+++ b/y2019/control_loops/drivetrain/localizer.h
@@ -95,15 +95,13 @@
         dhdx;
     make_h_queue_.CorrectKnownHBuilder(
         z, nullptr,
-        ExpectedObservationBuilder(this, camera, targets, &h_functions,
-                                   &dhdx),
+        ExpectedObservationBuilder(this, camera, targets, &h_functions, &dhdx),
         R, t);
     // Fetch cache:
     for (size_t ii = 1; ii < targets.size(); ++ii) {
       TargetViewToMatrices(targets[ii], &z, &R);
       h_queue_.CorrectKnownH(
-          z, nullptr,
-          ExpectedObservationFunctor(h_functions[ii], dhdx[ii]), R,
+          z, nullptr, ExpectedObservationFunctor(h_functions[ii], dhdx[ii]), R,
           t);
     }
   }
@@ -189,8 +187,8 @@
         const State &state, const StateSquare &P) {
       HFunction h;
       Eigen::Matrix<Scalar, kNOutputs, kNStates> dhdx;
-      localizer_->MakeH(camera_, target_views_, h_functions_, dhdx_,
-                        state, P, &h, &dhdx);
+      localizer_->MakeH(camera_, target_views_, h_functions_, dhdx_, state, P,
+                        &h, &dhdx);
       functor_.emplace(h, dhdx);
       return &functor_.value();
     }
@@ -410,8 +408,7 @@
         if (view_idx >= camera_views.size()) {
           AOS_LOG(ERROR, "Somehow, the view scorer failed.\n");
           h_functions->emplace_back();
-          dhdx->push_back(
-              Eigen::Matrix<Scalar, kNOutputs, kNStates>::Zero());
+          dhdx->push_back(Eigen::Matrix<Scalar, kNOutputs, kNStates>::Zero());
           continue;
         }
         const Eigen::Matrix<Scalar, kNOutputs, kNStates> best_H =
diff --git a/y2019/control_loops/drivetrain/localizer_test.cc b/y2019/control_loops/drivetrain/localizer_test.cc
index 1c9485a..28f0235 100644
--- a/y2019/control_loops/drivetrain/localizer_test.cc
+++ b/y2019/control_loops/drivetrain/localizer_test.cc
@@ -3,15 +3,17 @@
 #include <queue>
 #include <random>
 
+#include "gflags/gflags.h"
+
 #include "aos/testing/random_seed.h"
 #include "aos/testing/test_shm.h"
 #include "frc971/control_loops/drivetrain/splinedrivetrain.h"
 #include "frc971/control_loops/drivetrain/trajectory.h"
-#include "gflags/gflags.h"
 #if defined(SUPPORT_PLOT)
 #include "third_party/matplotlib-cpp/matplotlibcpp.h"
 #endif
 #include "gtest/gtest.h"
+
 #include "y2019/constants.h"
 #include "y2019/control_loops/drivetrain/drivetrain_base.h"
 
@@ -490,9 +492,9 @@
     const double left_enc = state(StateIdx::kLeftEncoder, 0);
     const double right_enc = state(StateIdx::kRightEncoder, 0);
 
-    const double gyro = (state(StateIdx::kRightVelocity) -
-                         state(StateIdx::kLeftVelocity)) /
-                        dt_config_.robot_radius / 2.0;
+    const double gyro =
+        (state(StateIdx::kRightVelocity) - state(StateIdx::kLeftVelocity)) /
+        dt_config_.robot_radius / 2.0;
     const TestLocalizer::State xdot = DiffEq(state, U);
     const Eigen::Vector3d accel(
         localizer_.CalcLongitudinalVelocity(xdot) -
diff --git a/y2019/control_loops/drivetrain/replay_localizer.cc b/y2019/control_loops/drivetrain/replay_localizer.cc
index 3687e3d..b7d269b 100644
--- a/y2019/control_loops/drivetrain/replay_localizer.cc
+++ b/y2019/control_loops/drivetrain/replay_localizer.cc
@@ -1,5 +1,7 @@
 #include <fcntl.h>
 
+#include "gflags/gflags.h"
+
 #include "aos/init.h"
 #include "aos/logging/implementations.h"
 #include "aos/logging/replay.h"
@@ -8,7 +10,6 @@
 #include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/control_loops/drivetrain/localizer.q.h"
 #include "frc971/wpilib/imu.q.h"
-#include "gflags/gflags.h"
 #include "y2019/constants.h"
 #include "y2019/control_loops/drivetrain/drivetrain_base.h"
 #include "y2019/control_loops/drivetrain/event_loop_localizer.h"
@@ -29,9 +30,10 @@
 namespace drivetrain {
 using ::y2019::constants::Field;
 
-typedef TypedLocalizer<
-    constants::Values::kNumCameras, Field::kNumTargets, Field::kNumObstacles,
-    EventLoopLocalizer::kMaxTargetsPerFrame, double> TestLocalizer;
+typedef TypedLocalizer<constants::Values::kNumCameras, Field::kNumTargets,
+                       Field::kNumObstacles,
+                       EventLoopLocalizer::kMaxTargetsPerFrame, double>
+    TestLocalizer;
 typedef typename TestLocalizer::Camera TestCamera;
 typedef typename TestCamera::Pose Pose;
 typedef typename TestCamera::LineSegment Obstacle;
@@ -42,7 +44,7 @@
                  const ::std::map<::std::string, ::std::string> &kwargs) {
   ::std::vector<double> x;
   ::std::vector<double> y;
-  for (const Pose & p : poses) {
+  for (const Pose &p : poses) {
     x.push_back(p.abs_pos().x());
     y.push_back(p.abs_pos().y());
   }
@@ -336,8 +338,8 @@
   // Whether the robot has been enabled yet.
   bool has_been_enabled_ = false;
   // Cache of last gyro value to forward to the localizer.
-  double latest_gyro_ = 0.0;      // rad/sec
-  double battery_voltage_ = 12.0; // volts
+  double latest_gyro_ = 0.0;       // rad/sec
+  double battery_voltage_ = 12.0;  // volts
   ::Eigen::Matrix<double, 2, 1> last_U_{0, 0};
   ::Eigen::Matrix<double, 2, 1> last_last_U_{0, 0};
 
diff --git a/y2019/control_loops/drivetrain/target_selector_test.cc b/y2019/control_loops/drivetrain/target_selector_test.cc
index b60085c..d4ef6da 100644
--- a/y2019/control_loops/drivetrain/target_selector_test.cc
+++ b/y2019/control_loops/drivetrain/target_selector_test.cc
@@ -1,7 +1,8 @@
 #include "y2019/control_loops/drivetrain/target_selector.h"
 
-#include "aos/events/simulated_event_loop.h"
 #include "gtest/gtest.h"
+
+#include "aos/events/simulated_event_loop.h"
 #include "y2019/control_loops/superstructure/superstructure_goal_generated.h"
 
 namespace y2019 {
@@ -81,8 +82,7 @@
         builder.MakeBuilder<superstructure::Goal>();
 
     goal_builder.add_suction(suction_offset);
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
   {
     auto builder = target_selector_hint_sender_.MakeBuilder();
diff --git a/y2019/control_loops/superstructure/collision_avoidance.h b/y2019/control_loops/superstructure/collision_avoidance.h
index 338864e..ac88cec 100644
--- a/y2019/control_loops/superstructure/collision_avoidance.h
+++ b/y2019/control_loops/superstructure/collision_avoidance.h
@@ -74,7 +74,8 @@
   // elevator is below kElevatorClearHeight.
   static constexpr double kWristElevatorCollisionMinAngle = -M_PI / 4.0;
   static constexpr double kWristElevatorCollisionMaxAngle = M_PI / 4.0;
-  static constexpr double kWristElevatorCollisionMaxAngleWithoutObject = M_PI / 6.0;
+  static constexpr double kWristElevatorCollisionMaxAngleWithoutObject =
+      M_PI / 6.0;
 
   // Tolerance for the elevator.
   static constexpr double kEps = 0.02;
diff --git a/y2019/control_loops/superstructure/collision_avoidance_tests.cc b/y2019/control_loops/superstructure/collision_avoidance_tests.cc
index 9ea373e..68449d6 100644
--- a/y2019/control_loops/superstructure/collision_avoidance_tests.cc
+++ b/y2019/control_loops/superstructure/collision_avoidance_tests.cc
@@ -1,8 +1,8 @@
-#include "y2019/control_loops/superstructure/collision_avoidance.h"
+#include "gtest/gtest.h"
 
 #include "aos/commonmath.h"
 #include "aos/flatbuffers.h"
-#include "gtest/gtest.h"
+#include "y2019/control_loops/superstructure/collision_avoidance.h"
 #include "y2019/control_loops/superstructure/superstructure_goal_generated.h"
 #include "y2019/control_loops/superstructure/superstructure_status_generated.h"
 
@@ -81,8 +81,7 @@
     wrist_offset = wrist_builder.Finish();
   }
 
-  flatbuffers::Offset<PotAndAbsoluteEncoderProfiledJointStatus>
-      elevator_offset;
+  flatbuffers::Offset<PotAndAbsoluteEncoderProfiledJointStatus> elevator_offset;
   {
     PotAndAbsoluteEncoderProfiledJointStatus::Builder elevator_builder(fbb);
 
@@ -90,8 +89,7 @@
     elevator_offset = elevator_builder.Finish();
   }
 
-  flatbuffers::Offset<AbsoluteEncoderProfiledJointStatus>
-      intake_offset;
+  flatbuffers::Offset<AbsoluteEncoderProfiledJointStatus> intake_offset;
   {
     AbsoluteEncoderProfiledJointStatus::Builder intake_builder(fbb);
 
@@ -462,15 +460,15 @@
 // Fix Collision Wrist Above Elevator
 TEST_P(CollisionAvoidanceTests, FixWristElevatorCollision) {
   // changes the goals
-  unsafe_goal_.mutable_message()->mutable_wrist()->mutate_unsafe_goal ( 0.0);
-  unsafe_goal_.mutable_message()->mutable_elevator()->mutate_unsafe_goal ( 0.0);
-  unsafe_goal_.mutable_message()->mutable_intake()->mutate_unsafe_goal (
+  unsafe_goal_.mutable_message()->mutable_wrist()->mutate_unsafe_goal(0.0);
+  unsafe_goal_.mutable_message()->mutable_elevator()->mutate_unsafe_goal(0.0);
+  unsafe_goal_.mutable_message()->mutable_intake()->mutate_unsafe_goal(
       avoidance.kIntakeOutAngle + avoidance.kEpsIntake);
 
   // sets the status position messgaes
-  status_.mutable_message()->mutable_wrist()->mutate_position ( 0.0);
-  status_.mutable_message()->mutable_elevator()->mutate_position ( 0.0);
-  status_.mutable_message()->mutable_intake()->mutate_position (
+  status_.mutable_message()->mutable_wrist()->mutate_position(0.0);
+  status_.mutable_message()->mutable_elevator()->mutate_position(0.0);
+  status_.mutable_message()->mutable_intake()->mutate_position(
       avoidance.kIntakeOutAngle + avoidance.kEpsIntake);
 
   Iterate();
@@ -484,7 +482,7 @@
 }
 
 INSTANTIATE_TEST_SUITE_P(CollisionAvoidancePieceTest, CollisionAvoidanceTests,
-                        ::testing::Bool());
+                         ::testing::Bool());
 
 }  // namespace testing
 }  // namespace superstructure
diff --git a/y2019/control_loops/superstructure/superstructure.h b/y2019/control_loops/superstructure/superstructure.h
index f86d64c..f8ad0fd 100644
--- a/y2019/control_loops/superstructure/superstructure.h
+++ b/y2019/control_loops/superstructure/superstructure.h
@@ -1,8 +1,8 @@
 #ifndef Y2019_CONTROL_LOOPS_SUPERSTRUCTURE_SUPERSTRUCTURE_H_
 #define Y2019_CONTROL_LOOPS_SUPERSTRUCTURE_SUPERSTRUCTURE_H_
 
-#include "frc971/control_loops/control_loop.h"
 #include "aos/events/event_loop.h"
+#include "frc971/control_loops/control_loop.h"
 #include "frc971/control_loops/drivetrain/drivetrain_status_generated.h"
 #include "frc971/control_loops/static_zeroing_single_dof_profiled_subsystem.h"
 #include "y2019/constants.h"
diff --git a/y2019/control_loops/superstructure/superstructure_lib_test.cc b/y2019/control_loops/superstructure/superstructure_lib_test.cc
index 4e51086..a09913b 100644
--- a/y2019/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2019/control_loops/superstructure/superstructure_lib_test.cc
@@ -3,12 +3,13 @@
 #include <chrono>
 #include <memory>
 
+#include "glog/logging.h"
+#include "gtest/gtest.h"
+
 #include "frc971/control_loops/capped_test_plant.h"
 #include "frc971/control_loops/control_loop_test.h"
 #include "frc971/control_loops/position_sensor_sim.h"
 #include "frc971/control_loops/team_number_test_environment.h"
-#include "glog/logging.h"
-#include "gtest/gtest.h"
 #include "y2019/constants.h"
 #include "y2019/control_loops/superstructure/elevator/elevator_plant.h"
 #include "y2019/control_loops/superstructure/intake/intake_plant.h"
@@ -503,8 +504,7 @@
     goal_builder.add_intake(intake_offset);
     goal_builder.add_stilts(stilts_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(10));
   VerifyNearGoal();
@@ -553,8 +553,7 @@
     goal_builder.add_intake(intake_offset);
     goal_builder.add_stilts(stilts_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   // Give it a lot of time to get there.
@@ -597,8 +596,7 @@
     goal_builder.add_intake(intake_offset);
     goal_builder.add_stilts(stilts_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
   RunFor(chrono::seconds(8));
   VerifyNearGoal();
@@ -635,8 +633,7 @@
     goal_builder.add_intake(intake_offset);
     goal_builder.add_stilts(stilts_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
   superstructure_plant_.set_peak_elevator_velocity(23.0);
   superstructure_plant_.set_peak_elevator_acceleration(0.2);
@@ -688,8 +685,7 @@
     goal_builder.add_intake(intake_offset);
     goal_builder.add_stilts(stilts_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
   WaitUntilZeroed();
   VerifyNearGoal();
@@ -750,8 +746,7 @@
     goal_builder.add_intake(intake_offset);
     goal_builder.add_stilts(stilts_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   // Give it a lot of time to get there.
@@ -791,8 +786,7 @@
     goal_builder.add_stilts(stilts_offset);
     goal_builder.add_roller_voltage(6.0);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(5));
@@ -827,8 +821,7 @@
     goal_builder.add_stilts(stilts_offset);
     goal_builder.add_roller_voltage(6.0);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   RunFor(chrono::seconds(5));
@@ -870,8 +863,7 @@
     goal_builder.add_stilts(stilts_offset);
     goal_builder.add_suction(suction_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   RunFor(Vacuum::kTimeAtHigherVoltage - chrono::milliseconds(10));
@@ -915,8 +907,7 @@
     goal_builder.add_stilts(stilts_offset);
     goal_builder.add_suction(suction_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   // Verify that at 0 pressure after short time voltage is still high
@@ -966,8 +957,7 @@
     goal_builder.add_stilts(stilts_offset);
     goal_builder.add_suction(suction_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   // Get a Gamepiece
@@ -1004,8 +994,7 @@
     goal_builder.add_stilts(stilts_offset);
     goal_builder.add_suction(suction_offset);
 
-    ASSERT_EQ(builder.Send(goal_builder.Finish()),
-              aos::RawSender::Error::kOk);
+    ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
   }
 
   superstructure_plant_.set_simulated_pressure(1.0);
diff --git a/y2019/control_loops/superstructure/superstructure_main.cc b/y2019/control_loops/superstructure/superstructure_main.cc
index 5dc1542..35c140c 100644
--- a/y2019/control_loops/superstructure/superstructure_main.cc
+++ b/y2019/control_loops/superstructure/superstructure_main.cc
@@ -1,7 +1,6 @@
-#include "y2019/control_loops/superstructure/superstructure.h"
-
 #include "aos/events/shm_event_loop.h"
 #include "aos/init.h"
+#include "y2019/control_loops/superstructure/superstructure.h"
 
 int main(int argc, char **argv) {
   ::aos::InitGoogle(&argc, &argv);
diff --git a/y2019/control_loops/superstructure/vacuum.cc b/y2019/control_loops/superstructure/vacuum.cc
index 6d4696b..fda123e 100644
--- a/y2019/control_loops/superstructure/vacuum.cc
+++ b/y2019/control_loops/superstructure/vacuum.cc
@@ -44,7 +44,6 @@
     last_disable_has_piece_time_ = monotonic_now;
   }
 
-
   // If we've had the piece for enough time, go to lower pump_voltage
   low_pump_voltage = *has_piece && filtered_pressure_ < kVacuumOnThreshold;
 
@@ -64,7 +63,8 @@
     if (unsafe_goal->grab_piece() && unsafe_goal->gamepiece_mode() == 0) {
       output->intake_suction_top = false;
       output->intake_suction_bottom = true;
-    } else if (unsafe_goal->grab_piece() && unsafe_goal->gamepiece_mode() == 1) {
+    } else if (unsafe_goal->grab_piece() &&
+               unsafe_goal->gamepiece_mode() == 1) {
       output->intake_suction_top = true;
       output->intake_suction_bottom = true;
     } else {
