Index loop is in a seperate file now.
diff --git a/frc971/atom_code/atom_code.gyp b/frc971/atom_code/atom_code.gyp
index 8004da3..0e7ed56 100644
--- a/frc971/atom_code/atom_code.gyp
+++ b/frc971/atom_code/atom_code.gyp
@@ -8,6 +8,8 @@
         '../control_loops/control_loops.gyp:DriveTrain',
         '../control_loops/wrist/wrist.gyp:wrist',
         '../control_loops/wrist/wrist.gyp:wrist_lib_test',
+        '../control_loops/index/index.gyp:index',
+        '../control_loops/index/index.gyp:index_lib_test',
         '../input/input.gyp:JoystickReader',
         '../input/input.gyp:SensorReader',
         '../input/input.gyp:GyroReader',
diff --git a/frc971/control_loops/control_loops.gyp b/frc971/control_loops/control_loops.gyp
index dc380e6..18df792 100644
--- a/frc971/control_loops/control_loops.gyp
+++ b/frc971/control_loops/control_loops.gyp
@@ -2,7 +2,6 @@
   'variables': {
     'loop_files': [
       'DriveTrain.q',
-      'index_motor.q',
     ]
   },
   'targets': [
@@ -38,50 +37,6 @@
       'includes': ['../../aos/build/queues.gypi'],
     },
     {
-    {
-      'target_name': 'index_lib',
-      'type': 'static_library',
-      'sources': [
-        'index.cc',
-        'index_motor_plant.cc',
-      ],
-      'dependencies': [
-        '<(AOS)/build/aos.gyp:libaos',
-        'control_loops',
-        '<(AOS)/common/common.gyp:controls',
-        '<(DEPTH)/frc971/frc971.gyp:common',
-        'state_feedback_loop',
-      ],
-    },
-    {
-      'target_name': 'index_lib_test',
-      'type': 'executable',
-      'sources': [
-        'index_lib_test.cc',
-        'transfer_motor_plant.cc',
-      ],
-      'dependencies': [
-        '<(EXTERNALS):gtest',
-        '<(AOS)/build/aos.gyp:libaos',
-        'control_loops',
-        'index_lib',
-        '<(AOS)/common/common.gyp:queue_testutils',
-        'state_feedback_loop',
-      ],
-    },
-    {
-      'target_name': 'index',
-      'type': 'executable',
-      'sources': [
-        'index_main.cc',
-      ],
-      'dependencies': [
-        '<(AOS)/build/aos.gyp:libaos',
-        'index_lib',
-        'control_loops',
-      ],
-    },
-    {
       'target_name': 'DriveTrain',
       'type': 'executable',
       'sources': [
diff --git a/frc971/control_loops/index.cc b/frc971/control_loops/index/index.cc
similarity index 99%
rename from frc971/control_loops/index.cc
rename to frc971/control_loops/index/index.cc
index f7a0a5f..fa1940e 100644
--- a/frc971/control_loops/index.cc
+++ b/frc971/control_loops/index/index.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/index.h"
+#include "frc971/control_loops/index/index.h"
 
 #include <stdio.h>
 
@@ -11,7 +11,7 @@
 #include "aos/common/logging/logging.h"
 
 #include "frc971/constants.h"
-#include "frc971/control_loops/index_motor_plant.h"
+#include "frc971/control_loops/index/index_motor_plant.h"
 
 using ::aos::time::Time;
 
diff --git a/frc971/control_loops/index/index.gyp b/frc971/control_loops/index/index.gyp
new file mode 100644
index 0000000..04b043f
--- /dev/null
+++ b/frc971/control_loops/index/index.gyp
@@ -0,0 +1,71 @@
+{
+  'targets': [
+    {
+      'target_name': 'index_loop',
+      'type': 'static_library',
+      'sources': ['index_motor.q'],
+      'variables': {
+        'header_path': 'frc971/control_loops/index',
+      },
+      'dependencies': [
+        '<(AOS)/build/aos.gyp:libaos',
+        '<(AOS)/common/common.gyp:control_loop_queues',
+        '<(AOS)/common/common.gyp:queues',
+      ],
+      'export_dependent_settings': [
+        '<(AOS)/build/aos.gyp:libaos',
+        '<(AOS)/common/common.gyp:control_loop_queues',
+        '<(AOS)/common/common.gyp:queues',
+      ],
+      'includes': ['../../../aos/build/queues.gypi'],
+    },
+    {
+      'target_name': 'index_lib',
+      'type': 'static_library',
+      'sources': [
+        'index.cc',
+        'index_motor_plant.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/build/aos.gyp:libaos',
+        'index_loop',
+        '<(AOS)/common/common.gyp:controls',
+        '<(DEPTH)/frc971/frc971.gyp:common',
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
+      ],
+      'export_dependent_settings': [
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
+        '<(AOS)/common/common.gyp:controls',
+        'index_loop',
+      ],
+    },
+    {
+      'target_name': 'index_lib_test',
+      'type': 'executable',
+      'sources': [
+        'index_lib_test.cc',
+        'transfer_motor_plant.cc',
+      ],
+      'dependencies': [
+        '<(EXTERNALS):gtest',
+        '<(AOS)/build/aos.gyp:libaos',
+        'index_loop',
+        'index_lib',
+        '<(AOS)/common/common.gyp:queue_testutils',
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
+      ],
+    },
+    {
+      'target_name': 'index',
+      'type': 'executable',
+      'sources': [
+        'index_main.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/build/aos.gyp:libaos',
+        'index_lib',
+        'index_loop',
+      ],
+    },
+  ],
+}
diff --git a/frc971/control_loops/index.h b/frc971/control_loops/index/index.h
similarity index 98%
rename from frc971/control_loops/index.h
rename to frc971/control_loops/index/index.h
index 9b64282..cca30fd 100644
--- a/frc971/control_loops/index.h
+++ b/frc971/control_loops/index/index.h
@@ -7,8 +7,8 @@
 #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"
+#include "frc971/control_loops/index/index_motor.q.h"
+#include "frc971/control_loops/index/index_motor_plant.h"
 
 namespace frc971 {
 namespace control_loops {
diff --git a/frc971/control_loops/index_lib_test.cc b/frc971/control_loops/index/index_lib_test.cc
similarity index 98%
rename from frc971/control_loops/index_lib_test.cc
rename to frc971/control_loops/index/index_lib_test.cc
index e991bb1..01805c9 100644
--- a/frc971/control_loops/index_lib_test.cc
+++ b/frc971/control_loops/index/index_lib_test.cc
@@ -5,10 +5,10 @@
 #include "gtest/gtest.h"
 #include "aos/common/queue.h"
 #include "aos/common/queue_testutils.h"
-#include "frc971/control_loops/index_motor.q.h"
-#include "frc971/control_loops/index.h"
-#include "frc971/control_loops/index_motor_plant.h"
-#include "frc971/control_loops/transfer_motor_plant.h"
+#include "frc971/control_loops/index/index_motor.q.h"
+#include "frc971/control_loops/index/index.h"
+#include "frc971/control_loops/index/index_motor_plant.h"
+#include "frc971/control_loops/index/transfer_motor_plant.h"
 #include "frc971/constants.h"
 
 
diff --git a/frc971/control_loops/index_main.cc b/frc971/control_loops/index/index_main.cc
similarity index 76%
rename from frc971/control_loops/index_main.cc
rename to frc971/control_loops/index/index_main.cc
index 6d03678..9ca3290 100644
--- a/frc971/control_loops/index_main.cc
+++ b/frc971/control_loops/index/index_main.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/wrist.h"
+#include "frc971/control_loops/index/index.h"
 
 #include "aos/aos_core.h"
 
diff --git a/frc971/control_loops/index_motor.q b/frc971/control_loops/index/index_motor.q
similarity index 100%
rename from frc971/control_loops/index_motor.q
rename to frc971/control_loops/index/index_motor.q
diff --git a/frc971/control_loops/index_motor_plant.cc b/frc971/control_loops/index/index_motor_plant.cc
similarity index 93%
rename from frc971/control_loops/index_motor_plant.cc
rename to frc971/control_loops/index/index_motor_plant.cc
index 0d257f4..51661fb 100644
--- a/frc971/control_loops/index_motor_plant.cc
+++ b/frc971/control_loops/index/index_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/index_motor_plant.h"
+#include "frc971/control_loops/index/index_motor_plant.h"
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
diff --git a/frc971/control_loops/index/index_motor_plant.h b/frc971/control_loops/index/index_motor_plant.h
new file mode 100644
index 0000000..4600ccf
--- /dev/null
+++ b/frc971/control_loops/index/index_motor_plant.h
@@ -0,0 +1,16 @@
+#ifndef FRC971_CONTROL_LOOPS_INDEX_INDEX_MOTOR_PLANT_H_
+#define FRC971_CONTROL_LOOPS_INDEX_INDEX_MOTOR_PLANT_H_
+
+#include "frc971/control_loops/state_feedback_loop.h"
+
+namespace frc971 {
+namespace control_loops {
+
+StateFeedbackPlant<2, 1, 1> MakeIndexPlant();
+
+StateFeedbackLoop<2, 1, 1> MakeIndexLoop();
+
+}  // namespace frc971
+}  // namespace control_loops
+
+#endif  // FRC971_CONTROL_LOOPS_INDEX_INDEX_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/transfer_motor_plant.cc b/frc971/control_loops/index/transfer_motor_plant.cc
similarity index 93%
rename from frc971/control_loops/transfer_motor_plant.cc
rename to frc971/control_loops/index/transfer_motor_plant.cc
index ac3357a..9333f6a 100644
--- a/frc971/control_loops/transfer_motor_plant.cc
+++ b/frc971/control_loops/index/transfer_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/transfer_motor_plant.h"
+#include "frc971/control_loops/index/transfer_motor_plant.h"
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
diff --git a/frc971/control_loops/index/transfer_motor_plant.h b/frc971/control_loops/index/transfer_motor_plant.h
new file mode 100644
index 0000000..565e8c7
--- /dev/null
+++ b/frc971/control_loops/index/transfer_motor_plant.h
@@ -0,0 +1,16 @@
+#ifndef FRC971_CONTROL_LOOPS_INDEX_TRANSFER_MOTOR_PLANT_H_
+#define FRC971_CONTROL_LOOPS_INDEX_TRANSFER_MOTOR_PLANT_H_
+
+#include "frc971/control_loops/state_feedback_loop.h"
+
+namespace frc971 {
+namespace control_loops {
+
+StateFeedbackPlant<2, 1, 1> MakeTransferPlant();
+
+StateFeedbackLoop<2, 1, 1> MakeTransferLoop();
+
+}  // namespace frc971
+}  // namespace control_loops
+
+#endif  // FRC971_CONTROL_LOOPS_INDEX_TRANSFER_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/index_motor_plant.h b/frc971/control_loops/index_motor_plant.h
deleted file mode 100644
index 4d4f3b1..0000000
--- a/frc971/control_loops/index_motor_plant.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef FRC971_CONTROL_LOOPS_INDEX_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_INDEX_MOTOR_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace frc971 {
-namespace control_loops {
-
-StateFeedbackPlant<2, 1, 1> MakeIndexPlant();
-
-StateFeedbackLoop<2, 1, 1> MakeIndexLoop();
-
-}  // namespace frc971
-}  // namespace control_loops
-
-#endif  // FRC971_CONTROL_LOOPS_INDEX_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/transfer_motor_plant.h b/frc971/control_loops/transfer_motor_plant.h
deleted file mode 100644
index 41690c1..0000000
--- a/frc971/control_loops/transfer_motor_plant.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef FRC971_CONTROL_LOOPS_TRANSFER_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_TRANSFER_MOTOR_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace frc971 {
-namespace control_loops {
-
-StateFeedbackPlant<2, 1, 1> MakeTransferPlant();
-
-StateFeedbackLoop<2, 1, 1> MakeTransferLoop();
-
-}  // namespace frc971
-}  // namespace control_loops
-
-#endif  // FRC971_CONTROL_LOOPS_TRANSFER_MOTOR_PLANT_H_