diff --git a/y2016/control_loops/superstructure/superstructure.cc b/y2016/control_loops/superstructure/superstructure.cc
index bf4d3b5..c7127cc 100644
--- a/y2016/control_loops/superstructure/superstructure.cc
+++ b/y2016/control_loops/superstructure/superstructure.cc
@@ -327,7 +327,7 @@
                            unsafe_goal->max_angular_acceleration_shoulder,
                            unsafe_goal->max_angular_velocity_wrist,
                            unsafe_goal->max_angular_acceleration_wrist);
-        intake_.AdjustProfile(unsafe_goal->max_angular_velocity_wrist,
+        intake_.AdjustProfile(unsafe_goal->max_angular_velocity_intake,
                               unsafe_goal->max_angular_acceleration_intake);
 
         arm_.set_unprofiled_goal(unsafe_goal->angle_shoulder,
diff --git a/y2016/control_loops/superstructure/superstructure_lib_test.cc b/y2016/control_loops/superstructure/superstructure_lib_test.cc
index cdb94f5..14dc0e1 100644
--- a/y2016/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2016/control_loops/superstructure/superstructure_lib_test.cc
@@ -634,9 +634,9 @@
                   .max_angular_acceleration_wrist(1)
                   .Send());
 
-  // TODO(austin): We should be able to hold the acceleration profile tighter
-  // than this, but we somehow can't.  I'm not super worried though about 5%
-  // error...
+  // TODO(austin): The profile isn't feasible, so when we try to track it, we
+  // have trouble going from the acceleration step to the constant velocity
+  // step.  We end up under and then overshooting.
   set_peak_intake_acceleration(1.05);
   set_peak_shoulder_acceleration(1.05);
   set_peak_wrist_acceleration(1.05);
@@ -676,9 +676,6 @@
                   .max_angular_acceleration_wrist(1)
                   .Send());
 
-  // TODO(austin): We should be able to hold the acceleration profile tighter
-  // than this, but we somehow can't.  I'm not super worried though about 5%
-  // error...
   set_peak_intake_acceleration(1.05);
   set_peak_shoulder_acceleration(1.05);
   set_peak_wrist_acceleration(1.05);
@@ -718,9 +715,6 @@
                   .max_angular_acceleration_wrist(1)
                   .Send());
 
-  // TODO(austin): We should be able to hold the acceleration profile tighter
-  // than this, but we somehow can't.  I'm not super worried though about 5%
-  // error...
   set_peak_intake_acceleration(1.05);
   set_peak_shoulder_acceleration(1.05);
   set_peak_wrist_acceleration(1.05);
@@ -729,6 +723,126 @@
   VerifyNearGoal();
 }
 
