diff --git a/y2016/joystick_reader.cc b/y2016/joystick_reader.cc
index 450eaa1..32a48b4 100644
--- a/y2016/joystick_reader.cc
+++ b/y2016/joystick_reader.cc
@@ -111,6 +111,7 @@
       // If we got enabled, wait for everything to zero.
       LOG(INFO, "Waiting for zero.\n");
       waiting_for_zero_ = true;
+      is_high_gear_ = true;
     }
 
     superstructure_queue.status.FetchLatest();
@@ -128,23 +129,36 @@
       waiting_for_zero_ = true;
     }
 
-    // TODO(robot bringup): Populate these with test goals.
-    if (data.PosEdge(kTest1)) {
+    if (data.IsPressed(kTest1)) {
+      intake_goal_ = 0.0;
+    } else {
+      intake_goal_ = 1.6;
     }
 
-    if (data.PosEdge(kTest2)) {
+    if (data.IsPressed(kTest2)) {
+      shoulder_goal_ = M_PI / 2.0;
+    } else {
+      shoulder_goal_ = 0.0;
     }
 
-    if (data.PosEdge(kTest3)) {
+    if (data.IsPressed(kTest3)) {
+      wrist_goal_ = 0.0;
+    } else {
+      wrist_goal_ = -0.4;
     }
 
-    if (data.PosEdge(kTest4)) {
+    is_intaking_ = data.IsPressed(kTest4);
+
+    if (data.IsPressed(kTest5)) {
+      shooter_velocity_ = 600.0;
+    } else {
+      shooter_velocity_ = 0.0;
     }
 
-    if (data.PosEdge(kTest5)) {
-    }
-
-    if (data.PosEdge(kTest6)) {
+    if (data.IsPressed(kTest6)) {
+      fire_ = true;
+    } else {
+      fire_ = false;
     }
 
     if (data.PosEdge(kTest7)) {
@@ -159,14 +173,19 @@
         new_superstructure_goal->angle_intake = intake_goal_;
         new_superstructure_goal->angle_shoulder = shoulder_goal_;
         new_superstructure_goal->angle_wrist = wrist_goal_;
-        new_superstructure_goal->max_angular_velocity_intake = 0.1;
-        new_superstructure_goal->max_angular_velocity_shoulder = 0.1;
-        new_superstructure_goal->max_angular_velocity_wrist = 0.1;
-        new_superstructure_goal->max_angular_acceleration_intake = 0.05;
-        new_superstructure_goal->max_angular_acceleration_shoulder = 0.05;
-        new_superstructure_goal->max_angular_acceleration_wrist = 0.05;
-        new_superstructure_goal->voltage_top_rollers = 0.0;
-        new_superstructure_goal->voltage_bottom_rollers = 0.0;
+        new_superstructure_goal->max_angular_velocity_intake = 4.0;
+        new_superstructure_goal->max_angular_velocity_shoulder = 1.0;
+        new_superstructure_goal->max_angular_velocity_wrist = 1.0;
+        new_superstructure_goal->max_angular_acceleration_intake = 5.0;
+        new_superstructure_goal->max_angular_acceleration_shoulder = 3.0;
+        new_superstructure_goal->max_angular_acceleration_wrist = 3.0;
+        if (is_intaking_) {
+          new_superstructure_goal->voltage_top_rollers = 12.0;
+          new_superstructure_goal->voltage_bottom_rollers = 6.0;
+        } else {
+          new_superstructure_goal->voltage_top_rollers = 0.0;
+          new_superstructure_goal->voltage_bottom_rollers = 0.0;
+        }
 
         if (!new_superstructure_goal.Send()) {
           LOG(ERROR, "Sending superstructure goal failed.\n");
@@ -176,9 +195,9 @@
         }
 
         if (!shooter_queue.goal.MakeWithBuilder()
-                 .angular_velocity(0.0)
-                 .clamp_open(false)
-                 .push_to_shooter(false)
+                 .angular_velocity(shooter_velocity_)
+                 .clamp_open(is_intaking_)
+                 .push_to_shooter(fire_)
                  .Send()) {
           LOG(ERROR, "Sending shooter goal failed.\n");
         }
@@ -204,6 +223,7 @@
   double intake_goal_;
   double shoulder_goal_;
   double wrist_goal_;
+  double shooter_velocity_ = 0.0;
 
   bool was_running_ = false;
   bool auto_running_ = false;
@@ -211,6 +231,9 @@
   // If we're waiting for the subsystems to zero.
   bool waiting_for_zero_ = true;
 
+  bool is_intaking_ = false;
+  bool fire_ = false;
+
   ::aos::common::actions::ActionQueue action_queue_;
 
   ::aos::util::SimpleLogInterval no_drivetrain_status_ =
