diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 42f0935..63caaab 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -257,7 +257,7 @@
 
   dt_openloop_.SetPosition(position, left_gear_, right_gear_);
 
-  ControllerType controller_type = ControllerType_POLYDRIVE;
+  ControllerType controller_type = ControllerType::POLYDRIVE;
   if (goal) {
     controller_type = goal->controller_type();
 
@@ -271,7 +271,7 @@
   dt_openloop_.Update(robot_state().voltage_battery());
 
   dt_closedloop_.Update(output != nullptr &&
-                        controller_type == ControllerType_MOTION_PROFILE);
+                        controller_type == ControllerType::MOTION_PROFILE);
 
   const Eigen::Matrix<double, 5, 1> trajectory_state =
       (Eigen::Matrix<double, 5, 1>() << localizer_->x(), localizer_->y(),
@@ -280,7 +280,7 @@
           .finished();
 
   dt_spline_.Update(
-      output != nullptr && controller_type == ControllerType_SPLINE_FOLLOWER,
+      output != nullptr && controller_type == ControllerType::SPLINE_FOLLOWER,
       trajectory_state);
 
   dt_line_follow_.Update(monotonic_now, trajectory_state);
@@ -288,16 +288,16 @@
   OutputT output_struct;
 
   switch (controller_type) {
-    case ControllerType_POLYDRIVE:
+    case ControllerType::POLYDRIVE:
       dt_openloop_.SetOutput(output != nullptr ? &output_struct : nullptr);
       break;
-    case ControllerType_MOTION_PROFILE:
+    case ControllerType::MOTION_PROFILE:
       dt_closedloop_.SetOutput(output != nullptr ? &output_struct : nullptr);
       break;
-    case ControllerType_SPLINE_FOLLOWER:
+    case ControllerType::SPLINE_FOLLOWER:
       dt_spline_.SetOutput(output != nullptr ? &output_struct : nullptr);
       break;
-    case ControllerType_LINE_FOLLOWER:
+    case ControllerType::LINE_FOLLOWER:
       if (!dt_line_follow_.SetOutput(output != nullptr ? &output_struct
                                                        : nullptr)) {
         // If the line follow drivetrain was unable to execute (generally due to
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index 05b870b..3b668dd 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -93,8 +93,7 @@
       RunFor(dt());
       EXPECT_TRUE(drivetrain_status_fetcher_.Fetch());
     } while (CHECK_NOTNULL(drivetrain_status_fetcher_->trajectory_logging())
-                 ->planning_state() !=
-             (int8_t)SplineDrivetrain::PlanState::kPlannedTrajectory);
+                 ->planning_state() != PlanningState::PLANNED);
   }
 
   void WaitForTrajectoryExecution() {
@@ -132,7 +131,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -148,7 +147,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -164,7 +163,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -194,7 +193,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(4.0);
     goal_builder.add_right_goal(4.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -218,7 +217,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(4.0);
     goal_builder.add_right_goal(3.9);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -277,7 +276,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(4.0);
     goal_builder.add_right_goal(4.0);
     goal_builder.add_linear(linear_offset);
@@ -318,7 +317,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     goal_builder.add_linear(linear_offset);
@@ -359,7 +358,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(5.0);
     goal_builder.add_right_goal(4.0);
     goal_builder.add_linear(linear_offset);
@@ -381,7 +380,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_POLYDRIVE);
+    goal_builder.add_controller_type(ControllerType::POLYDRIVE);
     goal_builder.add_wheel(0.0);
     goal_builder.add_throttle(1.0);
     goal_builder.add_highgear(true);
@@ -394,7 +393,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_POLYDRIVE);
+    goal_builder.add_controller_type(ControllerType::POLYDRIVE);
     goal_builder.add_wheel(0.0);
     goal_builder.add_throttle(-0.3);
     goal_builder.add_highgear(true);
@@ -407,7 +406,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_POLYDRIVE);
+    goal_builder.add_controller_type(ControllerType::POLYDRIVE);
     goal_builder.add_wheel(0.0);
     goal_builder.add_throttle(0.0);
     goal_builder.add_highgear(true);
@@ -434,7 +433,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(5.0);
     goal_builder.add_right_goal(4.0);
     goal_builder.add_linear(linear_offset);
@@ -483,7 +482,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -493,7 +492,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -532,7 +531,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -541,7 +540,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -597,7 +596,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -637,7 +636,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -655,7 +654,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -700,7 +699,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -718,7 +717,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -728,7 +727,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -773,7 +772,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -782,7 +781,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -822,7 +821,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -831,7 +830,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -872,7 +871,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -881,7 +880,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -920,7 +919,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -929,7 +928,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -966,7 +965,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -976,7 +975,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1014,7 +1013,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1027,7 +1026,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1060,7 +1059,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1101,7 +1100,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1137,7 +1136,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1148,7 +1147,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1187,7 +1186,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1220,7 +1219,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1231,7 +1230,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1269,7 +1268,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1280,7 +1279,7 @@
     drivetrain_status_fetcher_.Fetch();
     EXPECT_EQ(CHECK_NOTNULL(drivetrain_status_fetcher_->trajectory_logging())
                   ->planning_state(),
-              3);
+              PlanningState::PLANNED);
     ::std::this_thread::sleep_for(::std::chrono::milliseconds(2));
   }
   VerifyNearSplineGoal();
