diff --git a/y2017/control_loops/superstructure/BUILD b/y2017/control_loops/superstructure/BUILD
index fa835c1..a7c75ac 100644
--- a/y2017/control_loops/superstructure/BUILD
+++ b/y2017/control_loops/superstructure/BUILD
@@ -63,7 +63,7 @@
         ":superstructure_position_fbs",
         ":superstructure_status_fbs",
         ":vision_distance_average",
-        "//aos/controls:control_loop",
+        "//frc971/control_loops:control_loop",
         "//aos/events:event_loop",
         "//y2017:constants",
         "//y2017/control_loops/superstructure/column",
@@ -87,7 +87,7 @@
         ":superstructure_position_fbs",
         ":superstructure_status_fbs",
         "//aos:math",
-        "//aos/controls:control_loop_test",
+        "//frc971/control_loops:control_loop_test",
         "//aos/testing:googletest",
         "//aos/time",
         "//frc971/control_loops:position_sensor_sim",
diff --git a/y2017/control_loops/superstructure/column/BUILD b/y2017/control_loops/superstructure/column/BUILD
index 498579e..2d83482 100644
--- a/y2017/control_loops/superstructure/column/BUILD
+++ b/y2017/control_loops/superstructure/column/BUILD
@@ -48,7 +48,7 @@
         ":column_plants",
         ":column_zeroing",
         "//aos:math",
-        "//aos/controls:control_loop",
+        "//frc971/control_loops:control_loop",
         "//frc971/control_loops:profiled_subsystem",
         "//y2017:constants",
         "//y2017/control_loops/superstructure:superstructure_position_fbs",
diff --git a/y2017/control_loops/superstructure/column/column.cc b/y2017/control_loops/superstructure/column/column.cc
index f1aea39..d5e2611 100644
--- a/y2017/control_loops/superstructure/column/column.cc
+++ b/y2017/control_loops/superstructure/column/column.cc
@@ -6,7 +6,6 @@
 #include <utility>
 
 #include "Eigen/Dense"
-
 #include "aos/commonmath.h"
 #include "frc971/constants.h"
 #include "frc971/control_loops/profiled_subsystem.h"
@@ -48,7 +47,7 @@
           ::std::move(loop), {{zeroing_constants}}),
       stuck_indexer_detector_(new StateFeedbackLoop<6, 2, 2>(
           column::MakeStuckIntegralColumnLoop())),
-      profile_(::aos::controls::kLoopFrequency),
+      profile_(::frc971::controls::kLoopFrequency),
       range_(range),
       default_velocity_(default_velocity),
       default_acceleration_(default_acceleration) {
@@ -128,7 +127,7 @@
 
   indexer_dt_velocity_ =
       (new_position.indexer()->encoder() - indexer_last_position_) /
-      ::aos::time::DurationInSeconds(::aos::controls::kLoopFrequency);
+      ::aos::time::DurationInSeconds(::frc971::controls::kLoopFrequency);
   indexer_last_position_ = new_position.indexer()->encoder();
 
   stuck_indexer_detector_->Correct(Y_);
@@ -143,7 +142,7 @@
   indexer_average_angular_velocity_ =
       (indexer_history_[indexer_oldest_history_position] -
        indexer_history_[indexer_history_position_]) /
-      (::aos::time::DurationInSeconds(::aos::controls::kLoopFrequency) *
+      (::aos::time::DurationInSeconds(::frc971::controls::kLoopFrequency) *
        static_cast<double>(kHistoryLength - 1));
 
   // Ready if average angular velocity is close to the goal.
@@ -253,7 +252,7 @@
         profile_.Update(unprofiled_goal_(2, 0), unprofiled_goal_(3, 0));
 
     constexpr double kDt =
-        ::aos::time::DurationInSeconds(::aos::controls::kLoopFrequency);
+        ::aos::time::DurationInSeconds(::frc971::controls::kLoopFrequency);
 
     loop_->mutable_next_R(0, 0) = 0.0;
     // TODO(austin): This might not handle saturation right, but I'm not sure I
@@ -287,7 +286,7 @@
 
   // Run the KF predict step.
   stuck_indexer_detector_->UpdateObserver(loop_->U(),
-                                          ::aos::controls::kLoopFrequency);
+                                          ::frc971::controls::kLoopFrequency);
 }
 
 bool ColumnProfiledSubsystem::CheckHardLimits() {
@@ -382,7 +381,7 @@
   status_builder->add_voltage_error(X_hat(5, 0));
   status_builder->add_calculated_velocity(
       (turret_position() - turret_last_position_) /
-      ::aos::time::DurationInSeconds(::aos::controls::kLoopFrequency));
+      ::aos::time::DurationInSeconds(::frc971::controls::kLoopFrequency));
 
   status_builder->add_estimator_state(estimator_state_offset);
 