+// Tests that the loop respects intake handles saturation while accelerating
+// correctly.
+TEST_F(SuperstructureTest, SaturatedIntakeProfileTest) {
+  ASSERT_TRUE(superstructure_queue_.goal.MakeWithBuilder()
+                  .angle_intake(0.0)
+                  .angle_shoulder(1.0)
+                  .angle_wrist(0.0)
+                  .max_angular_velocity_intake(20)
+                  .max_angular_acceleration_intake(20)
+                  .max_angular_velocity_shoulder(20)
+                  .max_angular_acceleration_shoulder(20)
+                  .max_angular_velocity_wrist(20)
+                  .max_angular_acceleration_wrist(20)
+                  .Send());
+
+  RunForTime(Time::InSeconds(4));
+  EXPECT_EQ(Superstructure::RUNNING, superstructure_.state());
+
+  VerifyNearGoal();
+
+  ASSERT_TRUE(superstructure_queue_.goal.MakeWithBuilder()
+                  .angle_intake(0.5)
+                  .angle_shoulder(1.0)
+                  .angle_wrist(0.0)
+                  .max_angular_velocity_intake(4.5)
+                  .max_angular_acceleration_intake(800)
+                  .max_angular_velocity_shoulder(1)
+                  .max_angular_acceleration_shoulder(100)
+                  .max_angular_velocity_wrist(1)
+                  .max_angular_acceleration_wrist(100)
+                  .Send());
+
+  set_peak_intake_velocity(4.60);
+  set_peak_shoulder_velocity(1.00);
+  set_peak_wrist_velocity(1.00);
+  RunForTime(Time::InSeconds(4));
+
+  VerifyNearGoal();
+}
+
+// Tests that the loop respects shoulder handles saturation while accelerating
+// correctly.
+TEST_F(SuperstructureTest, SaturatedShoulderProfileTest) {
+  ASSERT_TRUE(superstructure_queue_.goal.MakeWithBuilder()
+                  .angle_intake(0.0)
+                  .angle_shoulder(1.0)
+                  .angle_wrist(0.0)
+                  .max_angular_velocity_intake(20)
+                  .max_angular_acceleration_intake(20)
+                  .max_angular_velocity_shoulder(20)
+                  .max_angular_acceleration_shoulder(20)
+                  .max_angular_velocity_wrist(20)
+                  .max_angular_acceleration_wrist(20)
+                  .Send());
+
+  RunForTime(Time::InSeconds(4));
+  EXPECT_EQ(Superstructure::RUNNING, superstructure_.state());
+
+  VerifyNearGoal();
+
+  ASSERT_TRUE(superstructure_queue_.goal.MakeWithBuilder()
+                  .angle_intake(0.0)
+                  .angle_shoulder(1.9)
+                  .angle_wrist(0.0)
+                  .max_angular_velocity_intake(1.0)
+                  .max_angular_acceleration_intake(1.0)
+                  .max_angular_velocity_shoulder(5.0)
+                  .max_angular_acceleration_shoulder(80)
+                  .max_angular_velocity_wrist(1)
+                  .max_angular_acceleration_wrist(100)
+                  .Send());
+
+  set_peak_intake_velocity(1.0);
+  set_peak_shoulder_velocity(5.5);
+  set_peak_wrist_velocity(1.0);
+  RunForTime(Time::InSeconds(4));
+
+  VerifyNearGoal();
+}
+
+// Tests that the loop respects wrist handles saturation while accelerating
+// correctly.
+TEST_F(SuperstructureTest, SaturatedWristProfileTest) {
+  ASSERT_TRUE(superstructure_queue_.goal.MakeWithBuilder()
+                  .angle_intake(0.0)
+                  .angle_shoulder(1.0)
+                  .angle_wrist(0.0)
+                  .max_angular_velocity_intake(20)
+                  .max_angular_acceleration_intake(20)
+                  .max_angular_velocity_shoulder(20)
+                  .max_angular_acceleration_shoulder(20)
+                  .max_angular_velocity_wrist(20)
+                  .max_angular_acceleration_wrist(20)
+                  .Send());
+
+  RunForTime(Time::InSeconds(4));
+  EXPECT_EQ(Superstructure::RUNNING, superstructure_.state());
+
+  VerifyNearGoal();
+
+  ASSERT_TRUE(superstructure_queue_.goal.MakeWithBuilder()
+                  .angle_intake(0.0)
+                  .angle_shoulder(1.0)
+                  .angle_wrist(1.9)
+                  .max_angular_velocity_intake(1.0)
+                  .max_angular_acceleration_intake(1.0)
+                  .max_angular_velocity_shoulder(1.0)
+                  .max_angular_acceleration_shoulder(1.0)
+                  .max_angular_velocity_wrist(10.0)
+                  .max_angular_acceleration_wrist(160.0)
+                  .Send());
+
+  set_peak_intake_velocity(1.0);
+  set_peak_shoulder_velocity(1.0);
+  set_peak_wrist_velocity(10.2);
+  RunForTime(Time::InSeconds(4));
+
+  VerifyNearGoal();
+}
+
 }  // namespace testing
 }  // namespace superstructure
 }  // namespace control_loops