@@ -1315,7 +1314,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1326,7 +1325,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1344,7 +1343,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_LINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::LINE_FOLLOWER);
     goal_builder.add_throttle(0.5);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1381,7 +1380,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_LINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::LINE_FOLLOWER);
     goal_builder.add_throttle(0.5);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
diff --git a/frc971/control_loops/drivetrain/line_follow_drivetrain.cc b/frc971/control_loops/drivetrain/line_follow_drivetrain.cc
index 7c92f8b..1e2c76f 100644
--- a/frc971/control_loops/drivetrain/line_follow_drivetrain.cc
+++ b/frc971/control_loops/drivetrain/line_follow_drivetrain.cc
@@ -115,7 +115,7 @@
   // Freeze the target once the driver presses the button; if we haven't yet
   // confirmed a target when the driver presses the button, we will not do
   // anything and report not ready until we have a target.
-  if (goal->controller_type() == drivetrain::ControllerType_LINE_FOLLOWER) {
+  if (goal->controller_type() == drivetrain::ControllerType::LINE_FOLLOWER) {
     last_enable_ = now;
     // If we already acquired a target, we want to keep track if it.
     if (have_target_) {
diff --git a/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc b/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc
index bd45e92..180af4b 100644
--- a/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc
+++ b/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc
@@ -55,8 +55,8 @@
     Goal::Builder goal_builder(fbb);
     goal_builder.add_throttle(driver_model_(state_));
     goal_builder.add_controller_type(freeze_target_
-                                         ? ControllerType_LINE_FOLLOWER
-                                         : ControllerType_POLYDRIVE);
+                                         ? ControllerType::LINE_FOLLOWER
+                                         : ControllerType::POLYDRIVE);
     fbb.Finish(goal_builder.Finish());
 
     aos::FlatbufferDetachedBuffer<Goal> goal(fbb.Release());
diff --git a/frc971/control_loops/drivetrain/splinedrivetrain.cc b/frc971/control_loops/drivetrain/splinedrivetrain.cc
index bfd0c96..2790978 100644
--- a/frc971/control_loops/drivetrain/splinedrivetrain.cc
+++ b/frc971/control_loops/drivetrain/splinedrivetrain.cc
@@ -42,7 +42,7 @@
     past_distance_spline_.reset();
     past_trajectory_.reset();
 
-    plan_state_ = PlanningState_BUILDING_TRAJECTORY;
+    plan_state_ = PlanningState::BUILDING_TRAJECTORY;
     future_spline_idx_ = goal_.spline_idx;
     planning_spline_idx_ = future_spline_idx_;
     const MultiSpline &multispline = goal_.spline;
@@ -70,28 +70,28 @@
     for (size_t i = 0; i < multispline.constraints.size(); ++i) {
       const ::frc971::ConstraintT &constraint = multispline.constraints[i];
       switch (constraint.constraint_type) {
-        case frc971::ConstraintType_CONSTRAINT_TYPE_UNDEFINED:
+        case frc971::ConstraintType::CONSTRAINT_TYPE_UNDEFINED:
           break;
-        case frc971::ConstraintType_LONGITUDINAL_ACCELERATION:
+        case frc971::ConstraintType::LONGITUDINAL_ACCELERATION:
           future_trajectory_->set_longitudinal_acceleration(constraint.value);
           break;
-        case frc971::ConstraintType_LATERAL_ACCELERATION:
+        case frc971::ConstraintType::LATERAL_ACCELERATION:
           future_trajectory_->set_lateral_acceleration(constraint.value);
           break;
-        case frc971::ConstraintType_VOLTAGE:
+        case frc971::ConstraintType::VOLTAGE:
           future_trajectory_->set_voltage_limit(constraint.value);
           break;
-        case frc971::ConstraintType_VELOCITY:
+        case frc971::ConstraintType::VELOCITY:
           future_trajectory_->LimitVelocity(constraint.start_distance,
                                             constraint.end_distance,
                                             constraint.value);
           break;
       }
     }
-    plan_state_ = PlanningState_PLANNING_TRAJECTORY;
+    plan_state_ = PlanningState::PLANNING_TRAJECTORY;
 
     future_trajectory_->Plan();
-    plan_state_ = PlanningState_PLANNED;
+    plan_state_ = PlanningState::PLANNED;
   }
 }
 
@@ -137,7 +137,7 @@
               &goal_.spline.constraints[i]);
         } else {
           goal_.spline.constraints[i].constraint_type =
-              ConstraintType_CONSTRAINT_TYPE_UNDEFINED;
+              ConstraintType::CONSTRAINT_TYPE_UNDEFINED;
         }
       }
 
diff --git a/frc971/control_loops/drivetrain/splinedrivetrain.h b/frc971/control_loops/drivetrain/splinedrivetrain.h
index 4f21b29..b28334c 100644
--- a/frc971/control_loops/drivetrain/splinedrivetrain.h
+++ b/frc971/control_loops/drivetrain/splinedrivetrain.h
@@ -95,7 +95,7 @@
   bool enable_ = false;
   bool output_was_capped_ = false;
 
-  std::atomic<PlanningState> plan_state_ = {PlanningState_NO_PLAN};
+  std::atomic<PlanningState> plan_state_ = {PlanningState::NO_PLAN};
 
   ::std::thread worker_thread_;
   // mutex_ is held by the worker thread while it is doing work or by the main