@@ -558,8 +557,7 @@
       if (unsafe_turret_goal && unsafe_indexer_goal) {
         profiled_subsystem_.AdjustProfile(unsafe_turret_goal->profile_params());
         profiled_subsystem_.set_unprofiled_goal(
-            unsafe_indexer_goal->angular_velocity,
-            unsafe_turret_goal->angle());
+            unsafe_indexer_goal->angular_velocity, unsafe_turret_goal->angle());
 
         if (unsafe_turret_goal->track()) {
           if (vision_time_adjuster_.valid()) {
diff --git a/y2017/control_loops/superstructure/shooter/BUILD b/y2017/control_loops/superstructure/shooter/BUILD
index 49fa341..cb351c9 100644
--- a/y2017/control_loops/superstructure/shooter/BUILD
+++ b/y2017/control_loops/superstructure/shooter/BUILD
@@ -45,7 +45,7 @@
     visibility = ["//visibility:public"],
     deps = [
         ":shooter_plants",
-        "//aos/controls:control_loop",
+        "//frc971/control_loops:control_loop",
         "//frc971/control_loops:control_loops_fbs",
         "//frc971/control_loops:profiled_subsystem_fbs",
         "//y2017/control_loops/superstructure:superstructure_goal_fbs",
diff --git a/y2017/control_loops/superstructure/shooter/shooter.cc b/y2017/control_loops/superstructure/shooter/shooter.cc
index 0ea4836..8a2dcb9 100644
--- a/y2017/control_loops/superstructure/shooter/shooter.cc
+++ b/y2017/control_loops/superstructure/shooter/shooter.cc
@@ -130,7 +130,7 @@
 
   wheel_.set_position(position);
 
-  chrono::nanoseconds dt = ::aos::controls::kLoopFrequency;
+  chrono::nanoseconds dt = ::frc971::controls::kLoopFrequency;
   if (last_time_ != ::aos::monotonic_clock::min_time) {
     dt = position_time - last_time_;
   }
diff --git a/y2017/control_loops/superstructure/shooter/shooter.h b/y2017/control_loops/superstructure/shooter/shooter.h
index 19fc7dd..afb627d 100644
--- a/y2017/control_loops/superstructure/shooter/shooter.h
+++ b/y2017/control_loops/superstructure/shooter/shooter.h
@@ -4,7 +4,7 @@
 #include <array>
 #include <memory>
 
-#include "aos/controls/control_loop.h"
+#include "frc971/control_loops/control_loop.h"
 #include "aos/time/time.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "Eigen/Dense"
diff --git a/y2017/control_loops/superstructure/superstructure.cc b/y2017/control_loops/superstructure/superstructure.cc
index a0448fd..c707653 100644
--- a/y2017/control_loops/superstructure/superstructure.cc
+++ b/y2017/control_loops/superstructure/superstructure.cc
@@ -23,8 +23,8 @@
 
 Superstructure::Superstructure(::aos::EventLoop *event_loop,
                                const ::std::string &name)
-    : aos::controls::ControlLoop<Goal, Position, Status, Output>(event_loop,
-                                                                 name),
+    : frc971::controls::ControlLoop<Goal, Position, Status, Output>(event_loop,
+                                                                    name),
       vision_status_fetcher_(
           event_loop->MakeFetcher<::y2017::vision::VisionStatus>("/vision")),
       drivetrain_status_fetcher_(
@@ -48,11 +48,10 @@
       });
 }
 
-void Superstructure::RunIteration(
-    const Goal *unsafe_goal,
-    const Position *position,
-    aos::Sender<Output>::Builder *output,
-    aos::Sender<Status>::Builder *status) {
+void Superstructure::RunIteration(const Goal *unsafe_goal,
+                                  const Position *position,
+                                  aos::Sender<Output>::Builder *output,
+                                  aos::Sender<Status>::Builder *status) {
   OutputT output_struct;
   const ::aos::monotonic_clock::time_point monotonic_now =
       event_loop()->monotonic_now();
@@ -104,8 +103,8 @@
     if (distance_average_.Valid()) {
       if (unsafe_goal->use_vision_for_shots()) {
         ShotParams shot_params;
-        if (shot_interpolation_table_.GetInRange(
-                distance_average_.Get(), &shot_params)) {
+        if (shot_interpolation_table_.GetInRange(distance_average_.Get(),
+                                                 &shot_params)) {
           hood_goal_angle = shot_params.angle;
           shooter_goal.angular_velocity = shot_params.power;
           if (indexer_goal.angular_velocity != 0.0) {
@@ -115,10 +114,10 @@
           in_range = false;
         }
       }
-      AOS_LOG(
-          DEBUG, "VisionDistance %f, hood %f shooter %f, indexer %f * M_PI\n",
-          vision_distance, hood_goal_angle,
-          shooter_goal.angular_velocity, indexer_goal.angular_velocity / M_PI);
+      AOS_LOG(DEBUG,
+              "VisionDistance %f, hood %f shooter %f, indexer %f * M_PI\n",
+              vision_distance, hood_goal_angle, shooter_goal.angular_velocity,
+              indexer_goal.angular_velocity / M_PI);
     } else {
       AOS_LOG(DEBUG, "VisionNotValid %f\n", vision_distance);
       if (unsafe_goal->use_vision_for_shots()) {
diff --git a/y2017/control_loops/superstructure/superstructure.h b/y2017/control_loops/superstructure/superstructure.h
index a4c824e..ae52dae 100644
--- a/y2017/control_loops/superstructure/superstructure.h
+++ b/y2017/control_loops/superstructure/superstructure.h
@@ -3,7 +3,7 @@
 
 #include <memory>
 
-#include "aos/controls/control_loop.h"
+#include "frc971/control_loops/control_loop.h"
 #include "aos/events/event_loop.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "y2017/control_loops/superstructure/column/column.h"
@@ -21,7 +21,7 @@
 namespace superstructure {
 
 class Superstructure
-    : public ::aos::controls::ControlLoop<Goal, Position, Status, Output> {
+    : public ::frc971::controls::ControlLoop<Goal, Position, Status, Output> {
  public:
   explicit Superstructure(::aos::EventLoop *event_loop,
                           const ::std::string &name = "/superstructure");
diff --git a/y2017/control_loops/superstructure/superstructure_lib_test.cc b/y2017/control_loops/superstructure/superstructure_lib_test.cc
index 2722024..7690937 100644
--- a/y2017/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2017/control_loops/superstructure/superstructure_lib_test.cc
@@ -1,11 +1,9 @@
-#include "y2017/control_loops/superstructure/superstructure.h"
-
 #include <unistd.h>
 
 #include <chrono>
 #include <memory>
 
-#include "aos/controls/control_loop_test.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 "gtest/gtest.h"
@@ -14,6 +12,7 @@
 #include "y2017/control_loops/superstructure/hood/hood_plant.h"
 #include "y2017/control_loops/superstructure/intake/intake_plant.h"
 #include "y2017/control_loops/superstructure/shooter/shooter_plant.h"
+#include "y2017/control_loops/superstructure/superstructure.h"
 
 using ::frc971::control_loops::PositionSensorSimulator;
 
@@ -517,10 +516,10 @@
   double peak_hood_velocity_ = 1e10;
 };
 
-class SuperstructureTest : public ::aos::testing::ControlLoopTest {
+class SuperstructureTest : public ::frc971::testing::ControlLoopTest {
  protected:
   SuperstructureTest()
-      : ::aos::testing::ControlLoopTest(
+      : ::frc971::testing::ControlLoopTest(
             aos::configuration::ReadConfig("y2017/config.json"),
             chrono::microseconds(5050)),
         test_event_loop_(MakeEventLoop("test")),
@@ -566,20 +565,22 @@
     // Check that the angular velocity, average angular velocity, and estimated
     // angular velocity match when we are done for the shooter.
     EXPECT_NEAR(superstructure_goal_fetcher_->shooter()->angular_velocity(),
-                superstructure_status_fetcher_->shooter()->angular_velocity(), 0.1);
-    EXPECT_NEAR(superstructure_goal_fetcher_->shooter()->angular_velocity(),
-                superstructure_status_fetcher_->shooter()->avg_angular_velocity(),
+                superstructure_status_fetcher_->shooter()->angular_velocity(),
                 0.1);
+    EXPECT_NEAR(
+        superstructure_goal_fetcher_->shooter()->angular_velocity(),
+        superstructure_status_fetcher_->shooter()->avg_angular_velocity(), 0.1);
     EXPECT_NEAR(superstructure_goal_fetcher_->shooter()->angular_velocity(),
                 superstructure_plant_.shooter_velocity(), 0.1);
 
     // Check that the angular velocity, average angular velocity, and estimated
     // angular velocity match when we are done for the indexer.
     EXPECT_NEAR(superstructure_goal_fetcher_->indexer()->angular_velocity(),
-                superstructure_status_fetcher_->indexer()->angular_velocity(), 0.1);
-    EXPECT_NEAR(superstructure_goal_fetcher_->indexer()->angular_velocity(),
-                superstructure_status_fetcher_->indexer()->avg_angular_velocity(),
+                superstructure_status_fetcher_->indexer()->angular_velocity(),
                 0.1);
+    EXPECT_NEAR(
+        superstructure_goal_fetcher_->indexer()->angular_velocity(),
+        superstructure_status_fetcher_->indexer()->avg_angular_velocity(), 0.1);
     EXPECT_NEAR(superstructure_goal_fetcher_->indexer()->angular_velocity(),
                 superstructure_plant_.indexer_velocity(), 0.1);
   }
