diff --git a/frc971/control_loops/index.h b/frc971/control_loops/index.h
new file mode 100644
index 0000000..c62c639
--- /dev/null
+++ b/frc971/control_loops/index.h
@@ -0,0 +1,125 @@
+#ifndef FRC971_CONTROL_LOOPS_WRIST_H_
+#define FRC971_CONTROL_LOOPS_WRIST_H_
+
+#include <memory>
+#include <deque>
+
+#include "aos/common/control_loop/ControlLoop.h"
+#include "aos/common/time.h"
+#include "frc971/control_loops/state_feedback_loop.h"
+#include "frc971/control_loops/index_motor.q.h"
+#include "frc971/control_loops/index_motor_plant.h"
+
+namespace frc971 {
+namespace control_loops {
+
+class IndexMotor
+    : public aos::control_loops::ControlLoop<control_loops::IndexLoop> {
+ public:
+  explicit IndexMotor(
+      control_loops::IndexLoop *my_index = &control_loops::index);
+
+  // Converts the angle of the indexer to the angle of the disc.
+  static double ConvertIndexToDiscAngle(const double angle);
+  // Converts the angle of the indexer to the position that the center of the
+  // disc has traveled.
+  static double ConvertIndexToDiscPosition(const double angle);
+
+  // Converts the angle around the indexer to the position of the index roller.
+  static double ConvertDiscAngleToIndex(const double angle);
+  // Converts the angle around the indexer to the position of the disc in the
+  // indexer.
+  static double ConvertDiscAngleToDiscPosition(const double angle);
+
+  // Disc radius in meters.
+  const static double kDiscRadius;
+  // Roller radius in meters.
+  const static double kRollerRadius;
+
+  class Frisbee {
+   public:
+    Frisbee()
+        : bottom_posedge_time_(0, 0),
+          bottom_negedge_time_(0, 0),
+          index_start_time_(0, 0) {
+      Reset();
+    }
+
+    void Reset() {
+      bottom_posedge_time_ = ::aos::time::Time(0, 0);
+      bottom_negedge_time_ = ::aos::time::Time(0, 0);
+      index_start_time_ = ::aos::time::Time(0, 0);
+      has_been_indexed_ = false;
+      index_start_position_ = 0.0;
+    }
+
+    ::aos::time::Time bottom_posedge_time_;
+    ::aos::time::Time bottom_negedge_time_;
+    ::aos::time::Time index_start_time_;
+    bool has_been_indexed_;
+    double index_start_position_;
+  };
+
+ protected:
+  virtual void RunIteration(
+      const control_loops::IndexLoop::Goal *goal,
+      const control_loops::IndexLoop::Position *position,
+      control_loops::IndexLoop::Output *output,
+      control_loops::IndexLoop::Status *status);
+
+ private:
+  // Fetches and locally caches the latest set of constants.
+  bool FetchConstants();
+
+  // The state feedback control loop to talk to for the index.
+  ::std::unique_ptr<StateFeedbackLoop<2, 1, 1>> wrist_loop_;
+
+  // Local cache of the index geometry constants.
+  double horizontal_lower_limit_;
+  double horizontal_upper_limit_;
+  double horizontal_hall_effect_start_angle_;
+  double horizontal_zeroing_speed_;
+
+  // Count of the number of discs that we have collected.
+  uint32_t hopper_disc_count_;
+  uint32_t total_disc_count_;
+
+  enum Goal {
+    // Hold position, in a low power state.
+    HOLD = 0,
+    // Get ready to load discs by shifting the discs down.
+    READY_LOWER = 1,
+    // Ready the discs, spin up the transfer roller, and accept discs.
+    INTAKE = 2,
+    // Get ready to shoot, and place a disc in the loader.
+    READY_SHOOTER = 3,
+    // Shoot at will.
+    SHOOT = 4
+  };
+
+  // The current goal
+  Goal safe_goal_;
+
+  // Current state of the pistons.
+  bool loader_up_;
+  bool disc_clamped_;
+  bool disc_ejected_;
+
+  //::aos::time::Time disc_bottom_posedge_time_;
+  //::aos::time::Time disc_bottom_negedge_time_;
+  // The frisbee that is flying through the transfer rollers.
+  Frisbee transfer_frisbee_;
+
+  bool last_bottom_disc_detect_;
+
+  // Frisbees are in order such that the newest frisbee is on the front.
+  ::std::deque<Frisbee> frisbees_;
+  // std::array ?
+
+  DISALLOW_COPY_AND_ASSIGN(IndexMotor);
+};
+
+}  // namespace control_loops
+}  // namespace frc971
+
+#endif  // FRC971_CONTROL_LOOPS_WRIST_H_
