diff --git a/y2017/control_loops/intake/intake.q b/y2017/control_loops/intake/intake.q
deleted file mode 100644
index a8900b9..0000000
--- a/y2017/control_loops/intake/intake.q
+++ /dev/null
@@ -1,81 +0,0 @@
-package y2017.control_loops;
-
-import "aos/common/controls/control_loops.q";
-import "frc971/control_loops/control_loops.q";
-
-struct JointState {
-  // Distance of the joint, in m, from absolute zero.
-  float distance;
-  // Linear velocity of the joint in meters/second.
-  float linear_velocity;
-  // Profiled goal distance of the joint in meters.
-  float goal_distance;
-  // Profiled goal linear velocity of the joint in meters/second.
-  float goal_linear_velocity;
-  // Unprofiled goal distance from absoulte zero  of the joint in meters.
-  float unprofiled_goal_distance;
-  // Unprofiled goal linear velocity of the joint in meters/second.
-  float unprofiled_goal_linear_velocity;
-
-  // The estimated voltage error.
-  float voltage_error;
-
-  // The calculated velocity with delta x/delta t
-  float calculated_velocity;
-
-  // Components of the control loop output
-  float position_power;
-  float velocity_power;
-  float feedforwards_power;
-
-  // State of the estimator.
-  .frc971.EstimatorState estimator_state;
-};
-
-queue_group IntakeQueue {
-  implements aos.control_loops.ControlLoop;
-
-  message Goal {
-    // Zero on the intake is when the intake is retracted inside the robot,
-    // unable to intake. Positive is out.
-
-    // Goal distance of the intake.
-    double distance_intake;
-
-    // Caps on velocity/acceleration for profiling. 0 for the default.
-    .frc971.ProfileParameters profile_params_intake;
-
-    // Voltage to send to the rollers. Positive is sucking in.
-    float voltage_rollers;
-  };
-
-  message Status {
-    // Is the intake zeroed?
-    bool zeroed;
-
-    // If true, we have aborted.
-    bool estopped;
-
-    // Estimate angles and angular velocities.
-    JointState intake;
-  };
-
-  message Position {
-    // Position of the intake, zero when the intake is in, positive when it is
-    // out.
-    .frc971.PotAndAbsolutePosition intake;
-  };
-
-  message Output {
-    float voltage_intake;
-
-    float voltage_rollers;
-  };
-
-  queue Goal goal;
-  queue Position position;
-  queue Output output;
-  queue Status status;
-};
-
-queue_group IntakeQueue intake_queue;
diff --git a/y2017/control_loops/serializer/BUILD b/y2017/control_loops/serializer/BUILD
deleted file mode 100644
index 5960fdd..0000000
--- a/y2017/control_loops/serializer/BUILD
+++ /dev/null
@@ -1,13 +0,0 @@
-load('/aos/build/queues', 'queue_library')
-
-queue_library(
-  name = 'serializer_queue',
-  srcs = [
-    'serializer.q',
-  ],
-  deps = [
-    '//aos/common/controls:control_loop_queues',
-    '//frc971/control_loops:queues',
-  ],
-  visibility = ['//visibility:public'],
-)
diff --git a/y2017/control_loops/serializer/serializer.q b/y2017/control_loops/serializer/serializer.q
deleted file mode 100644
index 7e3620a..0000000
--- a/y2017/control_loops/serializer/serializer.q
+++ /dev/null
@@ -1,46 +0,0 @@
-package y2017.control_loops.serializer;
-
-import "aos/common/controls/control_loops.q";
-import "frc971/control_loops/control_loops.q";
-
-queue_group SerializerQueue {
-  implements aos.control_loops.ControlLoop;
-
-  // All angles are in radians, and angular velocities are in radians/second.
-  // For all angular velocities, positive is moving balls up towards the
-  // shooter.
-
-  message Goal {
-    // Angular velocity goals in radians/second.
-    double angular_velocity;
-  };
-
-  message Position {
-    // Serializer angle in radians.
-    double theta;
-  };
-
-  message Status {
-    // The current average velocity in radians/second.
-    double avg_angular_velocity;
-
-    // The current instantaneous filtered velocity in radians/second.
-    double angular_velocity;
-
-    // True if the shooter is ready.  It is better to compare the velocities
-    // directly so there isn't confusion on if the goal is up to date.
-    bool ready;
-  };
-
-  message Output {
-    // Voltage in volts of the shooter motor.
-    double voltage;
-  };
-
-  queue Goal goal;
-  queue Position position;
-  queue Output output;
-  queue Status status;
-};
-
-queue_group SerializerQueue shooter_queue;
diff --git a/y2017/control_loops/shooter/BUILD b/y2017/control_loops/shooter/BUILD
deleted file mode 100644
index a5c853e..0000000
--- a/y2017/control_loops/shooter/BUILD
+++ /dev/null
@@ -1,13 +0,0 @@
-load('/aos/build/queues', 'queue_library')
-
-queue_library(
-  name = 'shooter_queue',
-  srcs = [
-    'shooter.q',
-  ],
-  deps = [
-    '//aos/common/controls:control_loop_queues',
-    '//frc971/control_loops:queues',
-  ],
-  visibility = ['//visibility:public'],
-)
diff --git a/y2017/control_loops/shooter/shooter.q b/y2017/control_loops/shooter/shooter.q
deleted file mode 100644
index 768541d..0000000
--- a/y2017/control_loops/shooter/shooter.q
+++ /dev/null
@@ -1,45 +0,0 @@
-package y2017.control_loops.shooter;
-
-import "aos/common/controls/control_loops.q";
-import "frc971/control_loops/control_loops.q";
-
-queue_group ShooterQueue {
-  implements aos.control_loops.ControlLoop;
-
-  // All angles are in radians, and angular velocities are in radians/second.
-  // For all angular velocities, positive is shooting the ball out of the robot.
-
-  message Goal {
-    // Angular velocity goals in radians/second.
-    double angular_velocity;
-  };
-
-  message Position {
-    // Wheel angle in radians.
-    double theta;
-  };
-
-  message Status {
-    // The current average velocity in radians/second.
-    double avg_angular_velocity;
-
-    // The current instantaneous filtered velocity in radians/second.
-    double angular_velocity;
-
-    // True if the shooter is ready.  It is better to compare the velocities
-    // directly so there isn't confusion on if the goal is up to date.
-    bool ready;
-  };
-
-  message Output {
-    // Voltage in volts of the shooter motor.
-    double voltage;
-  };
-
-  queue Goal goal;
-  queue Position position;
-  queue Output output;
-  queue Status status;
-};
-
-queue_group ShooterQueue shooter_queue;
diff --git a/y2017/control_loops/intake/BUILD b/y2017/control_loops/superstructure/BUILD
similarity index 80%
rename from y2017/control_loops/intake/BUILD
rename to y2017/control_loops/superstructure/BUILD
index b98cadd..61fb001 100644
--- a/y2017/control_loops/intake/BUILD
+++ b/y2017/control_loops/superstructure/BUILD
@@ -3,9 +3,9 @@
 load('/aos/build/queues', 'queue_library')
 
 queue_library(
-  name = 'intake_queue',
+  name = 'superstructure_queue',
   srcs = [
-    'intake.q',
+    'superstructure.q',
   ],
   deps = [
     '//aos/common/controls:control_loop_queues',
diff --git a/y2017/control_loops/superstructure/superstructure.q b/y2017/control_loops/superstructure/superstructure.q
new file mode 100644
index 0000000..a3b2715
--- /dev/null
+++ b/y2017/control_loops/superstructure/superstructure.q
@@ -0,0 +1,207 @@
+package y2017.control_loops;
+
+import "aos/common/controls/control_loops.q";
+import "frc971/control_loops/control_loops.q";
+
+struct JointState {
+  // Position of the joint.
+  float position;
+  // Velocity of the joint in units/second.
+  float velocity;
+  // Profiled goal position of the joint.
+  float goal_position;
+  // Profiled goal velocity of the joint in units/second.
+  float goal_velocity;
+  // Unprofiled goal position from absoulte zero  of the joint.
+  float unprofiled_goal_position;
+  // Unprofiled goal velocity of the joint in units/second.
+  float unprofiled_goal_velocity;
+
+  // The estimated voltage error.
+  float voltage_error;
+
+  // The calculated velocity with delta x/delta t
+  float calculated_velocity;
+
+  // Components of the control loop output
+  float position_power;
+  float velocity_power;
+  float feedforwards_power;
+
+  // State of the estimator.
+  .frc971.EstimatorState estimator_state;
+};
+
+struct IntakeGoal {
+  // Zero on the intake is when the intake is retracted inside the robot,
+  // unable to intake. Positive is out.
+
+  // Goal distance of the intake.
+  double distance;
+
+  // Caps on velocity/acceleration for profiling. 0 for the default.
+  .frc971.ProfileParameters profile_params;
+
+  // Voltage to send to the rollers. Positive is sucking in.
+  float voltage_rollers;
+};
+
+struct SerializerGoal {
+  // Serializer angular velocity goals in radians/second.
+  double angular_velocity;
+};
+
+struct TurretGoal {
+  // An azimuth angle of zero means the turrent faces toward the front of the
+  // robot where the intake is located. The angle increases when the turret
+  // turns clockwise, and decreases when the turrent turns counter-clockwise.
+  // These are from a top view above the robot.
+  double angle_azimuth;
+
+  // Caps on velocity/acceleration for profiling. 0 for the default.
+  .frc971.ProfileParameters profile_params;
+};
+
+struct HoodGoal {
+  // Angle the hood is currently at
+  double angle_hood;
+
+  // Caps on velocity/acceleration for profiling. 0 for the default.
+  .frc971.ProfileParameters profile_params;
+};
+
+struct ShooterGoal {
+  // Angular velocity goals in radians/second.
+  double angular_velocity;
+};
+
+struct IntakeStatus {
+  // Is it zeroed?
+  bool zeroed;
+
+  // Estimated position and velocities.
+  JointState joint_state;
+
+  // If true, we have aborted.
+  bool estopped;
+};
+
+struct SerializerStatus {
+  // The current average velocity in radians/second.
+  double avg_angular_velocity;
+
+  // The current instantaneous filtered velocity in radians/second.
+  double angular_velocity;
+
+  // True if the serializer is ready.  It is better to compare the velocities
+  // directly so there isn't confusion on if the goal is up to date.
+  bool ready;
+
+  // If true, we have aborted.
+  bool estopped;
+};
+
+struct TurretStatus {
+  // Is the turret zeroed?
+  bool zeroed;
+
+  // If true, we have aborted.
+  bool estopped;
+
+  // Estimate angles and angular velocities.
+  JointState azimuth;
+};
+
+struct HoodStatus {
+  // Is the turret zeroed?
+  bool zeroed;
+
+  // If true, we have aborted.
+  bool estopped;
+
+  // Estimate angles and angular velocities.
+  JointState hood;
+};
+
+struct ShooterStatus {
+  // The current average velocity in radians/second.
+  double avg_angular_velocity;
+
+  // The current instantaneous filtered velocity in radians/second.
+  double angular_velocity;
+
+  // True if the shooter is ready.  It is better to compare the velocities
+  // directly so there isn't confusion on if the goal is up to date.
+  bool ready;
+
+  // If true, we have aborted.
+  bool estopped;
+};
+
+queue_group SuperstructureQueue {
+  implements aos.control_loops.ControlLoop;
+
+  message Goal {
+    IntakeGoal intake;
+    SerializerGoal serializer;
+    TurretGoal turret;
+    HoodGoal hood;
+    ShooterGoal shooter;
+  };
+
+  message Status {
+    // Are all the subsystems zeroed?
+    bool zeroed;
+
+    // If true, we have aborted. This is the or of all subsystem estops.
+    bool estopped;
+
+    // Each subsystems status.
+    IntakeStatus intake;
+    SerializerStatus serializer;
+    TurretStatus turret;
+    HoodStatus hood;
+    ShooterStatus shooter;
+  };
+
+  message Position {
+    // Position of the intake, zero when the intake is in, positive when it is
+    // out.
+    .frc971.PotAndAbsolutePosition intake;
+
+    // Serializer angle in radians.
+    double theta_serializer;
+
+    // The sensor readings for the azimuth. The units and sign are defined the
+    // same as what's in the Goal message.
+    .frc971.PotAndAbsolutePosition azimuth_turret;
+
+    // Position of the hood in radians
+    double theta_hood;
+
+    // Shooter wheel angle in radians.
+    double theta_shooter;
+  };
+
+  message Output {
+    // Voltages for some of the subsystems.
+    float voltage_intake;
+    float voltage_serializer;
+    float voltage_shooter;
+
+    // Rollers on the intake.
+    float voltage_intake_rollers;
+    // Roller on the serializer
+    float voltage_serializer_rollers;
+
+    float voltage_azimuth_turret;
+    float voltage_hood;
+  };
+
+  queue Goal goal;
+  queue Position position;
+  queue Output output;
+  queue Status status;
+};
+
+queue_group SuperstructureQueue superstructure_queue;
diff --git a/y2017/control_loops/turret/BUILD b/y2017/control_loops/turret/BUILD
deleted file mode 100644
index 9f36909..0000000
--- a/y2017/control_loops/turret/BUILD
+++ /dev/null
@@ -1,13 +0,0 @@
-load('/aos/build/queues', 'queue_library')
-
-queue_library(
-  name = 'turret_queue',
-  srcs = [
-    'turret.q',
-  ],
-  deps = [
-    '//aos/common/controls:control_loop_queues',
-    '//frc971/control_loops:queues',
-  ],
-  visibility = ['//visibility:public'],
-)
diff --git a/y2017/control_loops/turret/turret.q b/y2017/control_loops/turret/turret.q
deleted file mode 100644
index 0de50c6..0000000
--- a/y2017/control_loops/turret/turret.q
+++ /dev/null
@@ -1,85 +0,0 @@
-package y2017.control_loops;
-
-import "aos/common/controls/control_loops.q";
-import "frc971/control_loops/control_loops.q";
-
-struct JointState {
-  // Angle of the joint in radians.
-  float angle;
-  // Angular velocity of the joint in radians/second.
-  float angular_velocity;
-  // Profiled goal angle of the joint in radians.
-  float goal_angle;
-  // Profiled goal angular velocity of the joint in radians/second.
-  float goal_angular_velocity;
-  // Unprofiled goal angle of the joint in radians.
-  float unprofiled_goal_angle;
-  // Unprofiled goal angular velocity of the joint in radians/second.
-  float unprofiled_goal_angular_velocity;
-
-  // The estimated voltage error.
-  float voltage_error;
-
-  // The calculated velocity with delta x/delta t
-  float calculated_velocity;
-
-  // Components of the control loop output
-  float position_power;
-  float velocity_power;
-  float feedforwards_power;
-
-  // State of the estimator.
-  .frc971.EstimatorState estimator_state;
-};
-
-queue_group TurretQueue {
-  implements aos.control_loops.ControlLoop;
-
-  message Goal {
-    // An azimuth angle of zero means the turrent faces toward the front of the
-    // robot where the intake is located. The angle increases when the turret
-    // turns clockwise, and decreases when the turrent turns counter-clockwise.
-    // These are from a top view above the robot.
-    double angle_azimuth;
-
-    // TODO(phil): Define how we control the vertical angle of the turret: is
-    // it a distance or an angle, etc.
-    double angle_altitude;
-
-    // Caps on velocity/acceleration for profiling. 0 for the default.
-    .frc971.ProfileParameters profile_params_turret;
-  };
-
-  message Status {
-    // Is the turret zeroed?
-    bool zeroed;
-
-    // If true, we have aborted.
-    bool estopped;
-
-    // Estimate angles and angular velocities.
-    JointState azimuth;
-    JointState altitude;
-  };
-
-  message Position {
-    // The sensor readings for the azimuth. The units and sign are defined the
-    // same as what's in the Goal message.
-    .frc971.PotAndAbsolutePosition azimuth;
-
-    // TODO(phil): How are we measuring that other aspect of the turret (i.e.
-    // the "altitude") ?
-  };
-
-  message Output {
-    float voltage_azimuth;
-    float voltage_altitude;
-  };
-
-  queue Goal goal;
-  queue Position position;
-  queue Output output;
-  queue Status status;
-};
-
-queue_group TurretQueue turret_queue;
