Move 2015-specific code to its own folder.

Known issues:
  -I didn't change the namespace for it, but I am open to discussion
   on doing that in a separate change.
  -There are a couple of files which should get split out into
   year-specific and not-year-specific files to reduce how much needs
   to get copied around each year still.
  -The control loop python code doesn't yet generate code with the
   right #include etc paths.

Change-Id: Iabf078e75107c283247f58a5ffceb4dbd6a0815f
diff --git a/aos/build/aos_all.gyp b/aos/build/aos_all.gyp
index 2a79722..195997a 100644
--- a/aos/build/aos_all.gyp
+++ b/aos/build/aos_all.gyp
@@ -48,7 +48,6 @@
         '<(AOS)/common/libc/libc.gyp:aos_strerror_test',
         '<(AOS)/common/libc/libc.gyp:aos_strsignal_test',
         '<(AOS)/common/util/util.gyp:run_command_test',
-        '<(AOS)/common/util/util.gyp:kinematics_test',
       ],
     },
   ],
diff --git a/aos/build/build.py b/aos/build/build.py
index 725de33..613dedb 100755
--- a/aos/build/build.py
+++ b/aos/build/build.py
@@ -356,10 +356,11 @@
   """A Processor subclass for building prime code."""
 
   class Platform(Processor.Platform):
-    def __init__(self, architecture, compiler, debug, sanitizer):
+    def __init__(self, architecture, folder, compiler, debug, sanitizer):
       super(PrimeProcessor.Platform, self).__init__()
 
       self.__architecture = architecture
+      self.__folder = folder
       self.__compiler = compiler
       self.__debug = debug
       self.__sanitizer = sanitizer
@@ -370,8 +371,10 @@
           % (self.architecture(), self.compiler(), self.debug(),
              self.sanitizer())
     def __str__(self):
-      return '%s-%s%s-%s' % (self.architecture(), self.compiler(),
-                             '-debug' if self.debug() else '', self.sanitizer())
+      return '%s-%s-%s%s-%s' % (self.architecture(), self.folder(),
+                                self.compiler(),
+                                '-debug' if self.debug() else '',
+                                self.sanitizer())
 
     def os(self):
       return 'linux'
@@ -379,6 +382,8 @@
       return '%s-%s-%s' % (self.os(), self.architecture(), self.compiler())
     def architecture(self):
       return self.__architecture
+    def folder(self):
+      return self.__folder
     def compiler(self):
       return self.__compiler
     def sanitizer(self):
@@ -491,9 +496,11 @@
   }
   PIE_SANITIZERS = ('memory', 'thread')
 
-  def __init__(self, is_test, is_deploy):
+  def __init__(self, folder, is_test, is_deploy):
     super(PrimeProcessor, self).__init__()
 
+    self.__folder = folder
+
     platforms = []
     for architecture in PrimeProcessor.ARCHITECTURES:
       for compiler in PrimeProcessor.COMPILERS:
@@ -502,7 +509,7 @@
             # We don't have a compiler to use here.
             continue
           platforms.append(
-              self.Platform(architecture, compiler, debug, 'none'))
+              self.Platform(architecture, folder, compiler, debug, 'none'))
     for sanitizer in PrimeProcessor.SANITIZERS:
       for compiler in ('clang',):
         if compiler == 'gcc_4.8' and (sanitizer == 'undefined' or
@@ -514,7 +521,7 @@
           # We already added sanitizer == 'none' above.
           continue
         platforms.append(
-            self.Platform('amd64', compiler, True, sanitizer))
+            self.Platform('amd64', folder, compiler, True, sanitizer))
     self.__platforms = frozenset(platforms)
 
     if is_test:
@@ -531,6 +538,8 @@
       default_platforms = self.select_platforms(debug=False)
     self.__default_platforms = frozenset(default_platforms)
 
+  def folder(self):
+    return self.__folder
   def platforms(self):
     return self.__platforms
   def default_platforms(self):
@@ -599,6 +608,8 @@
         sanitizer = part
       elif part == 'all':
         architecture = compiler = debug = sanitizer = None
+      elif part == self.folder():
+        pass
       else:
         raise Processor.UnknownPlatform(
             '"%s" not recognized as a platform string component.' % part)
@@ -626,15 +637,6 @@
 
     self.do_check_installed(tuple(packages))
 
-class Bot3PrimeProcessor(PrimeProcessor):
-  """A very simple subclass of PrimeProcessor whose main function is to allow
-  the building of third robot targets in separate directories from those of
-  the main robot."""
-  class Platform(PrimeProcessor.Platform):
-    def __str__(self):
-      return 'bot3-%s' % (super(Bot3PrimeProcessor.Platform, self).__str__())
-
-
 def strsignal(num):
   # It ends up with SIGIOT instead otherwise, which is weird.
   if num == signal.SIGABRT:
@@ -743,6 +745,7 @@
   if len(sys.argv) < 2:
     print_help(1, 'Not enough arguments')
   args.processor = sys.argv.pop(0)
+  args.folder = sys.argv.pop(0)
   args.main_gyp = sys.argv.pop(0)
   VALID_ACTIONS = ['build', 'clean', 'deploy', 'tests', 'environment']
   while sys.argv:
@@ -773,11 +776,9 @@
       args.platform = arg
 
   if args.processor == 'prime':
-    processor = PrimeProcessor(args.action_name == 'tests',
+    processor = PrimeProcessor(args.folder,
+                               args.action_name == 'tests',
                                args.action_name == 'deploy')
-  elif args.processor == 'bot3_prime':
-    processor = Bot3PrimeProcessor(args.action_name == 'tests',
-                                   args.action_name == 'deploy')
   else:
     print_help(1, message='Unknown processor "%s".' % args.processor)
 
diff --git a/aos/common/byteorder.h b/aos/common/byteorder.h
index c616d68..ae6ecf4 100644
--- a/aos/common/byteorder.h
+++ b/aos/common/byteorder.h
@@ -5,6 +5,7 @@
 #include <endian.h> // endian(3)
 #endif
 #include <string.h>
+#include <stdint.h>
 
 // Contains functions for converting between host and network byte order for
 // things other than 16/32 bit integers (those are provided by byteorder(3)).
diff --git a/aos/common/util/util.gyp b/aos/common/util/util.gyp
index f60622e..e9a37c9 100644
--- a/aos/common/util/util.gyp
+++ b/aos/common/util/util.gyp
@@ -149,34 +149,5 @@
         '<(EXTERNALS):gtest',
       ],
     },
-    {
-      'target_name': 'kinematics',
-      'type': 'static_library',
-      'sources': [
-        #'kinematics.h',
-      ],
-      'dependencies': [
-        '<(EXTERNALS):eigen',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-      ],
-      'export_dependent_settings': [
-        '<(EXTERNALS):eigen',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-      ],
-    },
-    {
-      'target_name': 'kinematics_test',
-      'type': 'executable',
-      'sources': [
-        'kinematics_test.cc',
-      ],
-      'dependencies': [
-        '<(EXTERNALS):gtest',
-        '<(AOS)/common/common.gyp:queue_testutils',
-        '<(AOS)/build/aos.gyp:logging',
-        '<(DEPTH)/frc971/control_loops/control_loops.gyp:team_number_test_environment',
-        'kinematics'
-      ],
-    },
   ],
 }
diff --git a/bot3/control_loops/drivetrain/drivetrain.gyp b/bot3/control_loops/drivetrain/drivetrain.gyp
index 4772873..7910a27 100644
--- a/bot3/control_loops/drivetrain/drivetrain.gyp
+++ b/bot3/control_loops/drivetrain/drivetrain.gyp
@@ -55,7 +55,6 @@
       ],
       'dependencies': [
         'drivetrain_queue',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(AOS)/common/controls/controls.gyp:control_loop',
         '<(AOS)/common/controls/controls.gyp:polytope',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
diff --git a/bot3/prime/build.sh b/bot3/prime/build.sh
index 6ae1c81..9586590 100755
--- a/bot3/prime/build.sh
+++ b/bot3/prime/build.sh
@@ -2,4 +2,4 @@
 
 cd $(dirname $0)
 
-exec ../../aos/build/build.py $0 bot3_prime prime.gyp "$@"
+exec ../../aos/build/build.py $0 prime bot3 prime.gyp "$@"
diff --git a/bot3/wpilib/wpilib.gyp b/bot3/wpilib/wpilib.gyp
index 219f5a1..311f6cd 100644
--- a/bot3/wpilib/wpilib.gyp
+++ b/bot3/wpilib/wpilib.gyp
@@ -11,7 +11,6 @@
         '<(AOS)/common/common.gyp:stl_mutex',
         '<(AOS)/build/aos.gyp:logging',
         '<(EXTERNALS):WPILib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/bot3/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
         '<(AOS)/common/util/util.gyp:log_interval',
diff --git a/frc971/actors/fridge_profile_lib.cc b/frc971/actors/fridge_profile_lib.cc
deleted file mode 100644
index c6ad8e3..0000000
--- a/frc971/actors/fridge_profile_lib.cc
+++ /dev/null
@@ -1 +0,0 @@
-#include "frc971/actors/fridge_profile_lib.h"
diff --git a/frc971/autonomous/auto.h b/frc971/autonomous/auto.h
deleted file mode 100644
index 21122bc..0000000
--- a/frc971/autonomous/auto.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef FRC971_AUTONOMOUS_AUTO_H_
-#define FRC971_AUTONOMOUS_AUTO_H_
-
-namespace frc971 {
-namespace autonomous {
-
-void HandleAuto();
-
-}  // namespace autonomous
-}  // namespace frc971
-
-#endif  // FRC971_AUTONOMOUS_AUTO_H_
diff --git a/frc971/autonomous/autonomous.gyp b/frc971/autonomous/autonomous.gyp
index 8d75b27..e36a532 100644
--- a/frc971/autonomous/autonomous.gyp
+++ b/frc971/autonomous/autonomous.gyp
@@ -9,44 +9,5 @@
       },
       'includes': ['../../aos/build/queues.gypi'],
     },
-    {
-      'target_name': 'auto_lib',
-      'type': 'static_library',
-      'sources': [
-        'auto.cc',
-      ],
-      'dependencies': [
-        'auto_queue',
-        '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(DEPTH)/frc971/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(AOS)/common/common.gyp:time',
-        '<(AOS)/common/util/util.gyp:phased_loop',
-        '<(AOS)/common/util/util.gyp:trapezoid_profile',
-        '<(AOS)/build/aos.gyp:logging',
-        '<(DEPTH)/frc971/actors/actors.gyp:drivetrain_action_lib',
-        '<(AOS)/common/logging/logging.gyp:queue_logging',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
-        '<(DEPTH)/frc971/actors/actors.gyp:stack_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:held_to_lift_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:pickup_action_lib',
-      ],
-      'export_dependent_settings': [
-        '<(AOS)/common/controls/controls.gyp:control_loop',
-      ],
-    },
-    {
-      'target_name': 'auto',
-      'type': 'executable',
-      'sources': [
-        'auto_main.cc',
-      ],
-      'dependencies': [
-        '<(AOS)/linux_code/linux_code.gyp:init',
-        'auto_queue',
-        'auto_lib',
-      ],
-    },
   ],
 }
diff --git a/frc971/constants.h b/frc971/constants.h
index 0b6b725..890c63c 100644
--- a/frc971/constants.h
+++ b/frc971/constants.h
@@ -1,158 +1,21 @@
 #ifndef FRC971_CONSTANTS_H_
 #define FRC971_CONSTANTS_H_
-#include <stdint.h>
-
-#include "frc971/control_loops/state_feedback_loop.h"
-#include "frc971/shifter_hall_effect.h"
 
 namespace frc971 {
 namespace constants {
 
-// Has all of the numbers that change for both robots and makes it easy to
-// retrieve the values for the current one.
-
-// Everything is in SI units (volts, radians, meters, seconds, etc).
-// Some of these values are related to the conversion between raw values
-// (encoder counts, voltage, etc) to scaled units (radians, meters, etc).
-
-// This structure contains current values for all of the things that change.
-struct Values {
-  // Drivetrain Values /////
-
-  // The ratio from the encoder shaft to the drivetrain wheels.
-  double drivetrain_encoder_ratio;
-  // The ratio from the encoder shaft to the arm joint.
-  double arm_encoder_ratio;
-  // The ratio from the pot shaft to the arm joint.
-  double arm_pot_ratio;
-  // The ratio from the encoder shaft to the elevator output pulley.
-  double elev_encoder_ratio;
-  // The ratio from the pot shaft to the elevator output pulley.
-  double elev_pot_ratio;
-  // How far the elevator moves (meters) per radian on the output pulley.
-  double elev_distance_per_radian;
-  // The ratio from the encoder shaft to the claw joint.
-  double claw_encoder_ratio;
-  // The ratio from the pot shaft to the claw joint.
-  double claw_pot_ratio;
-
-  // How tall a tote is in meters.
-  double tote_height;
-
-  // The gear ratios from motor shafts to the drivetrain wheels for high and low
-  // gear.
-  double low_gear_ratio;
-  double high_gear_ratio;
-  ShifterHallEffect left_drive, right_drive;
-  bool clutch_transmission;
-
-  double turn_width;
-
-  ::std::function<StateFeedbackLoop<2, 2, 2>()> make_v_drivetrain_loop;
-  ::std::function<StateFeedbackLoop<4, 2, 2>()> make_drivetrain_loop;
-
-  double drivetrain_done_distance;
-  double drivetrain_max_speed;
-
-  // Superstructure Values /////
-
-  struct ZeroingConstants {
-    // The number of samples in the moving average filter.
-    int average_filter_size;
-    // The difference in scaled units between two index pulses.
-    double index_difference;
-    // The absolute position in scaled units of one of the index pulses.
-    double measured_index_position;
-    // Value between 0 and 1 which determines a fraction of the index_diff
-    // you want to use.
-    double allowable_encoder_error;
-  };
-
-  // Defines a range of motion for a subsystem.
-  // These are all absolute positions in scaled units.
-  struct Range {
-    double lower_hard_limit;
-    double upper_hard_limit;
-    double lower_limit;
-    double upper_limit;
-  };
-
-  struct Claw {
-    Range wrist;
-    ZeroingConstants zeroing;
-    // The value to add to potentiometer readings after they have been converted
-    // to radians so that the resulting value is 0 when the claw is at absolute
-    // 0 (horizontal straight out the front).
-    double potentiometer_offset;
-
-    // Time between sending commands to claw opening pistons and them reaching
-    // the new state.
-    double piston_switch_time;
-    // How far on either side we look for the index pulse before we give up.
-    double zeroing_range;
-  };
-  Claw claw;
-
-  struct Fridge {
-    Range elevator;
-    Range arm;
-
-    ZeroingConstants left_elev_zeroing;
-    ZeroingConstants right_elev_zeroing;
-    ZeroingConstants left_arm_zeroing;
-    ZeroingConstants right_arm_zeroing;
-
-    // Values to add to scaled potentiometer readings so 0 lines up with the
-    // physical absolute 0.
-    double left_elevator_potentiometer_offset;
-    double right_elevator_potentiometer_offset;
-    double left_arm_potentiometer_offset;
-    double right_arm_potentiometer_offset;
-
-    // How high the elevator has to be before we start zeroing the arm.
-    double arm_zeroing_height;
-
-    // The length of the arm, from the axis of the bottom pivot to the axis of
-    // the top pivot.
-    double arm_length;
-  };
-  Fridge fridge;
-
-  double max_allowed_left_right_arm_difference;
-  double max_allowed_left_right_elevator_difference;
-
-  struct ClawGeometry {
-    // Horizontal distance from the center of the grabber to the end.
-    double grabber_half_length;
-    // Vertical distance from the arm rotation center to the bottom of the
-    // grabber.  Distance measured with arm vertical (theta = 0).
-    double grabber_delta_y;
-    // Vertical separation of the claw and arm rotation centers with the
-    // elevator at 0.0 and the arm angle set to zero.
-    double grabber_arm_vert_separation;
-    // Horizontal separation of the claw and arm rotation centers with the
-    // elevator at 0.0 and the arm angle set to zero.
-    double grabber_arm_horz_separation;
-    // Distance between the center of the claw to the top of the claw.
-    // The line drawn at this distance parallel to the claw centerline is used
-    // to determine if claw interfears with the grabber.
-    double claw_top_thickness;
-    // The grabber is safe at any height if it is behind this location.
-    double grabber_always_safe_h_min;
-    // The grabber is safe at any x if it is above this location.
-    double grabber_always_safe_x_max;
-  };
-  ClawGeometry clawGeometry;
+struct ZeroingConstants {
+  // The number of samples in the moving average filter.
+  int average_filter_size;
+  // The difference in scaled units between two index pulses.
+  double index_difference;
+  // The absolute position in scaled units of one of the index pulses.
+  double measured_index_position;
+  // Value between 0 and 1 which determines a fraction of the index_diff
+  // you want to use.
+  double allowable_encoder_error;
 };
 
-// Creates (once) a Values instance for ::aos::network::GetTeamNumber() and
-// returns a reference to it.
-const Values &GetValues();
-
-// Creates Values instances for each team number it is called with and returns
-// them.
-const Values &GetValuesForTeam(uint16_t team_number);
-
 }  // namespace constants
 }  // namespace frc971
 
diff --git a/frc971/control_loops/matlab/drivetrain_controller.m b/frc971/control_loops/matlab/drivetrain_controller.m
deleted file mode 100644
index f9ee4be..0000000
--- a/frc971/control_loops/matlab/drivetrain_controller.m
+++ /dev/null
@@ -1,240 +0,0 @@
-close all;
-load 'drivetrain_spin_low'
-load 'drivetrain_strait_low'
-% Max power amps of CIM or maybe half the mass of the robot in lbs or the whole robot in kg.
-m = 68;
-% Must be in meters. Maybe width of robot (distance of center wheels from center).
-rb = 0.617998644 / 2.0;
-% Moment of Inertia
-J = 7;
-stall_current = 133.0;
-% Resistance of the motor, divided by the number of motors.
-R = 12.0 / stall_current / 4 / 0.43;
-% Motor Constant
-Km = (12.0 - R * 2.7) / (4650.0 / 60.0 * 2.0 * pi);
-% Torque Constant
-Kt = 0.008;
-r = 0.04445; % 3.5 inches diameter
-G_low = 60.0 / 15.0 * 50.0 / 15.0;
-G_high = 45.0 / 30.0 * 50.0 / 15.0;
-dt = 0.01;
-
-G = G_low;
-
-% must refer to how each side of the robot affects the other? Units of 1 / kg
-% I think that if the center of mass is in the center of the robot, then
-% msp will evaluate to 2/(mass of robot) and msn will evaluate to 0.
-msp = (1.0 / m + rb ^ 2.0 / J);
-msn = (1.0 / m - rb ^ 2.0 / J);
-tc = -Km * Kt * G ^ 2.0 / (R * r ^ 2.0);
-mp = G * Kt / (R * r);
-
-A = [0 1 0 0; 0 msp*tc 0 msn*tc; 0 0 0 1; 0 msn*tc 0 msp*tc];
-B = [0 0; msp * mp msn * mp; 0 0; msn * mp msp * mp];
-C = [1 0 0 0; 0 0 1 0];
-D = [0 0; 0 0];
-
-dm = c2d(ss(A, B, C, D), dt);
-
-hp = .8;
-lp = .85;
-K = place(dm.a, dm.b, [hp, hp, lp, lp]);
-
-hlp = 0.07;
-llp = 0.09;
-L = place(dm.a', dm.c', [hlp, hlp, llp, llp])';
-
-% Plot what we computed
-
-fd = fopen('/home/aschuh/frc971/2012/trunk/src/prime/control_loops/Drivetrain.mat', 'w');
-n = 1;
-sm = [];
-writeMatHeader(fd, size(dm.a, 1), size(dm.b, 2));
-writeMat(fd, dm.a, 'A');
-writeMat(fd, dm.b, 'B');
-writeMat(fd, dm.c, 'C');
-writeMat(fd, dm.d, 'D');
-writeMat(fd, L, 'L');
-writeMat(fd, K, 'K');
-writeMat(fd, [12; 12], 'U_max');
-writeMat(fd, [-12; -12], 'U_min');
-writeMatFooter(fd);
-fclose(fd);
-
-full_model = dss([dm.a (-dm.b * K); eye(4) (dm.a - dm.b * K - L * dm.c)], [0, 0; 0, 0; 0, 0; 0, 0; L], [C, [0, 0, 0, 0; 0, 0, 0, 0]], 0, eye(8), 0.01);
-
-n = 1;
-sm_strait = [];
-t = drivetrain_strait_low(1, 1) + dt * (n - 1);
-x = [drivetrain_strait_low(1, 2); 0; drivetrain_strait_low(1, 3); 0];
-while t < drivetrain_strait_low(end, 1)
-    sm_strait(n, 1) = t;
-    sm_strait(n, 2) = (x(1,1) + x(3,1)) / 2.0;
-    t = t + dt;
-    x = dm.a * x + dm.b * [drivetrain_strait_low(n, 4); drivetrain_strait_low(n, 5)];
-    n = n + 1;
-end
-
-figure;
-plot(drivetrain_strait_low(:, 1), (drivetrain_strait_low(:, 2) + drivetrain_strait_low(:, 3)) / 2.0, sm_strait(:, 1), sm_strait(:, 2));
-legend('actual', 'sim');
-
-n = 1;
-sm_spin = [];
-t = drivetrain_spin_low(1, 1) + dt * (n - 1);
-x = [drivetrain_spin_low(1, 2); 0; drivetrain_spin_low(1, 3); 0];
-while t < drivetrain_spin_low(end, 1)
-    sm_spin(n, 1) = t;
-    sm_spin(n, 2) = (x(1,1) - x(3,1)) / 2.0;
-    t = t + dt;
-    x = dm.a * x + dm.b * [drivetrain_spin_low(n, 4); drivetrain_spin_low(n, 5)];
-    n = n + 1;
-end
-
-figure;
-plot(drivetrain_spin_low(:, 1), (drivetrain_spin_low(:, 2) - drivetrain_spin_low(:, 3)) / 2.0, sm_spin(:, 1), sm_spin(:, 2));
-legend('actual', 'sim');
-
-%figure;
-%nyquist(full_model);
-
-
-%%
-t = 0;
-x = [0; 0; 0; 0;];
-while t < logging(end, 1)
-    sm(n, 1) = t;
-    sm(n, 2) = x(1,1);
-    sm(n, 3) = x(3,1);
-    t = t + dt;
-    x = dm.a * x + dm.b * [12.0; 12.0];
-    n = n + 1;
-end
-
-figure;
-plot(logging(:, 1), logging(:, 2), sm(:, 1), sm(:, 2));
-legend('actual', 'sim');
-
-%% Simulation of a small turn angle with a large distance to travel
-tf = 2;
-x = [0; 0; 0.1; 0;];
-r = [10; 0; 10; 0];
-
-smt = zeros(tf / dt, 8);
-t = 0;
-xhat = x;
-n = 1;
-% 1 means scale
-% 2 means just limit to 12 volts
-% 3 means preserve the difference in power
-captype = 1;
-while n <= size(smt, 1)
-    smt(n, 1) = t;
-    smt(n, 2) = x(1,1);
-    smt(n, 3) = x(3,1);
-    t = t + dt;
-    
-    u = K * (r - xhat);
-    smt(n, 4) = u(1,1);
-    smt(n, 5) = u(2,1);
-    
-    if captype == 1
-        if sum(abs(u) > 12.0)
-            % We have a problem!
-            % Check to see if it's a big steering power problem,
-            % or a big drive error.
-            turnPower = (u(1, 1) - u(2, 1));
-            drivePower = (u(1, 1) + u(2, 1));
-            scaleFactor = 12.0 / max(abs(u));
-            smt(n, 8) = 1.0 / scaleFactor;
-            % Only start scaling the turn power up if we are far out of
-            % range.
-            if abs(turnPower) < 0.5 * abs(drivePower)
-                % Turn power is swamped.
-                deltaTurn = turnPower / 2.0 / scaleFactor * 0.5;
-                u(1, 1) = u(1, 1) + deltaTurn;
-                u(2, 1) = u(2, 1) - deltaTurn;
-                scaleFactor = 12.0 / max(abs(u));
-            else
-                if 0.5 * abs(turnPower) > abs(drivePower)
-                    % Drive power is swamped.
-                    deltaDrive = drivePower / 2.0 / scaleFactor * 0.5;
-                    u(1, 1) = u(1, 1) + deltaDrive;
-                    u(2, 1) = u(2, 1) + deltaDrive;
-                    scaleFactor = 12.0 / max(abs(u));
-                end
-            end
-            u = u * scaleFactor;
-        end
-    else
-        if captype == 2
-            if u(1, 1) > 12.0
-                u(1, 1) = 12.0;
-            end
-            if u(1, 1) < -12.0
-                u(1, 1) = -12.0;
-            end
-            if u(2, 1) > 12.0
-                u(2, 1) = 12.0;
-            end
-            if u(2, 1) < -12.0
-                u(2, 1) = -12.0;
-            end
-        else
-            if captype == 3
-                if u(1, 1) > 12.0
-                    u(2, 1) = u(2, 1) - (u(1, 1) - 12.0);
-                else
-                    if u(1, 1) < -12.0
-                        u(2, 1) = u(2, 1) - (u(1, 1) + 12.0);
-                    end
-                end
-                if u(2, 1) > 12.0
-                    u(1, 1) = u(1, 1) - (u(2, 1) - 12.0);
-                else
-                    if u(2, 1) < -12.0
-                        u(1, 1) = u(1, 1) - (u(2, 1) + 12.0);
-                    end
-                end
-                if u(1, 1) > 12.0
-                    u(1, 1) = 12.0;
-                end
-                if u(1, 1) < -12.0
-                    u(1, 1) = -12.0;
-                end
-                if u(2, 1) > 12.0
-                    u(2, 1) = 12.0;
-                end
-                if u(2, 1) < -12.0
-                    u(2, 1) = -12.0;
-                end
-            end
-        end
-        
-    end
-    smt(n, 6) = u(1,1);
-    smt(n, 7) = u(2,1);
-    xhat = dm.a * xhat + dm.b * u + L * (dm.c * x - dm.c * xhat);
-    x = dm.a * x + dm.b * u;
-    
-    n = n + 1;
-end
-
-figure;
-subplot(6, 1, 1);
-plot(smt(:, 1), smt(:, 2) + smt(:, 3));
-legend('dist');
-subplot(6, 1, 2);
-plot(smt(:, 1), smt(:, 2) - smt(:, 3));
-legend('angle');
-subplot(3, 1, 2);
-plot(smt(:, 1), smt(:, 4), smt(:, 1), smt(:, 5));
-legend('lu', 'ru');
-subplot(3, 1, 3);
-plot(smt(:, 1), smt(:, 6), smt(:, 1), smt(:, 7));
-legend('lu_{real}', 'ru_{real}');
-
-%figure;
-%plot(smt(:, 1), smt(:, 8))
-%legend('Scale Factor');
-
diff --git a/frc971/control_loops/matlab/drivetrain_spin_fast.csv b/frc971/control_loops/matlab/drivetrain_spin_fast.csv
deleted file mode 100644
index 5768209..0000000
--- a/frc971/control_loops/matlab/drivetrain_spin_fast.csv
+++ /dev/null
@@ -1,215 +0,0 @@
-12038,8.037056,-7.571709,1.000000
-12039,8.037056,-7.571709,1.000000
-12040,8.037056,-7.571709,1.000000
-12041,8.037254,-7.572700,1.000000
-12042,8.044792,-7.577064,1.000000
-12043,8.053718,-7.583610,1.000000
-12044,8.066016,-7.593330,1.000000
-12045,8.078909,-7.602652,1.000000
-12046,8.094183,-7.613760,1.000000
-12047,8.109655,-7.624670,1.000000
-12048,8.126118,-7.637167,1.000000
-12049,8.141789,-7.650060,1.000000
-12050,8.156070,-7.662556,1.000000
-12051,8.174716,-7.677433,1.000000
-12052,8.190188,-7.690128,1.000000
-12053,8.208635,-7.704608,1.000000
-12054,8.225694,-7.717303,1.000000
-12055,8.242951,-7.729800,1.000000
-12056,8.261200,-7.745073,1.000000
-12057,8.276077,-7.758363,1.000000
-12058,8.289565,-7.771058,1.000000
-12059,8.308012,-7.787720,1.000000
-12060,8.327253,-7.805771,1.000000
-12061,8.345105,-7.819457,1.000000
-12062,8.360379,-7.830565,1.000000
-12063,8.377041,-7.844252,1.000000
-12064,8.396083,-7.860914,1.000000
-12065,8.413539,-7.877378,1.000000
-12066,8.430597,-7.895230,1.000000
-12067,8.445871,-7.910107,1.000000
-12068,8.460153,-7.923397,1.000000
-12069,8.478600,-7.938274,1.000000
-12070,8.497444,-7.954341,1.000000
-12071,8.516288,-7.970408,1.000000
-12072,8.535132,-7.987268,1.000000
-12073,8.549215,-8.002541,1.000000
-12074,8.563299,-8.018410,1.000000
-12075,8.581944,-8.037651,1.000000
-12076,8.605152,-8.057288,1.000000
-12077,8.623203,-8.070578,1.000000
-12078,8.639865,-8.087637,1.000000
-12079,8.658709,-8.105489,1.000000
-12080,8.676958,-8.122945,1.000000
-12087,8.815213,-8.259811,1.000000
-12088,8.835247,-8.279250,1.000000
-12089,8.852702,-8.298094,1.000000
-12090,8.876307,-8.320310,1.000000
-12091,8.897333,-8.338758,1.000000
-12092,8.922921,-8.360577,1.000000
-12093,8.948311,-8.383983,1.000000
-12094,8.968147,-8.403621,1.000000
-12095,8.988974,-8.426035,1.000000
-12096,9.009405,-8.447656,1.000000
-12097,9.035191,-8.474633,1.000000
-12098,9.055027,-8.494865,1.000000
-12099,9.076450,-8.516288,1.000000
-12100,9.101641,-8.540686,1.000000
-12101,9.121675,-8.560323,1.000000
-12102,9.144090,-8.583729,1.000000
-12103,9.171066,-8.609119,1.000000
-12104,9.195663,-8.630542,1.000000
-12105,9.218672,-8.653155,1.000000
-12106,9.240690,-8.671602,1.000000
-12107,9.265881,-8.693421,1.000000
-12108,9.290676,-8.717621,1.000000
-12109,9.315868,-8.741424,1.000000
-12110,9.343043,-8.767210,1.000000
-12111,9.365655,-8.788038,1.000000
-12112,9.392632,-8.813626,1.000000
-12113,9.417427,-8.836635,1.000000
-12114,9.441230,-8.857066,1.000000
-12115,9.468801,-8.881464,1.000000
-12116,9.499150,-8.906656,1.000000
-12117,9.521564,-8.928475,1.000000
-12118,9.551120,-8.953666,1.000000
-12119,9.574724,-8.974692,1.000000
-12120,9.604081,-9.003454,1.000000
-12121,9.631455,-9.030629,1.000000
-12122,9.656646,-9.054829,1.000000
-12123,9.686400,-9.084979,1.000000
-12124,9.711789,-9.111559,1.000000
-12125,9.737576,-9.136552,1.000000
-12126,9.761776,-9.158570,1.000000
-12127,9.788554,-9.182770,1.000000
-12128,9.815927,-9.208754,1.000000
-12129,9.845681,-9.235334,1.000000
-12130,9.872261,-9.259534,1.000000
-12131,9.896460,-9.282543,1.000000
-12132,9.924627,-9.308528,1.000000
-12133,9.954976,-9.336893,1.000000
-12134,9.982746,-9.362283,1.000000
-12135,10.007739,-9.385293,1.000000
-12136,10.038881,-9.414055,1.000000
-12137,10.065064,-9.437262,1.000000
-12138,10.097595,-9.464437,1.000000
-12139,10.123977,-9.488042,1.000000
-12140,10.155912,-9.517201,1.000000
-12141,10.180905,-9.539813,1.000000
-12142,10.213039,-9.568377,1.000000
-12143,10.238429,-9.592973,1.000000
-12144,10.270166,-9.622529,1.000000
-12145,10.296548,-9.646728,1.000000
-12146,10.326897,-9.673705,1.000000
-12147,10.356253,-9.700285,1.000000
-12148,10.388784,-9.728650,1.000000
-12149,10.419133,-9.755230,1.000000
-12150,10.449878,-9.783992,1.000000
-12151,10.481020,-9.814935,1.000000
-12152,10.508592,-9.843499,1.000000
-12153,10.536759,-9.875633,1.000000
-12154,10.568099,-9.908560,1.000000
-12155,10.594679,-9.934347,1.000000
-12156,10.624036,-9.961323,1.000000
-12157,10.653195,-9.988300,1.000000
-12158,10.682949,-10.015078,1.000000
-12159,10.716074,-10.045824,1.000000
-12160,10.745828,-10.074189,1.000000
-12161,10.773003,-10.098587,1.000000
-12162,10.804542,-10.127944,1.000000
-12163,10.831518,-10.152342,1.000000
-12164,10.865041,-10.183881,1.000000
-12165,10.893406,-10.211254,1.000000
-12166,10.924945,-10.240413,1.000000
-12167,10.960054,-10.269968,1.000000
-12168,10.989411,-10.294168,1.000000
-12169,11.020950,-10.322334,1.000000
-12170,11.057249,-10.352881,1.000000
-12171,11.086210,-10.379263,1.000000
-12172,11.116162,-10.407231,1.000000
-12173,11.144130,-10.434605,1.000000
-12174,11.176859,-10.466342,1.000000
-12175,11.212564,-10.498873,1.000000
-12176,11.240929,-10.524461,1.000000
-12177,11.271872,-10.553818,1.000000
-12178,11.306387,-10.587737,1.000000
-12179,11.337926,-10.620863,1.000000
-12180,11.364704,-10.651410,1.000000
-12186,11.552945,-10.839849,1.000000
-12187,11.580517,-10.865041,1.000000
-12188,11.612056,-10.895588,1.000000
-12189,11.642603,-10.925738,1.000000
-12190,11.676125,-10.957674,1.000000
-12191,11.707268,-10.987031,1.000000
-12192,11.736823,-11.013214,1.000000
-12193,11.773122,-11.045943,1.000000
-12194,11.802479,-11.072920,1.000000
-12195,11.834415,-11.103268,1.000000
-12196,11.868532,-11.136394,1.000000
-12197,11.900865,-11.167338,1.000000
-12198,11.931808,-11.197488,1.000000
-12199,11.964141,-11.227440,1.000000
-12200,11.997068,-11.256797,1.000000
-12201,12.026623,-11.283576,1.000000
-12202,12.063121,-11.316701,1.000000
-12203,12.092676,-11.344273,1.000000
-12204,12.128778,-11.377200,1.000000
-12205,12.158333,-11.404574,1.000000
-12206,12.193641,-11.437699,1.000000
-12207,12.223394,-11.465668,1.000000
-12208,12.259297,-11.499785,1.000000
-12209,12.292621,-11.532514,1.000000
-12210,12.321581,-11.563458,1.000000
-12211,12.357087,-11.601345,1.000000
-12212,12.389618,-11.637049,1.000000
-12213,12.418776,-11.669580,1.000000
-12214,12.454481,-11.707466,1.000000
-12215,12.482648,-11.737021,1.000000
-12216,12.517757,-11.769155,1.000000
-12217,12.547511,-11.796528,1.000000
-12218,12.584802,-11.830844,1.000000
-12219,12.614754,-11.859209,1.000000
-12220,12.647284,-11.890153,1.000000
-12221,12.679815,-11.920502,1.000000
-12222,12.715520,-11.954818,1.000000
-12223,12.749042,-11.986158,1.000000
-12224,12.781969,-12.017896,1.000000
-12225,12.811723,-12.045071,1.000000
-12226,12.844849,-12.075816,1.000000
-12227,12.878371,-12.106363,1.000000
-12228,12.913084,-12.137902,1.000000
-12229,12.947995,-12.169639,1.000000
-12230,12.982707,-12.200385,1.000000
-12231,13.019602,-12.233510,1.000000
-12232,13.051736,-12.264057,1.000000
-12233,13.086448,-12.296191,1.000000
-12234,13.117590,-12.326143,1.000000
-12235,13.156072,-12.363236,1.000000
-12236,13.186222,-12.393982,1.000000
-12237,13.219745,-12.428496,1.000000
-12238,13.255846,-12.467771,1.000000
-12239,13.285401,-12.499310,1.000000
-12240,13.320907,-12.536998,1.000000
-12241,13.353834,-12.570322,1.000000
-12242,13.387754,-12.601861,1.000000
-12243,13.419689,-12.629234,1.000000
-12244,13.457774,-12.663550,1.000000
-12245,13.492090,-12.695089,1.000000
-12246,13.522438,-12.723652,1.000000
-12247,13.558738,-12.758563,1.000000
-12248,13.591269,-12.790895,1.000000
-12249,13.621419,-12.819261,1.000000
-12250,13.659305,-12.854965,1.000000
-12251,13.691241,-12.883132,1.000000
-12252,13.726350,-12.914076,1.000000
-12253,13.760864,-12.944623,1.000000
-12254,13.798751,-12.979335,-1.000000
-12255,13.829694,-13.008295,-1.000000
-12256,13.866391,-13.044000,-1.000000
-12257,13.894557,-13.069985,-1.000000
-12258,13.918360,-13.087242,-1.000000
-12259,13.925898,-13.091209,-1.000000
-12260,13.924311,-13.085060,-1.000000
-12261,13.919551,-13.075340,-1.000000
-12262,13.915980,-13.064629,-1.000000
-12263,13.913005,-13.050942,-1.000000
\ No newline at end of file
diff --git a/frc971/control_loops/matlab/drivetrain_spin_low.csv b/frc971/control_loops/matlab/drivetrain_spin_low.csv
deleted file mode 100644
index a96acbe..0000000
--- a/frc971/control_loops/matlab/drivetrain_spin_low.csv
+++ /dev/null
@@ -1,280 +0,0 @@
-120.220000,16.662837,-14.612612,12.000000,-12.000000
-120.230000,16.662837,-14.612612,12.000000,-12.000000
-120.240000,16.662837,-14.612612,12.000000,-12.000000
-120.250000,16.662837,-14.612612,12.000000,-12.000000
-120.260000,16.662837,-14.612612,12.000000,-12.000000
-120.270000,16.665217,-14.617571,12.000000,-12.000000
-120.280000,16.673152,-14.624117,12.000000,-12.000000
-120.290000,16.682474,-14.632051,12.000000,-12.000000
-120.300000,16.692194,-14.640977,12.000000,-12.000000
-120.310000,16.702112,-14.650895,12.000000,-12.000000
-120.320000,16.713220,-14.660020,12.000000,-12.000000
-120.330000,16.724526,-14.671326,12.000000,-12.000000
-120.340000,16.736626,-14.682632,12.000000,-12.000000
-120.350000,16.748527,-14.693939,12.000000,-12.000000
-120.360000,16.761024,-14.705245,12.000000,-12.000000
-120.370000,16.773719,-14.716552,12.000000,-12.000000
-120.380000,16.786017,-14.728255,12.000000,-12.000000
-120.390000,16.799109,-14.740156,12.000000,-12.000000
-120.400000,16.812002,-14.751661,12.000000,-12.000000
-120.410000,16.824895,-14.763364,12.000000,-12.000000
-120.420000,16.837193,-14.775861,12.000000,-12.000000
-120.430000,16.850087,-14.787960,12.000000,-12.000000
-120.440000,0.0,-0.0,12.000000,-12.000000
-120.450000,0.0,-0.0,12.000000,-12.000000
-120.460000,0.0,-0.0,12.000000,-12.000000
-120.470000,0.0,-0.0,12.000000,-12.000000
-120.480000,16.913759,-14.847864,12.000000,-12.000000
-120.490000,16.926653,-14.860361,12.000000,-12.000000
-120.500000,16.939546,-14.873453,12.000000,-12.000000
-120.510000,16.952439,-14.886147,12.000000,-12.000000
-120.520000,16.965134,-14.899041,12.000000,-12.000000
-120.530000,16.978821,-14.911537,12.000000,-12.000000
-120.540000,16.991714,-14.924232,12.000000,-12.000000
-120.550000,17.004409,-14.936729,12.000000,-12.000000
-120.560000,17.018294,-14.950019,12.000000,-12.000000
-120.570000,17.030592,-14.963110,12.000000,-12.000000
-120.580000,17.043882,-14.976400,12.000000,-12.000000
-120.590000,17.057569,-14.989690,12.000000,-12.000000
-120.600000,17.071850,-15.003178,12.000000,-12.000000
-120.610000,17.085537,-15.016270,12.000000,-12.000000
-120.620000,17.099422,-15.029758,12.000000,-12.000000
-120.630000,17.113109,-15.043048,12.000000,-12.000000
-120.640000,17.127192,-15.056735,12.000000,-12.000000
-120.650000,17.141672,-15.070818,12.000000,-12.000000
-120.660000,17.155756,-15.084505,12.000000,-12.000000
-120.670000,17.170434,-15.098192,12.000000,-12.000000
-120.680000,17.185113,-15.112275,12.000000,-12.000000
-120.690000,17.199990,-15.126359,12.000000,-12.000000
-120.700000,17.214073,-15.140442,12.000000,-12.000000
-120.710000,17.228553,-15.155120,12.000000,-12.000000
-120.720000,17.243430,-15.170196,12.000000,-12.000000
-120.730000,17.258307,-15.184279,12.000000,-12.000000
-120.740000,17.273183,-15.198561,12.000000,-12.000000
-120.750000,17.288259,-15.212842,12.000000,-12.000000
-120.760000,17.303731,-15.227521,12.000000,-12.000000
-120.770000,17.319202,-15.242398,12.000000,-12.000000
-120.780000,17.334674,-15.256878,12.000000,-12.000000
-120.790000,17.350345,-15.272151,12.000000,-12.000000
-120.800000,17.365618,-15.287425,12.000000,-12.000000
-120.810000,17.381288,-15.302500,12.000000,-12.000000
-120.820000,17.396959,-15.317972,12.000000,-12.000000
-120.830000,17.412431,-15.333444,12.000000,-12.000000
-120.840000,17.428101,-15.349313,12.000000,-12.000000
-120.850000,17.443176,-15.364388,12.000000,-12.000000
-120.860000,17.458846,-15.379265,12.000000,-12.000000
-120.870000,17.474318,-15.394340,12.000000,-12.000000
-120.880000,17.489988,-15.409812,12.000000,-12.000000
-120.890000,17.505064,-15.424887,12.000000,-12.000000
-120.900000,17.520932,-15.439962,12.000000,-12.000000
-120.910000,17.536404,-15.455236,12.000000,-12.000000
-120.920000,17.552074,-15.469914,12.000000,-12.000000
-120.930000,17.567745,-15.485188,12.000000,-12.000000
-120.940000,17.584208,-15.501255,12.000000,-12.000000
-120.950000,17.600275,-15.515735,12.000000,-12.000000
-120.960000,17.616541,-15.531207,12.000000,-12.000000
-120.970000,17.633004,-15.546282,12.000000,-12.000000
-120.980000,17.649865,-15.561555,12.000000,-12.000000
-120.990000,17.666527,-15.576234,12.000000,-12.000000
-121.000000,17.682792,-15.591111,12.000000,-12.000000
-121.010000,17.699256,-15.606384,12.000000,-12.000000
-121.020000,17.715521,-15.621658,12.000000,-12.000000
-121.030000,17.731786,-15.636534,12.000000,-12.000000
-121.040000,17.747853,-15.652006,12.000000,-12.000000
-121.050000,17.763722,-15.666883,12.000000,-12.000000
-121.060000,17.779789,-15.682355,12.000000,-12.000000
-121.070000,17.796253,-15.698025,12.000000,-12.000000
-121.080000,17.812716,-15.713696,12.000000,-12.000000
-121.090000,17.828585,-15.728771,12.000000,-12.000000
-121.100000,17.845247,-15.744441,12.000000,-12.000000
-121.110000,17.861512,-15.760310,12.000000,-12.000000
-121.120000,17.877778,-15.775980,12.000000,-12.000000
-121.130000,17.894241,-15.791650,12.000000,-12.000000
-121.140000,17.910507,-15.807519,12.000000,-12.000000
-121.150000,17.926970,-15.822991,12.000000,-12.000000
-121.160000,17.943037,-15.838066,12.000000,-12.000000
-121.170000,17.959104,-15.853736,12.000000,-12.000000
-121.180000,17.975568,-15.869605,12.000000,-12.000000
-121.190000,17.992032,-15.884680,12.000000,-12.000000
-121.200000,18.008694,-15.900747,12.000000,-12.000000
-121.210000,18.024364,-15.916814,12.000000,-12.000000
-121.220000,18.040828,-15.932286,12.000000,-12.000000
-121.230000,18.057291,-15.947559,12.000000,-12.000000
-121.240000,18.073755,-15.963825,12.000000,-12.000000
-121.250000,18.090615,-15.979495,12.000000,-12.000000
-121.260000,18.107476,-15.995959,12.000000,-12.000000
-121.270000,18.123939,-16.011232,12.000000,-12.000000
-121.280000,18.140998,-16.027299,12.000000,-12.000000
-121.290000,18.157462,-16.042573,12.000000,-12.000000
-121.300000,18.174719,-16.058838,12.000000,-12.000000
-121.310000,18.191183,-16.074707,12.000000,-12.000000
-121.320000,18.208242,-16.090575,12.000000,-12.000000
-121.330000,18.225102,-16.106444,12.000000,-12.000000
-121.340000,18.242161,-16.122511,12.000000,-12.000000
-121.350000,18.258823,-16.138181,12.000000,-12.000000
-121.360000,18.276080,-16.154248,12.000000,-12.000000
-121.370000,18.292742,-16.169918,12.000000,-12.000000
-121.380000,18.309801,-16.185588,12.000000,-12.000000
-121.390000,18.326463,-16.201655,12.000000,-12.000000
-121.400000,18.343521,-16.217524,12.000000,-12.000000
-121.410000,18.359985,-16.232996,12.000000,-12.000000
-121.420000,18.377242,-16.249063,12.000000,-12.000000
-121.430000,18.394301,-16.265130,12.000000,-12.000000
-121.440000,18.411558,-16.280800,12.000000,-12.000000
-121.450000,0.0,-0.0,12.000000,-12.000000
-121.460000,0.0,-0.0,12.000000,-12.000000
-121.470000,0.0,-0.0,12.000000,-12.000000
-121.480000,18.480587,-16.345068,12.000000,-12.000000
-121.490000,18.497447,-16.360738,12.000000,-12.000000
-121.500000,18.514506,-16.377202,12.000000,-12.000000
-121.510000,18.531564,-16.392475,12.000000,-12.000000
-121.520000,18.548623,-16.408542,12.000000,-12.000000
-121.530000,18.565880,-16.424609,12.000000,-12.000000
-121.540000,18.582542,-16.441073,12.000000,-12.000000
-121.550000,18.599601,-16.456743,12.000000,-12.000000
-121.560000,18.616858,-16.473009,12.000000,-12.000000
-121.570000,18.633520,-16.489274,12.000000,-12.000000
-121.580000,18.650381,-16.505738,12.000000,-12.000000
-121.590000,18.666646,-16.522003,12.000000,-12.000000
-121.600000,18.683705,-16.537673,12.000000,-12.000000
-121.610000,18.700764,-16.553542,12.000000,-12.000000
-121.620000,18.718219,-16.570204,12.000000,-12.000000
-121.630000,18.734683,-16.585676,12.000000,-12.000000
-121.640000,18.752138,-16.602140,12.000000,-12.000000
-121.650000,18.768602,-16.618008,12.000000,-12.000000
-121.660000,18.785661,-16.634075,12.000000,-12.000000
-121.670000,18.802521,-16.649745,12.000000,-12.000000
-121.680000,18.819977,-16.666011,12.000000,-12.000000
-121.690000,18.836440,-16.681879,12.000000,-12.000000
-121.700000,18.853301,-16.697748,12.000000,-12.000000
-121.710000,18.870161,-16.713617,12.000000,-12.000000
-121.720000,18.887815,-16.729882,12.000000,-12.000000
-121.730000,18.904675,-16.745949,12.000000,-12.000000
-121.740000,18.921932,-16.762214,12.000000,-12.000000
-121.750000,18.938594,-16.777686,12.000000,-12.000000
-121.760000,18.955653,-16.793555,12.000000,-12.000000
-121.770000,18.972910,-16.809423,12.000000,-12.000000
-121.780000,18.990564,-16.825689,12.000000,-12.000000
-121.790000,19.007623,-16.841359,12.000000,-12.000000
-121.800000,19.025078,-16.857426,12.000000,-12.000000
-121.810000,19.041740,-16.873096,12.000000,-12.000000
-121.820000,19.058998,-16.889163,12.000000,-12.000000
-121.830000,19.076056,-16.905032,12.000000,-12.000000
-121.840000,19.094107,-16.921694,12.000000,-12.000000
-121.850000,19.110372,-16.937364,12.000000,-12.000000
-121.860000,19.128423,-16.953828,12.000000,-12.000000
-121.870000,19.144886,-16.969300,12.000000,-12.000000
-121.880000,19.162540,-16.986160,12.000000,-12.000000
-121.890000,19.179004,-17.001433,12.000000,-12.000000
-121.900000,19.196459,-17.017897,12.000000,-12.000000
-121.910000,19.213716,-17.033964,12.000000,-12.000000
-121.920000,19.231172,-17.050428,12.000000,-12.000000
-121.930000,19.248231,-17.066098,12.000000,-12.000000
-121.940000,19.265885,-17.082562,12.000000,-12.000000
-121.950000,19.283340,-17.099025,12.000000,-12.000000
-121.960000,19.301192,-17.115886,12.000000,-12.000000
-121.970000,19.318251,-17.131754,12.000000,-12.000000
-121.980000,19.335905,-17.148218,12.000000,-12.000000
-121.990000,19.352765,-17.164285,12.000000,-12.000000
-122.000000,19.370022,-17.180947,12.000000,-12.000000
-122.010000,19.387081,-17.197411,12.000000,-12.000000
-122.020000,19.404933,-17.214073,12.000000,-12.000000
-122.030000,19.421199,-17.229942,12.000000,-12.000000
-122.040000,19.439448,-17.247000,12.000000,-12.000000
-122.050000,19.455514,-17.262472,12.000000,-12.000000
-122.060000,19.472772,-17.279333,12.000000,-12.000000
-122.070000,19.489632,-17.295400,12.000000,-12.000000
-122.080000,19.507087,-17.311665,12.000000,-12.000000
-122.090000,19.523948,-17.327930,12.000000,-12.000000
-122.100000,19.541403,-17.343799,12.000000,-12.000000
-122.110000,19.558462,-17.360064,12.000000,-12.000000
-122.120000,19.576116,-17.376925,12.000000,-12.000000
-122.130000,19.592976,-17.392992,12.000000,-12.000000
-122.140000,19.610432,-17.409654,12.000000,-12.000000
-122.150000,19.627491,-17.425125,12.000000,-12.000000
-122.160000,19.644946,-17.441788,12.000000,-12.000000
-122.170000,19.661608,-17.457458,12.000000,-12.000000
-122.180000,19.679262,-17.473525,12.000000,-12.000000
-122.190000,19.696321,-17.489195,12.000000,-12.000000
-122.200000,19.713379,-17.505262,12.000000,-12.000000
-122.210000,19.730438,-17.520932,12.000000,-12.000000
-122.220000,19.748687,-17.537198,12.000000,-12.000000
-122.230000,19.765349,-17.552868,12.000000,-12.000000
-122.240000,19.783003,-17.569728,12.000000,-12.000000
-122.250000,19.799665,-17.585398,12.000000,-12.000000
-122.260000,19.817517,-17.601862,12.000000,-12.000000
-122.270000,19.834378,-17.617136,12.000000,-12.000000
-122.280000,19.851635,-17.633401,12.000000,-12.000000
-122.290000,19.869090,-17.649270,12.000000,-12.000000
-122.300000,19.886347,-17.665535,12.000000,-12.000000
-122.310000,19.903604,-17.681404,12.000000,-12.000000
-122.320000,19.921258,-17.698066,12.000000,-12.000000
-122.330000,19.938119,-17.713934,12.000000,-12.000000
-122.340000,19.955177,-17.729803,12.000000,-12.000000
-122.350000,19.972435,-17.746068,12.000000,-12.000000
-122.360000,19.989692,-17.762532,12.000000,-12.000000
-122.370000,20.005957,-17.778400,12.000000,-12.000000
-122.380000,20.023611,-17.794864,12.000000,-12.000000
-122.390000,20.040075,-17.810534,12.000000,-12.000000
-122.400000,20.057530,-17.826998,12.000000,-12.000000
-122.410000,20.074589,-17.842867,12.000000,-12.000000
-122.420000,20.092243,-17.859925,12.000000,-12.000000
-122.430000,20.109103,-17.875199,12.000000,-12.000000
-122.440000,20.126360,-17.891663,12.000000,-12.000000
-122.450000,0.0,-0.0,12.000000,-12.000000
-122.460000,0.0,-0.0,12.000000,-12.000000
-122.470000,0.0,-0.0,12.000000,-12.000000
-122.480000,20.195587,-17.957319,12.000000,-12.000000
-122.490000,20.212249,-17.973188,12.000000,-12.000000
-122.500000,20.229506,-17.989651,12.000000,-12.000000
-122.510000,20.246565,-18.005520,12.000000,-12.000000
-122.520000,20.263822,-18.022182,12.000000,-12.000000
-122.530000,20.281079,-18.038051,12.000000,-12.000000
-122.540000,20.298733,-18.054911,12.000000,-12.000000
-122.550000,20.314998,-18.070185,12.000000,-12.000000
-122.560000,20.333049,-18.087243,12.000000,-12.000000
-122.570000,20.350108,-18.102914,12.000000,-12.000000
-122.580000,20.367761,-18.119576,12.000000,-12.000000
-122.590000,20.385018,-18.135643,12.000000,-12.000000
-122.600000,20.402276,-18.152106,12.000000,-12.000000
-122.610000,20.419929,-18.167777,12.000000,-12.000000
-122.620000,20.437782,-18.184835,12.000000,-12.000000
-122.630000,20.455039,-18.200704,12.000000,-12.000000
-122.640000,20.472296,-18.216969,12.000000,-12.000000
-122.650000,20.489355,-18.233036,12.000000,-12.000000
-122.660000,20.507604,-18.249698,12.000000,-12.000000
-122.670000,20.524861,-18.265170,12.000000,-12.000000
-122.680000,20.542118,-18.281634,12.000000,-12.000000
-122.690000,20.559177,-18.297106,12.000000,-12.000000
-122.700000,20.576235,-18.313371,12.000000,-12.000000
-122.710000,20.593492,-18.329240,12.000000,-12.000000
-122.720000,20.610948,-18.346100,12.000000,-12.000000
-122.730000,20.628205,-18.361770,12.000000,-12.000000
-122.740000,20.646454,-18.378631,12.000000,-12.000000
-122.750000,20.662918,-18.393904,12.000000,-12.000000
-122.760000,20.681166,-18.410765,12.000000,-12.000000
-122.770000,20.697829,-18.426435,12.000000,-12.000000
-122.780000,20.715681,-18.442700,12.000000,-12.000000
-122.790000,20.732739,-18.458767,12.000000,-12.000000
-122.800000,20.749997,-18.474636,12.000000,-12.000000
-122.810000,20.767254,-18.491100,12.000000,-12.000000
-122.820000,20.784709,-18.507762,12.000000,-12.000000
-122.830000,20.802958,-18.525217,12.000000,-12.000000
-122.840000,20.820017,-18.541681,12.000000,-12.000000
-122.850000,20.835290,-18.555962,12.000000,-12.000000
-122.860000,20.852547,-18.572228,12.000000,-12.000000
-122.870000,0.0,-0.0,12.000000,-12.000000
-122.880000,0.0,-0.0,12.000000,-12.000000
-122.890000,0.0,-0.0,12.000000,-12.000000
-122.900000,0.0,-0.0,12.000000,-12.000000
-122.910000,20.938833,-18.652959,12.000000,-12.000000
-122.920000,20.956289,-18.669026,12.000000,-12.000000
-122.930000,20.973744,-18.685292,12.000000,-12.000000
-122.940000,20.991596,-18.702350,12.000000,-12.000000
-122.950000,21.008258,-18.718021,12.000000,-12.000000
-122.960000,21.025912,-18.734683,12.000000,-12.000000
-122.970000,21.042772,-18.750948,12.000000,-12.000000
-122.980000,21.061021,-18.768205,12.000000,-12.000000
-122.990000,21.077882,-18.783875,12.000000,-12.000000
-123.000000,21.094941,-18.800141,12.000000,-12.000000
-123.010000,21.111999,-18.816406,12.000000,-12.000000
diff --git a/frc971/control_loops/matlab/drivetrain_spin_low.mat b/frc971/control_loops/matlab/drivetrain_spin_low.mat
deleted file mode 100644
index 457083f..0000000
--- a/frc971/control_loops/matlab/drivetrain_spin_low.mat
+++ /dev/null
Binary files differ
diff --git a/frc971/control_loops/matlab/drivetrain_strait_low.csv b/frc971/control_loops/matlab/drivetrain_strait_low.csv
deleted file mode 100644
index 6966f5b..0000000
--- a/frc971/control_loops/matlab/drivetrain_strait_low.csv
+++ /dev/null
@@ -1,103 +0,0 @@
-11.590000,15.318369,-16.398228,12.000000,12.000000
-11.600000,15.318369,-16.398228,12.000000,12.000000
-11.610000,15.318369,-16.398228,12.000000,12.000000
-11.620000,15.318369,-16.398228,12.000000,12.000000
-11.630000,15.318369,-16.398228,12.000000,12.000000
-11.640000,15.321146,-16.395649,12.000000,12.000000
-11.650000,15.329278,-16.388707,12.000000,12.000000
-11.660000,15.338403,-16.380772,12.000000,12.000000
-11.670000,15.347924,-16.372045,12.000000,12.000000
-11.680000,15.358635,-16.362325,12.000000,12.000000
-11.690000,15.369545,-16.351812,12.000000,12.000000
-11.700000,15.381050,-16.341101,12.000000,12.000000
-11.710000,15.392555,-16.329993,12.000000,12.000000
-11.720000,15.404258,-16.319083,12.000000,12.000000
-11.730000,15.415961,-16.308173,12.000000,12.000000
-11.740000,15.428061,-16.294685,12.000000,12.000000
-11.750000,15.440954,-16.283379,12.000000,12.000000
-11.760000,15.453847,-16.268502,12.000000,12.000000
-11.770000,15.466939,-16.255014,12.000000,12.000000
-11.780000,15.479038,-16.241327,12.000000,12.000000
-11.790000,15.491138,-16.228235,12.000000,12.000000
-11.800000,15.503635,-16.216136,12.000000,12.000000
-11.810000,15.515933,-16.204234,12.000000,12.000000
-11.820000,15.528628,-16.192134,12.000000,12.000000
-11.830000,15.541521,-16.179043,12.000000,12.000000
-11.840000,15.554811,-16.165951,12.000000,12.000000
-11.850000,15.568299,-16.152859,12.000000,12.000000
-11.860000,15.581589,-16.139569,12.000000,12.000000
-11.870000,15.595673,-16.126081,12.000000,12.000000
-11.880000,15.610153,-16.112791,12.000000,12.000000
-11.890000,15.624435,-16.098708,12.000000,12.000000
-11.900000,15.638716,-16.084228,12.000000,12.000000
-11.910000,15.653395,-16.069946,12.000000,12.000000
-11.920000,15.668272,-16.055466,12.000000,12.000000
-11.930000,15.683347,-16.040787,12.000000,12.000000
-11.940000,15.698620,-16.026307,12.000000,12.000000
-11.950000,15.714092,-16.011430,12.000000,12.000000
-11.960000,15.728969,-15.996554,12.000000,12.000000
-11.970000,15.744243,-15.981478,12.000000,12.000000
-11.980000,15.759715,-15.966205,12.000000,12.000000
-11.990000,15.774988,-15.950931,12.000000,12.000000
-12.000000,15.789865,-15.935459,12.000000,12.000000
-12.010000,15.805535,-15.920186,12.000000,12.000000
-12.020000,15.821205,-15.904516,12.000000,12.000000
-12.030000,15.836876,-15.888845,12.000000,12.000000
-12.040000,15.852744,-15.873175,12.000000,12.000000
-12.050000,15.868613,-15.857703,12.000000,12.000000
-12.060000,15.884680,-15.841835,12.000000,12.000000
-12.070000,15.900747,-15.826164,12.000000,12.000000
-12.080000,15.916615,-15.810296,12.000000,12.000000
-12.090000,15.932881,-15.794427,12.000000,12.000000
-12.100000,15.949146,-15.778162,12.000000,12.000000
-12.110000,15.965213,-15.762293,12.000000,12.000000
-12.120000,15.981677,-15.746226,12.000000,12.000000
-12.130000,0.0,-0.0,12.000000,12.000000
-12.140000,0.0,-0.0,12.000000,12.000000
-12.150000,0.0,-0.0,12.000000,12.000000
-12.160000,16.048127,-15.680173,12.000000,12.000000
-12.170000,16.064194,-15.663709,12.000000,12.000000
-12.180000,16.081649,-15.647047,12.000000,12.000000
-12.190000,16.098113,-15.630385,12.000000,12.000000
-12.200000,16.114973,-15.613525,12.000000,12.000000
-12.210000,16.131834,-15.597061,12.000000,12.000000
-12.220000,16.148892,-15.580399,12.000000,12.000000
-12.230000,16.165951,-15.563340,12.000000,12.000000
-12.240000,16.183010,-15.546877,12.000000,12.000000
-12.250000,16.200069,-15.530016,12.000000,12.000000
-12.260000,16.217326,-15.512958,12.000000,12.000000
-12.270000,16.234583,-15.495700,12.000000,12.000000
-12.280000,16.251840,-15.478840,12.000000,12.000000
-12.290000,16.268899,-15.461980,12.000000,12.000000
-12.300000,16.286156,-15.445119,12.000000,12.000000
-12.310000,16.303215,-15.428061,12.000000,12.000000
-12.320000,16.320273,-15.411002,12.000000,12.000000
-12.330000,16.337729,-15.393943,12.000000,12.000000
-12.340000,16.354589,-15.376884,12.000000,12.000000
-12.350000,16.371648,-15.359825,12.000000,12.000000
-12.360000,16.389103,-15.342767,12.000000,12.000000
-12.370000,16.406162,-15.325708,12.000000,12.000000
-12.380000,16.423221,-15.308649,12.000000,12.000000
-12.390000,16.440676,-15.291590,12.000000,12.000000
-12.400000,16.457934,-15.274333,12.000000,12.000000
-12.410000,16.475191,-15.257671,12.000000,12.000000
-12.420000,16.492646,-15.240216,12.000000,12.000000
-12.430000,16.509903,-15.222959,12.000000,12.000000
-12.440000,16.527557,-15.205900,12.000000,12.000000
-12.450000,16.544616,-15.189040,12.000000,12.000000
-12.460000,16.561873,-15.171782,12.000000,12.000000
-12.470000,16.579130,-15.154922,12.000000,12.000000
-12.480000,16.596982,-15.137665,12.000000,12.000000
-12.490000,16.614239,-15.120209,12.000000,12.000000
-12.500000,16.631100,-15.103151,12.000000,12.000000
-12.510000,16.648159,-15.085894,12.000000,12.000000
-12.520000,16.666011,-15.068636,12.000000,12.000000
-12.530000,16.683069,-15.051379,12.000000,12.000000
-12.540000,16.700327,-15.034321,12.000000,12.000000
-12.550000,16.717782,-15.017262,12.000000,12.000000
-12.560000,16.734841,-15.000203,12.000000,12.000000
-12.570000,16.752495,-14.982946,12.000000,12.000000
-12.580000,16.769752,-14.965887,12.000000,12.000000
-12.590000,16.787009,-14.948828,12.000000,12.000000
-12.600000,16.804464,-14.931175,12.000000,12.000000
-12.610000,16.821920,-14.914314,12.000000,12.000000
diff --git a/frc971/control_loops/matlab/drivetrain_strait_low.mat b/frc971/control_loops/matlab/drivetrain_strait_low.mat
deleted file mode 100644
index e6a4973..0000000
--- a/frc971/control_loops/matlab/drivetrain_strait_low.mat
+++ /dev/null
Binary files differ
diff --git a/frc971/control_loops/matlab/drivetrain_strait_low_wgaps.csv b/frc971/control_loops/matlab/drivetrain_strait_low_wgaps.csv
deleted file mode 100644
index 0091dd2..0000000
--- a/frc971/control_loops/matlab/drivetrain_strait_low_wgaps.csv
+++ /dev/null
@@ -1,185 +0,0 @@
-31783,-2.373349,-1.651328,1.000000
-31784,-2.373349,-1.651328,1.000000
-31785,-2.373349,-1.651328,1.000000
-31786,-2.373349,-1.651328,1.000000
-31787,-2.370771,-1.651328,1.000000
-31788,-2.364622,-1.649344,1.000000
-31789,-2.356489,-1.639624,1.000000
-31790,-2.348158,-1.632880,1.000000
-31791,-2.336257,-1.622367,1.000000
-31792,-2.325744,-1.612449,1.000000
-31793,-2.312652,-1.599755,1.000000
-31794,-2.301941,-1.589440,1.000000
-31795,-2.288651,-1.577142,1.000000
-31796,-2.278138,-1.567224,1.000000
-31797,-2.263856,-1.553934,1.000000
-31798,-2.251558,-1.542231,1.000000
-31799,-2.236681,-1.526957,1.000000
-31800,-2.223589,-1.513072,1.000000
-31801,-2.211093,-1.499386,1.000000
-31802,-2.198200,-1.486294,1.000000
-31803,-2.185505,-1.473004,1.000000
-31804,-2.173603,-1.462491,1.000000
-31805,-2.160115,-1.450193,1.000000
-31806,-2.145238,-1.436506,1.000000
-31807,-2.131353,-1.423613,1.000000
-31808,-2.117666,-1.410521,1.000000
-31809,-2.103980,-1.397231,1.000000
-31810,-2.089500,-1.383148,1.000000
-31811,-2.076011,-1.369660,1.000000
-31812,-2.063316,-1.357163,1.000000
-31813,-2.047646,-1.341493,1.000000
-31814,-2.034356,-1.328600,1.000000
-31815,-2.017496,-1.312533,1.000000
-31816,-2.002619,-1.297854,1.000000
-31817,-1.987544,-1.282977,1.000000
-31818,-1.974055,-1.269886,1.000000
-31819,-1.957195,-1.253819,1.000000
-31820,-1.941525,-1.238347,1.000000
-31821,-1.927441,-1.224859,1.000000
-31822,-1.910383,-1.208197,1.000000
-31823,-1.896299,-1.194311,1.000000
-31824,-1.879042,-1.177253,1.000000
-31825,-1.862578,-1.161384,1.000000
-31826,-1.846908,-1.145515,1.000000
-31827,-1.829254,-1.128060,1.000000
-31828,-1.814378,-1.114175,1.000000
-31829,-1.798906,-1.098306,1.000000
-31830,-1.782442,-1.081644,1.000000
-31831,-1.765978,-1.065776,1.000000
-31832,-1.751697,-1.051097,1.000000
-31833,-1.735233,-1.035229,1.000000
-31834,-1.718571,-1.019162,1.000000
-31835,-1.700124,-1.000913,1.000000
-31836,-1.683461,-0.984846,1.000000
-31837,-1.666799,-0.968382,1.000000
-31838,-1.650137,-0.952117,1.000000
-31839,-1.633277,-0.935851,1.000000
-31840,-1.616020,-0.919189,1.000000
-31841,-1.599358,-0.902527,1.000000
-31842,-1.582696,-0.885469,1.000000
-31843,-1.565835,-0.868608,1.000000
-31844,-1.548975,-0.851748,1.000000
-31845,-1.533305,-0.836474,1.000000
-31846,-1.516643,-0.820209,1.000000
-31847,-1.497997,-0.801762,1.000000
-31848,-1.481137,-0.784901,1.000000
-31849,-1.463880,-0.767843,1.000000
-31850,-1.446424,-0.750784,1.000000
-31851,-1.430952,-0.735709,1.000000
-31852,-1.411711,-0.717261,1.000000
-31853,-1.396240,-0.701789,1.000000
-31854,-1.377197,-0.682747,1.000000
-31855,-1.359543,-0.665688,1.000000
-31856,-1.342286,-0.648630,1.000000
-31857,-1.325029,-0.631174,1.000000
-31864,-1.204626,-0.512358,1.000000
-31865,-1.187171,-0.495299,1.000000
-31866,-1.169517,-0.478240,1.000000
-31867,-1.152260,-0.460785,1.000000
-31868,-1.134606,-0.443726,1.000000
-31869,-1.117150,-0.426667,1.000000
-31870,-1.097116,-0.407228,1.000000
-31871,-1.081446,-0.391756,1.000000
-31872,-1.062205,-0.373111,1.000000
-31873,-1.044551,-0.355457,1.000000
-31874,-1.027096,-0.337803,1.000000
-31875,-1.009045,-0.320546,1.000000
-31876,-0.993574,-0.304876,1.000000
-31877,-0.974134,-0.286032,1.000000
-31878,-0.958861,-0.270560,1.000000
-31879,-0.939422,-0.250724,1.000000
-31880,-0.921371,-0.233467,1.000000
-31881,-0.903916,-0.216408,1.000000
-31882,-0.886659,-0.199349,1.000000
-31883,-0.870592,-0.183679,1.000000
-31884,-0.850954,-0.164439,1.000000
-31885,-0.834887,-0.148768,1.000000
-31886,-0.815448,-0.129726,1.000000
-31887,-0.797795,-0.112667,1.000000
-31888,-0.779942,-0.095013,1.000000
-31889,-0.762090,-0.077955,1.000000
-31890,-0.746420,-0.061689,1.000000
-31891,-0.727179,-0.042647,1.000000
-31892,-0.709525,-0.025390,1.000000
-31893,-0.693657,-0.009720,1.000000
-31894,-0.674416,0.009323,1.000000
-31895,-0.658349,0.025390,1.000000
-31896,-0.640695,0.042449,1.000000
-31897,-0.621455,0.061491,1.000000
-31898,-0.603999,0.078748,1.000000
-31899,-0.586147,0.096402,1.000000
-31900,-0.567898,0.113659,1.000000
-31901,-0.550443,0.130718,1.000000
-31902,-0.532590,0.148570,1.000000
-31903,-0.514936,0.165827,1.000000
-31904,-0.497283,0.183282,1.000000
-31905,-0.481216,0.199151,1.000000
-31906,-0.463562,0.216607,1.000000
-31907,-0.445710,0.234062,1.000000
-31908,-0.428056,0.251518,1.000000
-31909,-0.408815,0.270560,1.000000
-31910,-0.390765,0.288412,1.000000
-31911,-0.373706,0.305471,1.000000
-31912,-0.357441,0.320943,1.000000
-31913,-0.337803,0.340580,1.000000
-31914,-0.321934,0.356052,1.000000
-31915,-0.302495,0.375491,1.000000
-31916,-0.284643,0.392550,1.000000
-31917,-0.266791,0.410005,1.000000
-31918,-0.248939,0.427659,1.000000
-31919,-0.231285,0.444916,1.000000
-31920,-0.213234,0.462570,1.000000
-31921,-0.195581,0.479827,1.000000
-31922,-0.178125,0.497084,1.000000
-31923,-0.160273,0.514738,1.000000
-31924,-0.142818,0.532194,1.000000
-31925,-0.126949,0.548261,1.000000
-31926,-0.109097,0.566113,1.000000
-31927,-0.089459,0.585552,1.000000
-31928,-0.071607,0.602809,1.000000
-31929,-0.053557,0.620463,1.000000
-31930,-0.035308,0.638315,1.000000
-31931,-0.017852,0.655572,1.000000
-31932,0.000198,0.673424,1.000000
-31933,0.016265,0.688896,1.000000
-31934,0.036101,0.708732,1.000000
-31935,0.054152,0.726187,1.000000
-31936,0.071607,0.743841,1.000000
-31937,0.089658,0.761693,1.000000
-31938,0.107113,0.779149,1.000000
-31939,0.124965,0.796803,1.000000
-31940,0.141429,0.812671,1.000000
-31941,0.158884,0.830325,1.000000
-31942,0.177927,0.849368,1.000000
-31943,0.195581,0.867418,1.000000
-31944,0.213433,0.884874,1.000000
-31945,0.229500,0.900742,1.000000
-31946,0.249336,0.919784,1.000000
-31947,0.266989,0.937240,1.000000
-31948,0.285040,0.954695,1.000000
-31949,0.301107,0.970564,1.000000
-31950,0.320943,0.989805,1.000000
-31951,0.338200,1.007260,1.000000
-31952,0.355854,1.024517,1.000000
-31953,0.372119,1.040584,1.000000
-31954,0.391360,1.059627,1.000000
-31955,0.409609,1.077479,1.000000
-31956,0.426866,1.094934,1.000000
-31957,0.444718,1.112191,1.000000
-31964,0.566906,1.232793,1.000000
-31965,0.584362,1.250248,-1.000000
-31966,0.602412,1.267902,-1.000000
-31967,0.620066,1.285556,-1.000000
-31968,0.637720,1.302615,-1.000000
-31969,0.656762,1.317690,-1.000000
-31970,0.664895,1.321062,-1.000000
-31971,0.667077,1.320070,-1.000000
-31972,0.669655,1.316698,-1.000000
-31973,0.666482,1.313524,-1.000000
-31974,0.660928,1.307177,-1.000000
-31975,0.652002,1.297656,-1.000000
-31976,0.641687,1.287143,-1.000000
-31977,0.630777,1.276630,-1.000000
-31978,0.619273,1.268101,-1.000000
-31979,0.608760,1.256992,-1.000000
\ No newline at end of file
diff --git a/frc971/control_loops/matlab/drivetrain_strait_low_wgaps.mat b/frc971/control_loops/matlab/drivetrain_strait_low_wgaps.mat
deleted file mode 100644
index e9cd690..0000000
--- a/frc971/control_loops/matlab/drivetrain_strait_low_wgaps.mat
+++ /dev/null
Binary files differ
diff --git a/frc971/control_loops/matlab/writeMat.m b/frc971/control_loops/matlab/writeMat.m
deleted file mode 100644
index b1541f5..0000000
--- a/frc971/control_loops/matlab/writeMat.m
+++ /dev/null
@@ -1,16 +0,0 @@
-function writeMat(fd, matrix, name)
-    %fprintf(fd, '%s = init_matrix(%d, %d);\n', name, size(matrix, 1), size(matrix, 2));
-    fprintf(fd, '%s << ', name);
-    first_loop = 1;
-    for i=1:size(matrix, 1)
-        for j=1:size(matrix, 2)
-            if first_loop
-                first_loop = 0;
-            else
-                fprintf(fd, ', ');
-            end
-            fprintf(fd, '%.10f', matrix(i, j));
-        end
-    end
-    fprintf(fd, '; \\\n');
-end
\ No newline at end of file
diff --git a/frc971/control_loops/matlab/writeMatFlash.m b/frc971/control_loops/matlab/writeMatFlash.m
deleted file mode 100644
index 10104d0..0000000
--- a/frc971/control_loops/matlab/writeMatFlash.m
+++ /dev/null
@@ -1,16 +0,0 @@
-function writeMatFlash(fd, matrix, name)
-    %fprintf(fd, '%s = init_matrix(%d, %d);\n', name, size(matrix, 1), size(matrix, 2));
-    fprintf(fd, 'flash_matrix(%s, ', name);
-    first_loop = 1;
-    for i=1:size(matrix, 1)
-        for j=1:size(matrix, 2)
-            if first_loop
-                first_loop = 0;
-            else
-                fprintf(fd, ', ');
-            end
-            fprintf(fd, '%.10f', matrix(i, j));
-        end
-    end
-    fprintf(fd, ');\n');
-end
diff --git a/frc971/control_loops/matlab/writeMatFooter.m b/frc971/control_loops/matlab/writeMatFooter.m
deleted file mode 100644
index b23664e..0000000
--- a/frc971/control_loops/matlab/writeMatFooter.m
+++ /dev/null
@@ -1,3 +0,0 @@
-function writeMatFooter(fd)
-    fprintf(fd, '\n');
-end
\ No newline at end of file
diff --git a/frc971/control_loops/matlab/writeMatFooterFlash.m b/frc971/control_loops/matlab/writeMatFooterFlash.m
deleted file mode 100644
index 5326a94..0000000
--- a/frc971/control_loops/matlab/writeMatFooterFlash.m
+++ /dev/null
@@ -1,3 +0,0 @@
-function writeMatFooterFlash(fd)
-    fprintf(fd, '\n');
-end
diff --git a/frc971/control_loops/matlab/writeMatHeader.m b/frc971/control_loops/matlab/writeMatHeader.m
deleted file mode 100644
index 5c100f3..0000000
--- a/frc971/control_loops/matlab/writeMatHeader.m
+++ /dev/null
@@ -1,4 +0,0 @@
-function writeMatHeader(fd, number_of_states, number_of_outputs)
-    fprintf(fd, 'typedef StateFeedbackLoop<%d, %d> MatrixClass;\n', number_of_states, number_of_outputs);
-    fprintf(fd, '#define MATRIX_INIT ');
-end
\ No newline at end of file
diff --git a/frc971/control_loops/matlab/writeMatHeaderFlash.m b/frc971/control_loops/matlab/writeMatHeaderFlash.m
deleted file mode 100644
index 88a6cc6..0000000
--- a/frc971/control_loops/matlab/writeMatHeaderFlash.m
+++ /dev/null
@@ -1,4 +0,0 @@
-function writeMatHeaderFlash(fd, number_of_states, number_of_outputs)
-    fprintf(fd, 'typedef StateFeedbackLoop<%d, %d> MatrixClass;\n', number_of_states, number_of_outputs);
-    fprintf(fd, '#define MATRIX_INIT ');
-end
diff --git a/frc971/frc971.gyp b/frc971/frc971.gyp
index 4707e66..0f38180 100644
--- a/frc971/frc971.gyp
+++ b/frc971/frc971.gyp
@@ -1,52 +1,15 @@
 {
   'targets': [
     {
-      'target_name': 'constants',
-      'type': 'static_library',
-      'sources': [
-        'constants.cc',
-      ],
+      'target_name': 'All',
+      'type': 'none',
       'dependencies': [
-        '<(AOS)/build/aos.gyp:logging',
-        '<(AOS)/common/common.gyp:once',
-        '<(AOS)/common/network/network.gyp:team_number',
-        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
-        '<(DEPTH)/frc971/control_loops/drivetrain/drivetrain.gyp:polydrivetrain_plants',
-      ],
-      'export_dependent_settings': [
-        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
-      ],
-    },
-    {
-      'target_name': 'joystick_reader',
-      'type': 'executable',
-      'sources': [
-        'joystick_reader.cc',
-      ],
-      'dependencies': [
-        '<(AOS)/prime/input/input.gyp:joystick_input',
-        '<(AOS)/linux_code/linux_code.gyp:init',
-        '<(AOS)/build/aos.gyp:logging',
-        '<(AOS)/common/common.gyp:time',
-        '<(AOS)/common/util/util.gyp:log_interval',
-        '<(AOS)/common/actions/actions.gyp:action_lib',
+        '<(AOS)/build/aos_all.gyp:Prime',
 
-        '<(DEPTH)/frc971/queues/queues.gyp:gyro',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
-        '<(DEPTH)/frc971/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/autonomous/autonomous.gyp:auto_queue',
-        '<(DEPTH)/frc971/actors/actors.gyp:stack_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:stack_and_lift_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:stack_and_hold_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:pickup_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:lift_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:held_to_lift_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:can_pickup_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:score_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:horizontal_can_pickup_action_lib',
-        '<(DEPTH)/frc971/actors/actors.gyp:fridge_profile_lib',
+        'control_loops/control_loops.gyp:state_feedback_loop_test',
+        'control_loops/control_loops.gyp:position_sensor_sim_test',
+        'zeroing/zeroing.gyp:zeroing_test',
+        'control_loops/voltage_cap/voltage_cap.gyp:voltage_cap_test',
       ],
     },
   ],
diff --git a/frc971/prime/build.sh b/frc971/prime/build.sh
deleted file mode 100755
index fe48451..0000000
--- a/frc971/prime/build.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-cd $(dirname $0)
-
-exec ../../aos/build/build.py $0 prime prime.gyp "$@"
diff --git a/frc971/vision/CameraServer.cc b/frc971/vision/CameraServer.cc
deleted file mode 100644
index 35b16b4..0000000
--- a/frc971/vision/CameraServer.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <string.h>
-
-#include "aos/linux_code/output/HTTPServer.h"
-#include "aos/linux_code/output/evhttp_ctemplate_emitter.h"
-#include "aos/linux_code/output/ctemplate_cache.h"
-#include "ctemplate/template.h"
-#include "aos/linux_code/init.h"
-#include "aos/common/logging/logging.h"
-#include "aos/linux_code/configuration.h"
-
-#include "frc971/constants.h"
-
-RegisterTemplateFilename(ROBOT_HTML, "robot.html.tpl");
-
-namespace frc971 {
-
-class CameraServer : public aos::http::HTTPServer {
- public:
-  CameraServer() : HTTPServer(::aos::configuration::GetRootDirectory(), 8080),
-      buf_(NULL) {
-    AddPage<CameraServer>("/robot.html", &CameraServer::RobotHTML, this);
-  }
-
- private:
-  evbuffer *buf_;
-  bool Setup(evhttp_request *request, const char *content_type) {
-    if (evhttp_add_header(evhttp_request_get_output_headers(request),
-                          "Content-Type", content_type) == -1) {
-      LOG(WARNING, "adding Content-Type failed\n");
-      evhttp_send_error(request, HTTP_INTERNAL, NULL);
-      return false;
-    }
-    if (buf_ == NULL) buf_ = evbuffer_new();
-    if (buf_ == NULL) {
-      LOG(WARNING, "evbuffer_new() failed\n");
-      evhttp_send_error(request, HTTP_INTERNAL, NULL);
-      return false;
-    }
-    return true;
-  }
-  void RobotHTML(evhttp_request *request) {
-    if (!Setup(request, "text/html")) return;
-
-    ctemplate::TemplateDictionary dict(ROBOT_HTML);
-    const char *host = evhttp_find_header(
-        evhttp_request_get_input_headers(request), "Host");
-    if (host == NULL) {
-      evhttp_send_error(request, HTTP_BADREQUEST, "no Host header");
-      return;
-    }
-    const char *separator = strchrnul(host, ':');
-    size_t length = separator - host;
-    // Don't include the last ':' (or the terminating '\0') or anything else
-    // after it.
-    dict.SetValue("HOST", ctemplate::TemplateString(host, length));
-
-    dict.SetIntValue("CENTER", constants::GetValues().camera_center);
-
-    aos::http::EvhttpCtemplateEmitter emitter(buf_);
-    if (!aos::http::get_template_cache()->
-        ExpandWithData(ROBOT_HTML, ctemplate::STRIP_WHITESPACE,
-                       &dict, NULL, &emitter)) {
-      LOG(ERROR, "expanding the template failed\n");
-      evhttp_send_error(request, HTTP_INTERNAL, NULL);
-      return;
-    }
-    if (emitter.error()) {
-      evhttp_send_error(request, HTTP_INTERNAL, NULL);
-      return;
-    }
-    evhttp_send_reply(request, HTTP_OK, NULL, buf_);
-  }
-};
-
-}  // namespace frc971
-
-int main() {
-  ::aos::InitNRT();
-  ::frc971::CameraServer server;
-  server.Run();
-  ::aos::Cleanup();
-}
diff --git a/frc971/vision/robot.html.tpl b/frc971/vision/robot.html.tpl
deleted file mode 100644
index 7ae51a6..0000000
--- a/frc971/vision/robot.html.tpl
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <title>971 Camera Code: Robot Stream</title>
-    <style type="text/css">
-      #body {
-        display: block;
-        margin: 0px;
-        margin-top: 0px;
-        margin-right: 0px;
-        margin-bottom: 0px;
-        margin-left: 0px;
-      }
-      #img {
-        position: absolute;
-        left: 50%;
-        top: 0%;
-        margin: 0 0 0 -320px;
-      }
-      #center {
-        left: 50%;
-        position: absolute;
-        width: 2px;
-        height: 100%;
-        background-color: red;
-      }
-      #middle {
-        top: 240px;
-        margin-top: -1px;
-        width: 100%;
-        position: absolute;
-        height: 2px;
-        background-color: red;
-      }
-      #footer {
-        top: 482px;
-        left: 10px;
-        position: absolute;
-      }
-      #center {
-        margin-left: {{CENTER}}px;
-      }
-    </style>
-  </head>
-  <body id="body">
-        <img id="img" src="http://{{HOST}}:9714" />
-        <div id="center"></div>
-        <div id="middle"></div>
-        <div id="footer">
-          <!--<form>
-            <input type="button" value="Camera Controls"
-           onclick="window.open('control.htm', 'Camera_Controls')">
-   </form>-->
-        </div>
-  </body>
-</html>
diff --git a/frc971/vision/vision.gyp b/frc971/vision/vision.gyp
deleted file mode 100644
index b5cf558..0000000
--- a/frc971/vision/vision.gyp
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  'targets': [
-    {
-      'target_name': 'CameraServer',
-      'type': 'executable',
-      'sources': [
-        'CameraServer.cc',
-      ],
-      'dependencies': [
-        '<(AOS)/linux_code/output/output.gyp:http_server',
-        '../frc971.gyp:constants',
-        '<(AOS)/linux_code/linux_code.gyp:init',
-        '<(AOS)/build/aos.gyp:logging',
-        '<(AOS)/linux_code/linux_code.gyp:configuration',
-      ],
-      'copies': [
-        {
-          'destination': '<(rsync_dir)',
-          'files': [
-            'robot.html.tpl',
-          ],
-        },
-      ],
-    },
-  ],
-}
diff --git a/frc971/wpilib/wpilib.gyp b/frc971/wpilib/wpilib.gyp
index 3422782..997b810 100644
--- a/frc971/wpilib/wpilib.gyp
+++ b/frc971/wpilib/wpilib.gyp
@@ -1,40 +1,6 @@
 {
   'targets': [
     {
-      'target_name': 'wpilib_interface',
-      'type': 'executable',
-      'sources': [
-        'wpilib_interface.cc'
-      ],
-      'dependencies': [
-        '<(AOS)/linux_code/linux_code.gyp:init',
-        '<(AOS)/common/common.gyp:stl_mutex',
-        '<(AOS)/build/aos.gyp:logging',
-        '<(EXTERNALS):WPILib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
-        '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(AOS)/common/util/util.gyp:log_interval',
-        '<(AOS)/common/common.gyp:time',
-        '<(AOS)/common/logging/logging.gyp:queue_logging',
-        '<(AOS)/common/messages/messages.gyp:robot_state',
-        '<(AOS)/common/util/util.gyp:phased_loop',
-        '<(AOS)/common/messages/messages.gyp:robot_state',
-        'hall_effect',
-        'joystick_sender',
-        'loop_output_handler',
-        'buffered_pcm',
-        'gyro_sender',
-        'dma_edge_counting',
-        'interrupt_edge_counting',
-        'encoder_and_potentiometer',
-        '<(DEPTH)/frc971/control_loops/control_loops.gyp:queues',
-        'logging_queue',
-      ],
-    },
-    {
       'target_name': 'logging_queue',
       'type': 'static_library',
       'sources': [
diff --git a/frc971/zeroing/zeroing.cc b/frc971/zeroing/zeroing.cc
index d8c77e8..e54446a 100644
--- a/frc971/zeroing/zeroing.cc
+++ b/frc971/zeroing/zeroing.cc
@@ -1,6 +1,6 @@
 #include "frc971/zeroing/zeroing.h"
 
-#include <math.h>
+#include <cmath>
 #include <vector>
 
 namespace frc971 {
@@ -14,7 +14,7 @@
 }
 
 ZeroingEstimator::ZeroingEstimator(
-    const constants::Values::ZeroingConstants& constants) {
+    const constants::ZeroingConstants& constants) {
   index_diff_ = constants.index_difference;
   max_sample_count_ = constants.average_filter_size;
   known_index_pos_ = constants.measured_index_position;
diff --git a/frc971/zeroing/zeroing.gyp b/frc971/zeroing/zeroing.gyp
index a868e19..0a7a2fc 100644
--- a/frc971/zeroing/zeroing.gyp
+++ b/frc971/zeroing/zeroing.gyp
@@ -8,10 +8,8 @@
       ],
       'dependencies': [
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:queues',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
       ],
       'export_dependent_settings': [
-        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:queues',
       ],
     },
diff --git a/frc971/zeroing/zeroing.h b/frc971/zeroing/zeroing.h
index 08911ac..4176f48 100644
--- a/frc971/zeroing/zeroing.h
+++ b/frc971/zeroing/zeroing.h
@@ -23,7 +23,7 @@
 // the pot and the indices.
 class ZeroingEstimator {
  public:
-  ZeroingEstimator(const constants::Values::ZeroingConstants &constants);
+  ZeroingEstimator(const constants::ZeroingConstants &constants);
 
   // Update the internal logic with the next sensor values.
   void UpdateEstimate(const PotAndIndexPosition &info);
diff --git a/frc971/zeroing/zeroing_test.cc b/frc971/zeroing/zeroing_test.cc
index 404b0e0..4a82e04 100644
--- a/frc971/zeroing/zeroing_test.cc
+++ b/frc971/zeroing/zeroing_test.cc
@@ -16,7 +16,7 @@
 namespace zeroing {
 
 using control_loops::PositionSensorSimulator;
-using constants::Values;
+using constants::ZeroingConstants;
 
 static const size_t kSampleSize = 30;
 static const double kAcceptableUnzeroedError = 0.2;
@@ -41,7 +41,7 @@
   const double index_diff = 1.0;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.6 * index_diff, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   // The zeroing code is supposed to perform some filtering on the difference
@@ -65,7 +65,7 @@
   double position = 3.6 * index_diff;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(position, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   // Make sure that the zeroing code does not consider itself zeroed until we
@@ -84,7 +84,7 @@
   double index_diff = 1.0;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.6, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   // The zeroing code is supposed to perform some filtering on the difference
@@ -117,7 +117,7 @@
   double index_diff = 0.89;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.5 * index_diff, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   // The zeroing code is supposed to perform some filtering on the difference
@@ -151,7 +151,7 @@
   double index_diff = 0.89;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.5 * index_diff, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   for (unsigned int i = 0; i < kSampleSize / 2; i++) {
@@ -164,7 +164,7 @@
   double index_diff = 0.89;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.1 * index_diff, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   MoveTo(&sim, &estimator, 3.1 * index_diff);
@@ -180,7 +180,7 @@
   double index_diff = 0.6;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.1 * index_diff, index_diff / 3.0);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
 
   // Make sure to fill up the averaging filter with samples.
@@ -215,7 +215,7 @@
   const double known_index_pos = 3.5 * index_diff;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(3.3 * index_diff, index_diff / 3.0, known_index_pos);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, known_index_pos, kIndexErrorFraction});
 
   // Make sure to fill up the averaging filter with samples.
@@ -240,7 +240,7 @@
 
 TEST_F(ZeroingTest, BasicErrorAPITest) {
   const double index_diff = 1.0;
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       kSampleSize, index_diff, 0.0, kIndexErrorFraction});
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(1.5 * index_diff, index_diff / 3.0, 0.0);
@@ -276,7 +276,7 @@
   int sample_size = 30;
   PositionSensorSimulator sim(index_diff);
   sim.Initialize(10 * index_diff, index_diff / 3.0, known_index_pos);
-  ZeroingEstimator estimator(Values::ZeroingConstants{
+  ZeroingEstimator estimator(ZeroingConstants{
       sample_size, index_diff, known_index_pos, kIndexErrorFraction});
 
   for (int i = 0; i < sample_size; i++) {
diff --git a/frc971/actors/actors.gyp b/y2015/actors/actors.gyp
similarity index 89%
rename from frc971/actors/actors.gyp
rename to y2015/actors/actors.gyp
index d1ede7a..f4989f0 100644
--- a/frc971/actors/actors.gyp
+++ b/y2015/actors/actors.gyp
@@ -23,7 +23,7 @@
       'type': 'static_library',
       'sources': ['drivetrain_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -41,7 +41,7 @@
       ],
       'dependencies': [
         'drivetrain_action_queue',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
         '<(AOS)/common/common.gyp:time',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/build/aos.gyp:logging',
@@ -49,7 +49,7 @@
         '<(AOS)/common/logging/logging.gyp:queue_logging',
         '<(EXTERNALS):eigen',
         '<(AOS)/common/util/util.gyp:trapezoid_profile',
-        '<(DEPTH)/frc971/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
+        '<(DEPTH)/y2015/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
       ],
       'export_dependent_settings': [
         '<(AOS)/common/actions/actions.gyp:action_lib',
@@ -78,12 +78,12 @@
       'dependencies' : [
         '<(AOS)/build/aos.gyp:logging_interface',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
       ],
       'export_dependent_settings' : [
         '<(AOS)/build/aos.gyp:logging_interface',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
       ],
     },
     {
@@ -91,7 +91,7 @@
       'type': 'static_library',
       'sources': ['score_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -112,8 +112,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/actions/actions.gyp:action_lib',
         '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
         '<(EXTERNALS):eigen',
       ],
       'export_dependent_settings': [
@@ -149,7 +149,7 @@
         '<(AOS)/common/common.gyp:time',
         '<(AOS)/linux_code/linux_code.gyp:init',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:team_number_test_environment',
         'score_action_queue',
         'score_action_lib',
@@ -160,7 +160,7 @@
       'type': 'static_library',
       'sources': ['pickup_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -181,7 +181,7 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/actions/actions.gyp:action_lib',
         '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
       ],
       'export_dependent_settings': [
         '<(AOS)/common/actions/actions.gyp:action_lib',
@@ -206,7 +206,7 @@
       'type': 'static_library',
       'sources': ['can_pickup_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -228,8 +228,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
       ],
       'export_dependent_settings': [
@@ -256,7 +256,7 @@
       'type': 'static_library',
       'sources': ['horizontal_can_pickup_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -278,8 +278,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
       ],
       'export_dependent_settings': [
@@ -306,7 +306,7 @@
       'type': 'static_library',
       'sources': ['held_to_lift_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -331,8 +331,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
       ],
       'export_dependent_settings': [
@@ -359,7 +359,7 @@
       'type': 'static_library',
       'sources': ['stack_and_hold_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -384,8 +384,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
       ],
       'export_dependent_settings': [
@@ -412,7 +412,7 @@
       'type': 'static_library',
       'sources': ['stack_and_lift_action.q'],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -440,8 +440,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
       ],
       'export_dependent_settings': [
@@ -478,7 +478,7 @@
         'stack_action.q',
       ],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -497,7 +497,7 @@
         'stack_action_params.q',
       ],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'includes': ['../../aos/build/queues.gypi'],
     },
@@ -515,7 +515,7 @@
         '<(AOS)/common/common.gyp:time',
         '<(AOS)/linux_code/linux_code.gyp:init',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:team_number_test_environment',
         'stack_action_queue',
         'stack_action_lib',
@@ -533,8 +533,8 @@
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
       ],
       'export_dependent_settings': [
         'fridge_profile_lib',
@@ -570,7 +570,7 @@
         'lift_action.q',
       ],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'dependencies': [
         '<(AOS)/common/actions/actions.gyp:action_queue',
@@ -589,7 +589,7 @@
         'lift_action_params.q',
       ],
       'variables': {
-        'header_path': 'frc971/actors',
+        'header_path': 'y2015/actors',
       },
       'includes': ['../../aos/build/queues.gypi'],
     },
@@ -604,8 +604,8 @@
         'lift_action_queue',
         '<(AOS)/build/aos.gyp:logging',
         '<(AOS)/common/actions/actions.gyp:action_lib',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
       ],
       'export_dependent_settings': [
         'fridge_profile_lib',
diff --git a/frc971/actors/can_pickup_action.q b/y2015/actors/can_pickup_action.q
similarity index 100%
rename from frc971/actors/can_pickup_action.q
rename to y2015/actors/can_pickup_action.q
diff --git a/frc971/actors/can_pickup_actor.cc b/y2015/actors/can_pickup_actor.cc
similarity index 96%
rename from frc971/actors/can_pickup_actor.cc
rename to y2015/actors/can_pickup_actor.cc
index f1ae568..d2a191f 100644
--- a/frc971/actors/can_pickup_actor.cc
+++ b/y2015/actors/can_pickup_actor.cc
@@ -3,9 +3,9 @@
 #include "aos/common/time.h"
 #include "aos/common/util/phased_loop.h"
 
-#include "frc971/actors/can_pickup_actor.h"
-#include "frc971/constants.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/actors/can_pickup_actor.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 using ::frc971::control_loops::fridge_queue;
 
diff --git a/frc971/actors/can_pickup_actor.h b/y2015/actors/can_pickup_actor.h
similarity index 79%
rename from frc971/actors/can_pickup_actor.h
rename to y2015/actors/can_pickup_actor.h
index 3e109d1..f0b1ec9 100644
--- a/frc971/actors/can_pickup_actor.h
+++ b/y2015/actors/can_pickup_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_CAN_PICKUP_ACTOR_H_
-#define FRC971_ACTORS_CAN_PICKUP_ACTOR_H_
+#ifndef Y2015_ACTORS_CAN_PICKUP_ACTOR_H_
+#define Y2015_ACTORS_CAN_PICKUP_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/can_pickup_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/can_pickup_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/can_pickup_actor_main.cc b/y2015/actors/can_pickup_actor_main.cc
similarity index 73%
rename from frc971/actors/can_pickup_actor_main.cc
rename to y2015/actors/can_pickup_actor_main.cc
index e784d94..bed9412 100644
--- a/frc971/actors/can_pickup_actor_main.cc
+++ b/y2015/actors/can_pickup_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/can_pickup_action.q.h"
-#include "frc971/actors/can_pickup_actor.h"
+#include "y2015/actors/can_pickup_action.q.h"
+#include "y2015/actors/can_pickup_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/drivetrain_action.q b/y2015/actors/drivetrain_action.q
similarity index 100%
rename from frc971/actors/drivetrain_action.q
rename to y2015/actors/drivetrain_action.q
diff --git a/frc971/actors/drivetrain_actor.cc b/y2015/actors/drivetrain_actor.cc
similarity index 97%
rename from frc971/actors/drivetrain_actor.cc
rename to y2015/actors/drivetrain_actor.cc
index 9b72cb1..9ef81c5 100644
--- a/frc971/actors/drivetrain_actor.cc
+++ b/y2015/actors/drivetrain_actor.cc
@@ -1,4 +1,4 @@
-#include "frc971/actors/drivetrain_actor.h"
+#include "y2015/actors/drivetrain_actor.h"
 
 #include <functional>
 #include <numeric>
@@ -11,9 +11,9 @@
 #include "aos/common/commonmath.h"
 #include "aos/common/time.h"
 
-#include "frc971/actors/drivetrain_actor.h"
-#include "frc971/constants.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/actors/drivetrain_actor.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/drivetrain_actor.h b/y2015/actors/drivetrain_actor.h
similarity index 83%
rename from frc971/actors/drivetrain_actor.h
rename to y2015/actors/drivetrain_actor.h
index c035002..369c6ed 100644
--- a/frc971/actors/drivetrain_actor.h
+++ b/y2015/actors/drivetrain_actor.h
@@ -1,9 +1,9 @@
-#ifndef FRC971_ACTIONS_DRIVETRAIN_ACTION_H_
-#define FRC971_ACTIONS_DRIVETRAIN_ACTION_H_
+#ifndef Y2015_ACTIONS_DRIVETRAIN_ACTION_H_
+#define Y2015_ACTIONS_DRIVETRAIN_ACTION_H_
 
 #include <memory>
 
-#include "frc971/actors/drivetrain_action.q.h"
+#include "y2015/actors/drivetrain_action.q.h"
 #include "aos/common/actions/actor.h"
 #include "aos/common/actions/actions.h"
 
diff --git a/frc971/actors/drivetrain_actor_main.cc b/y2015/actors/drivetrain_actor_main.cc
similarity index 75%
rename from frc971/actors/drivetrain_actor_main.cc
rename to y2015/actors/drivetrain_actor_main.cc
index 5337745..7e461ff 100644
--- a/frc971/actors/drivetrain_actor_main.cc
+++ b/y2015/actors/drivetrain_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/drivetrain_action.q.h"
-#include "frc971/actors/drivetrain_actor.h"
+#include "y2015/actors/drivetrain_action.q.h"
+#include "y2015/actors/drivetrain_actor.h"
 
 using ::aos::time::Time;
 
diff --git a/y2015/actors/fridge_profile_lib.cc b/y2015/actors/fridge_profile_lib.cc
new file mode 100644
index 0000000..1a1866f
--- /dev/null
+++ b/y2015/actors/fridge_profile_lib.cc
@@ -0,0 +1 @@
+#include "y2015/actors/fridge_profile_lib.h"
diff --git a/frc971/actors/fridge_profile_lib.h b/y2015/actors/fridge_profile_lib.h
similarity index 98%
rename from frc971/actors/fridge_profile_lib.h
rename to y2015/actors/fridge_profile_lib.h
index 2e0dcc2..ce75f75 100644
--- a/frc971/actors/fridge_profile_lib.h
+++ b/y2015/actors/fridge_profile_lib.h
@@ -1,11 +1,11 @@
-#ifndef FRC971_ACTORS_FRIDGE_PROFILE_LIB_H_
-#define FRC971_ACTORS_FRIDGE_PROFILE_LIB_H_
+#ifndef Y2015_ACTORS_FRIDGE_PROFILE_LIB_H_
+#define Y2015_ACTORS_FRIDGE_PROFILE_LIB_H_
 
 #include <cmath>
 
 #include "aos/common/actions/actor.h"
 #include "aos/common/util/phased_loop.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
 
 namespace frc971 {
 namespace actors {
@@ -282,4 +282,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_FRIDGE_PROFILE_LIB_H_
+#endif  // Y2015_ACTORS_FRIDGE_PROFILE_LIB_H_
diff --git a/frc971/actors/held_to_lift_action.q b/y2015/actors/held_to_lift_action.q
similarity index 94%
rename from frc971/actors/held_to_lift_action.q
rename to y2015/actors/held_to_lift_action.q
index 3825ac8..c2dd689 100644
--- a/frc971/actors/held_to_lift_action.q
+++ b/y2015/actors/held_to_lift_action.q
@@ -1,7 +1,7 @@
 package frc971.actors;
 
 import "aos/common/actions/actions.q";
-import "frc971/actors/lift_action_params.q";
+import "y2015/actors/lift_action_params.q";
 
 // Parameters to send with start.
 struct HeldToLiftParams {
diff --git a/frc971/actors/held_to_lift_actor.cc b/y2015/actors/held_to_lift_actor.cc
similarity index 93%
rename from frc971/actors/held_to_lift_actor.cc
rename to y2015/actors/held_to_lift_actor.cc
index 2bd4a88..2336364 100644
--- a/frc971/actors/held_to_lift_actor.cc
+++ b/y2015/actors/held_to_lift_actor.cc
@@ -1,12 +1,12 @@
-#include "frc971/actors/held_to_lift_actor.h"
+#include "y2015/actors/held_to_lift_actor.h"
 
 #include <math.h>
 
 #include "aos/common/time.h"
-#include "frc971/constants.h"
-#include "frc971/actors/fridge_profile_lib.h"
-#include "frc971/actors/lift_actor.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/constants.h"
+#include "y2015/actors/fridge_profile_lib.h"
+#include "y2015/actors/lift_actor.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/held_to_lift_actor.h b/y2015/actors/held_to_lift_actor.h
similarity index 73%
rename from frc971/actors/held_to_lift_actor.h
rename to y2015/actors/held_to_lift_actor.h
index 4b3c22a..369fea4 100644
--- a/frc971/actors/held_to_lift_actor.h
+++ b/y2015/actors/held_to_lift_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_HELD_TO_LIFT_ACTOR_H_
-#define FRC971_ACTORS_HELD_TO_LIFT_ACTOR_H_
+#ifndef Y2015_ACTORS_HELD_TO_LIFT_ACTOR_H_
+#define Y2015_ACTORS_HELD_TO_LIFT_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/held_to_lift_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/held_to_lift_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
@@ -30,4 +30,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_HELD_TO_LIFT_ACTOR_H_
+#endif  // Y2015_ACTORS_HELD_TO_LIFT_ACTOR_H_
diff --git a/frc971/actors/held_to_lift_actor_main.cc b/y2015/actors/held_to_lift_actor_main.cc
similarity index 72%
rename from frc971/actors/held_to_lift_actor_main.cc
rename to y2015/actors/held_to_lift_actor_main.cc
index ad3e20c..a5d78e1 100644
--- a/frc971/actors/held_to_lift_actor_main.cc
+++ b/y2015/actors/held_to_lift_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/held_to_lift_action.q.h"
-#include "frc971/actors/held_to_lift_actor.h"
+#include "y2015/actors/held_to_lift_action.q.h"
+#include "y2015/actors/held_to_lift_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/horizontal_can_pickup_action.q b/y2015/actors/horizontal_can_pickup_action.q
similarity index 100%
rename from frc971/actors/horizontal_can_pickup_action.q
rename to y2015/actors/horizontal_can_pickup_action.q
diff --git a/frc971/actors/horizontal_can_pickup_actor.cc b/y2015/actors/horizontal_can_pickup_actor.cc
similarity index 95%
rename from frc971/actors/horizontal_can_pickup_actor.cc
rename to y2015/actors/horizontal_can_pickup_actor.cc
index ab2c8cf..fb6e542 100644
--- a/frc971/actors/horizontal_can_pickup_actor.cc
+++ b/y2015/actors/horizontal_can_pickup_actor.cc
@@ -4,10 +4,10 @@
 #include "aos/common/time.h"
 #include "aos/common/util/phased_loop.h"
 
-#include "frc971/actors/horizontal_can_pickup_actor.h"
-#include "frc971/actors/fridge_profile_lib.h"
-#include "frc971/constants.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/actors/horizontal_can_pickup_actor.h"
+#include "y2015/actors/fridge_profile_lib.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/horizontal_can_pickup_actor.h b/y2015/actors/horizontal_can_pickup_actor.h
similarity index 80%
rename from frc971/actors/horizontal_can_pickup_actor.h
rename to y2015/actors/horizontal_can_pickup_actor.h
index f3bb0f0..5510178 100644
--- a/frc971/actors/horizontal_can_pickup_actor.h
+++ b/y2015/actors/horizontal_can_pickup_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_HORIZONTAL_CAN_PICKUP_ACTOR_H_
-#define FRC971_ACTORS_HORIZONTAL_CAN_PICKUP_ACTOR_H_
+#ifndef Y2015_ACTORS_HORIZONTAL_CAN_PICKUP_ACTOR_H_
+#define Y2015_ACTORS_HORIZONTAL_CAN_PICKUP_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/horizontal_can_pickup_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/horizontal_can_pickup_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
@@ -42,4 +42,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_HORIZONTAL_CAN_PICKUP_ACTOR_H_
+#endif  // Y2015_ACTORS_HORIZONTAL_CAN_PICKUP_ACTOR_H_
diff --git a/frc971/actors/horizontal_can_pickup_actor_main.cc b/y2015/actors/horizontal_can_pickup_actor_main.cc
similarity index 72%
rename from frc971/actors/horizontal_can_pickup_actor_main.cc
rename to y2015/actors/horizontal_can_pickup_actor_main.cc
index c8e1d3c..67f986c 100644
--- a/frc971/actors/horizontal_can_pickup_actor_main.cc
+++ b/y2015/actors/horizontal_can_pickup_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/horizontal_can_pickup_action.q.h"
-#include "frc971/actors/horizontal_can_pickup_actor.h"
+#include "y2015/actors/horizontal_can_pickup_action.q.h"
+#include "y2015/actors/horizontal_can_pickup_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/lift_action.q b/y2015/actors/lift_action.q
similarity index 87%
rename from frc971/actors/lift_action.q
rename to y2015/actors/lift_action.q
index bb5615a..37fba8d 100644
--- a/frc971/actors/lift_action.q
+++ b/y2015/actors/lift_action.q
@@ -1,7 +1,7 @@
 package frc971.actors;
 
 import "aos/common/actions/actions.q";
-import "frc971/actors/lift_action_params.q";
+import "y2015/actors/lift_action_params.q";
 
 queue_group LiftActionQueueGroup {
   implements aos.common.actions.ActionQueueGroup;
diff --git a/frc971/actors/lift_action_params.q b/y2015/actors/lift_action_params.q
similarity index 100%
rename from frc971/actors/lift_action_params.q
rename to y2015/actors/lift_action_params.q
diff --git a/frc971/actors/lift_actor.cc b/y2015/actors/lift_actor.cc
similarity index 94%
rename from frc971/actors/lift_actor.cc
rename to y2015/actors/lift_actor.cc
index ff36bef..c057eef 100644
--- a/frc971/actors/lift_actor.cc
+++ b/y2015/actors/lift_actor.cc
@@ -1,10 +1,10 @@
 #include <math.h>
 
 #include "aos/common/time.h"
-#include "frc971/actors/lift_actor.h"
-#include "frc971/constants.h"
-#include "frc971/actors/fridge_profile_lib.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/actors/lift_actor.h"
+#include "y2015/constants.h"
+#include "y2015/actors/fridge_profile_lib.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/lift_actor.h b/y2015/actors/lift_actor.h
similarity index 74%
rename from frc971/actors/lift_actor.h
rename to y2015/actors/lift_actor.h
index 86af35c..cbd79ec 100644
--- a/frc971/actors/lift_actor.h
+++ b/y2015/actors/lift_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_LIFT_ACTOR_H_
-#define FRC971_ACTORS_LIFT_ACTOR_H_
+#ifndef Y2015_ACTORS_LIFT_ACTOR_H_
+#define Y2015_ACTORS_LIFT_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/lift_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/lift_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
@@ -28,4 +28,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_LIFT_ACTOR_H_
+#endif  // Y2015_ACTORS_LIFT_ACTOR_H_
diff --git a/frc971/actors/lift_actor_main.cc b/y2015/actors/lift_actor_main.cc
similarity index 74%
rename from frc971/actors/lift_actor_main.cc
rename to y2015/actors/lift_actor_main.cc
index 792f535..ed809ef 100644
--- a/frc971/actors/lift_actor_main.cc
+++ b/y2015/actors/lift_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/lift_action.q.h"
-#include "frc971/actors/lift_actor.h"
+#include "y2015/actors/lift_action.q.h"
+#include "y2015/actors/lift_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/pickup_action.q b/y2015/actors/pickup_action.q
similarity index 100%
rename from frc971/actors/pickup_action.q
rename to y2015/actors/pickup_action.q
diff --git a/frc971/actors/pickup_actor.cc b/y2015/actors/pickup_actor.cc
similarity index 97%
rename from frc971/actors/pickup_actor.cc
rename to y2015/actors/pickup_actor.cc
index 8afdfab..0863ba6 100644
--- a/frc971/actors/pickup_actor.cc
+++ b/y2015/actors/pickup_actor.cc
@@ -1,4 +1,4 @@
-#include "frc971/actors/pickup_actor.h"
+#include "y2015/actors/pickup_actor.h"
 
 #include <cmath>
 
@@ -6,7 +6,7 @@
 #include "aos/common/controls/control_loop.h"
 #include "aos/common/util/phased_loop.h"
 #include "aos/common/time.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/pickup_actor.h b/y2015/actors/pickup_actor.h
similarity index 78%
rename from frc971/actors/pickup_actor.h
rename to y2015/actors/pickup_actor.h
index 66988d1..1f09718 100644
--- a/frc971/actors/pickup_actor.h
+++ b/y2015/actors/pickup_actor.h
@@ -1,9 +1,9 @@
-#ifndef FRC971_ACTORS_PICKUP_ACTOR_H_
-#define FRC971_ACTORS_PICKUP_ACTOR_H_
+#ifndef Y2015_ACTORS_PICKUP_ACTOR_H_
+#define Y2015_ACTORS_PICKUP_ACTOR_H_
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/pickup_action.q.h"
+#include "y2015/actors/pickup_action.q.h"
 
 namespace frc971 {
 namespace actors {
@@ -24,4 +24,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_PICKUP_ACTOR_H_
+#endif  // Y2015_ACTORS_PICKUP_ACTOR_H_
diff --git a/frc971/actors/pickup_actor_main.cc b/y2015/actors/pickup_actor_main.cc
similarity index 74%
rename from frc971/actors/pickup_actor_main.cc
rename to y2015/actors/pickup_actor_main.cc
index d5bc169..9c2c488 100644
--- a/frc971/actors/pickup_actor_main.cc
+++ b/y2015/actors/pickup_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/pickup_action.q.h"
-#include "frc971/actors/pickup_actor.h"
+#include "y2015/actors/pickup_action.q.h"
+#include "y2015/actors/pickup_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/score_action.q b/y2015/actors/score_action.q
similarity index 100%
rename from frc971/actors/score_action.q
rename to y2015/actors/score_action.q
diff --git a/frc971/actors/score_actor.cc b/y2015/actors/score_actor.cc
similarity index 98%
rename from frc971/actors/score_actor.cc
rename to y2015/actors/score_actor.cc
index d650bb6..c0a398f 100644
--- a/frc971/actors/score_actor.cc
+++ b/y2015/actors/score_actor.cc
@@ -1,14 +1,15 @@
-#include "frc971/actors/score_actor.h"
+#include "y2015/actors/score_actor.h"
 
 #include <cmath>
 
 #include "aos/common/controls/control_loop.h"
 #include "aos/common/logging/logging.h"
 #include "aos/common/util/phased_loop.h"
-#include "frc971/constants.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
 #include "aos/common/logging/queue_logging.h"
 
+#include "y2015/constants.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
+
 using ::frc971::control_loops::fridge_queue;
 
 namespace frc971 {
diff --git a/frc971/actors/score_actor.h b/y2015/actors/score_actor.h
similarity index 87%
rename from frc971/actors/score_actor.h
rename to y2015/actors/score_actor.h
index a524d36..c9ed71f 100644
--- a/frc971/actors/score_actor.h
+++ b/y2015/actors/score_actor.h
@@ -1,10 +1,10 @@
-#ifndef FRC971_ACTORS_SCORE_ACTOR_H_
-#define FRC971_ACTORS_SCORE_ACTOR_H_
+#ifndef Y2015_ACTORS_SCORE_ACTOR_H_
+#define Y2015_ACTORS_SCORE_ACTOR_H_
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "aos/common/util/kinematics.h"
-#include "frc971/actors/score_action.q.h"
+#include "y2015/util/kinematics.h"
+#include "y2015/actors/score_action.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/score_actor_main.cc b/y2015/actors/score_actor_main.cc
similarity index 74%
rename from frc971/actors/score_actor_main.cc
rename to y2015/actors/score_actor_main.cc
index ce4548c..cc149e6 100644
--- a/frc971/actors/score_actor_main.cc
+++ b/y2015/actors/score_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/score_action.q.h"
-#include "frc971/actors/score_actor.h"
+#include "y2015/actors/score_action.q.h"
+#include "y2015/actors/score_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/score_actor_test.cc b/y2015/actors/score_actor_test.cc
similarity index 95%
rename from frc971/actors/score_actor_test.cc
rename to y2015/actors/score_actor_test.cc
index 450939f..4791f09 100644
--- a/frc971/actors/score_actor_test.cc
+++ b/y2015/actors/score_actor_test.cc
@@ -6,9 +6,9 @@
 #include "aos/common/queue.h"
 #include "aos/common/queue_testutils.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/score_action.q.h"
-#include "frc971/actors/score_actor.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
+#include "y2015/actors/score_action.q.h"
+#include "y2015/actors/score_actor.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
 #include "frc971/control_loops/team_number_test_environment.h"
 
 using ::aos::time::Time;
diff --git a/frc971/actors/stack_action.q b/y2015/actors/stack_action.q
similarity index 87%
rename from frc971/actors/stack_action.q
rename to y2015/actors/stack_action.q
index 122afc9..b4389b8 100644
--- a/frc971/actors/stack_action.q
+++ b/y2015/actors/stack_action.q
@@ -1,7 +1,7 @@
 package frc971.actors;
 
 import "aos/common/actions/actions.q";
-import "frc971/actors/stack_action_params.q";
+import "y2015/actors/stack_action_params.q";
 
 queue_group StackActionQueueGroup {
   implements aos.common.actions.ActionQueueGroup;
diff --git a/frc971/actors/stack_action_params.q b/y2015/actors/stack_action_params.q
similarity index 100%
rename from frc971/actors/stack_action_params.q
rename to y2015/actors/stack_action_params.q
diff --git a/frc971/actors/stack_actor.cc b/y2015/actors/stack_actor.cc
similarity index 95%
rename from frc971/actors/stack_actor.cc
rename to y2015/actors/stack_actor.cc
index c9622c2..539018f 100644
--- a/frc971/actors/stack_actor.cc
+++ b/y2015/actors/stack_actor.cc
@@ -1,12 +1,12 @@
-#include "frc971/actors/stack_actor.h"
+#include "y2015/actors/stack_actor.h"
 
 #include <math.h>
 
 #include "aos/common/time.h"
 #include "aos/common/util/phased_loop.h"
 
-#include "frc971/constants.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/stack_actor.h b/y2015/actors/stack_actor.h
similarity index 78%
rename from frc971/actors/stack_actor.h
rename to y2015/actors/stack_actor.h
index 0d637bc..5f2f7fb 100644
--- a/frc971/actors/stack_actor.h
+++ b/y2015/actors/stack_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_STACK_ACTOR_H_
-#define FRC971_ACTORS_STACK_ACTOR_H_
+#ifndef Y2015_ACTORS_STACK_ACTOR_H_
+#define Y2015_ACTORS_STACK_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/stack_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/stack_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/stack_actor_main.cc b/y2015/actors/stack_actor_main.cc
similarity index 74%
rename from frc971/actors/stack_actor_main.cc
rename to y2015/actors/stack_actor_main.cc
index 9a65352..f65733c 100644
--- a/frc971/actors/stack_actor_main.cc
+++ b/y2015/actors/stack_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/stack_action.q.h"
-#include "frc971/actors/stack_actor.h"
+#include "y2015/actors/stack_action.q.h"
+#include "y2015/actors/stack_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/stack_actor_test.cc b/y2015/actors/stack_actor_test.cc
similarity index 93%
rename from frc971/actors/stack_actor_test.cc
rename to y2015/actors/stack_actor_test.cc
index b14ac1e..e1b1856 100644
--- a/frc971/actors/stack_actor_test.cc
+++ b/y2015/actors/stack_actor_test.cc
@@ -6,9 +6,9 @@
 #include "aos/common/queue.h"
 #include "aos/common/queue_testutils.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/stack_action.q.h"
-#include "frc971/actors/stack_actor.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
+#include "y2015/actors/stack_action.q.h"
+#include "y2015/actors/stack_actor.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
 
 #include "aos/common/controls/control_loop_test.h"
 #include "frc971/control_loops/team_number_test_environment.h"
diff --git a/frc971/actors/stack_and_hold_action.q b/y2015/actors/stack_and_hold_action.q
similarity index 95%
rename from frc971/actors/stack_and_hold_action.q
rename to y2015/actors/stack_and_hold_action.q
index 7042096..42e98ed 100644
--- a/frc971/actors/stack_and_hold_action.q
+++ b/y2015/actors/stack_and_hold_action.q
@@ -1,7 +1,7 @@
 package frc971.actors;
 
 import "aos/common/actions/actions.q";
-import "frc971/actors/stack_action_params.q";
+import "y2015/actors/stack_action_params.q";
 
 // Parameters to send with start.
 struct StackAndHoldParams {
diff --git a/frc971/actors/stack_and_hold_actor.cc b/y2015/actors/stack_and_hold_actor.cc
similarity index 95%
rename from frc971/actors/stack_and_hold_actor.cc
rename to y2015/actors/stack_and_hold_actor.cc
index ab9b077..ae1eeda 100644
--- a/frc971/actors/stack_and_hold_actor.cc
+++ b/y2015/actors/stack_and_hold_actor.cc
@@ -1,13 +1,13 @@
-#include "frc971/actors/stack_and_hold_actor.h"
+#include "y2015/actors/stack_and_hold_actor.h"
 
 #include <math.h>
 
 #include "aos/common/time.h"
 #include "aos/common/util/phased_loop.h"
 
-#include "frc971/constants.h"
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/actors/stack_actor.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/actors/stack_actor.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/stack_and_hold_actor.h b/y2015/actors/stack_and_hold_actor.h
similarity index 73%
rename from frc971/actors/stack_and_hold_actor.h
rename to y2015/actors/stack_and_hold_actor.h
index bfc877b..b3bf2c5 100644
--- a/frc971/actors/stack_and_hold_actor.h
+++ b/y2015/actors/stack_and_hold_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_STACK_AND_HOLD_ACTOR_H_
-#define FRC971_ACTORS_STACK_AND_HOLD_ACTOR_H_
+#ifndef Y2015_ACTORS_STACK_AND_HOLD_ACTOR_H_
+#define Y2015_ACTORS_STACK_AND_HOLD_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/stack_and_hold_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/stack_and_hold_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
@@ -30,4 +30,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_STACK_AND_HOLD_ACTOR_H_
+#endif  // Y2015_ACTORS_STACK_AND_HOLD_ACTOR_H_
diff --git a/frc971/actors/stack_and_hold_actor_main.cc b/y2015/actors/stack_and_hold_actor_main.cc
similarity index 73%
rename from frc971/actors/stack_and_hold_actor_main.cc
rename to y2015/actors/stack_and_hold_actor_main.cc
index 2bd63bb..3d5d1c1 100644
--- a/frc971/actors/stack_and_hold_actor_main.cc
+++ b/y2015/actors/stack_and_hold_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/stack_and_hold_action.q.h"
-#include "frc971/actors/stack_and_hold_actor.h"
+#include "y2015/actors/stack_and_hold_action.q.h"
+#include "y2015/actors/stack_and_hold_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/actors/stack_and_lift_action.q b/y2015/actors/stack_and_lift_action.q
similarity index 88%
rename from frc971/actors/stack_and_lift_action.q
rename to y2015/actors/stack_and_lift_action.q
index f61ac32..0ec971b 100644
--- a/frc971/actors/stack_and_lift_action.q
+++ b/y2015/actors/stack_and_lift_action.q
@@ -2,8 +2,8 @@
 
 import "aos/common/actions/actions.q";
 
-import "frc971/actors/stack_action_params.q";
-import "frc971/actors/lift_action_params.q";
+import "y2015/actors/stack_action_params.q";
+import "y2015/actors/lift_action_params.q";
 
 // Parameters to send with start.
 struct StackAndLiftParams {
diff --git a/frc971/actors/stack_and_lift_actor.cc b/y2015/actors/stack_and_lift_actor.cc
similarity index 94%
rename from frc971/actors/stack_and_lift_actor.cc
rename to y2015/actors/stack_and_lift_actor.cc
index 273f352..32f7417 100644
--- a/frc971/actors/stack_and_lift_actor.cc
+++ b/y2015/actors/stack_and_lift_actor.cc
@@ -1,4 +1,4 @@
-#include "frc971/actors/stack_and_lift_actor.h"
+#include "y2015/actors/stack_and_lift_actor.h"
 
 #include <math.h>
 
@@ -6,10 +6,10 @@
 #include "aos/common/time.h"
 #include "aos/common/util/phased_loop.h"
 
-#include "frc971/constants.h"
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/actors/stack_actor.h"
-#include "frc971/actors/lift_actor.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/actors/stack_actor.h"
+#include "y2015/actors/lift_actor.h"
 
 namespace frc971 {
 namespace actors {
diff --git a/frc971/actors/stack_and_lift_actor.h b/y2015/actors/stack_and_lift_actor.h
similarity index 73%
rename from frc971/actors/stack_and_lift_actor.h
rename to y2015/actors/stack_and_lift_actor.h
index 7dcaba5..1d5fe29 100644
--- a/frc971/actors/stack_and_lift_actor.h
+++ b/y2015/actors/stack_and_lift_actor.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_ACTORS_STACK_AND_LIFT_ACTOR_H_
-#define FRC971_ACTORS_STACK_AND_LIFT_ACTOR_H_
+#ifndef Y2015_ACTORS_STACK_AND_LIFT_ACTOR_H_
+#define Y2015_ACTORS_STACK_AND_LIFT_ACTOR_H_
 
 #include <stdint.h>
 
@@ -7,8 +7,8 @@
 
 #include "aos/common/actions/actions.h"
 #include "aos/common/actions/actor.h"
-#include "frc971/actors/stack_and_lift_action.q.h"
-#include "frc971/actors/fridge_profile_lib.h"
+#include "y2015/actors/stack_and_lift_action.q.h"
+#include "y2015/actors/fridge_profile_lib.h"
 
 namespace frc971 {
 namespace actors {
@@ -30,4 +30,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif  // FRC971_ACTORS_STACK_AND_LIFT_ACTOR_H_
+#endif  // Y2015_ACTORS_STACK_AND_LIFT_ACTOR_H_
diff --git a/frc971/actors/stack_and_lift_actor_main.cc b/y2015/actors/stack_and_lift_actor_main.cc
similarity index 73%
rename from frc971/actors/stack_and_lift_actor_main.cc
rename to y2015/actors/stack_and_lift_actor_main.cc
index 882d9d7..fe9f4b5 100644
--- a/frc971/actors/stack_and_lift_actor_main.cc
+++ b/y2015/actors/stack_and_lift_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "frc971/actors/stack_and_lift_action.q.h"
-#include "frc971/actors/stack_and_lift_actor.h"
+#include "y2015/actors/stack_and_lift_action.q.h"
+#include "y2015/actors/stack_and_lift_actor.h"
 
 int main(int /*argc*/, char* /*argv*/ []) {
   ::aos::Init();
diff --git a/frc971/autonomous/auto.cc b/y2015/autonomous/auto.cc
similarity index 97%
rename from frc971/autonomous/auto.cc
rename to y2015/autonomous/auto.cc
index d040756..9ade207 100644
--- a/frc971/autonomous/auto.cc
+++ b/y2015/autonomous/auto.cc
@@ -9,14 +9,14 @@
 #include "aos/common/logging/queue_logging.h"
 
 #include "frc971/autonomous/auto.q.h"
-#include "frc971/constants.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
-#include "frc971/actors/drivetrain_actor.h"
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
-#include "frc971/actors/pickup_actor.h"
-#include "frc971/actors/stack_actor.h"
-#include "frc971/actors/held_to_lift_actor.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/actors/drivetrain_actor.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
+#include "y2015/actors/pickup_actor.h"
+#include "y2015/actors/stack_actor.h"
+#include "y2015/actors/held_to_lift_actor.h"
 
 using ::aos::time::Time;
 using ::frc971::control_loops::claw_queue;
diff --git a/y2015/autonomous/auto.h b/y2015/autonomous/auto.h
new file mode 100644
index 0000000..7733715
--- /dev/null
+++ b/y2015/autonomous/auto.h
@@ -0,0 +1,12 @@
+#ifndef Y2015_AUTONOMOUS_AUTO_H_
+#define Y2015_AUTONOMOUS_AUTO_H_
+
+namespace frc971 {
+namespace autonomous {
+
+void HandleAuto();
+
+}  // namespace autonomous
+}  // namespace frc971
+
+#endif  // Y2015_AUTONOMOUS_AUTO_H_
diff --git a/frc971/autonomous/auto_main.cc b/y2015/autonomous/auto_main.cc
similarity index 96%
rename from frc971/autonomous/auto_main.cc
rename to y2015/autonomous/auto_main.cc
index 9a70682..4a24e6c 100644
--- a/frc971/autonomous/auto_main.cc
+++ b/y2015/autonomous/auto_main.cc
@@ -4,7 +4,7 @@
 #include "aos/linux_code/init.h"
 #include "aos/common/logging/logging.h"
 #include "frc971/autonomous/auto.q.h"
-#include "frc971/autonomous/auto.h"
+#include "y2015/autonomous/auto.h"
 
 using ::aos::time::Time;
 
diff --git a/y2015/autonomous/autonomous.gyp b/y2015/autonomous/autonomous.gyp
new file mode 100644
index 0000000..63898e8
--- /dev/null
+++ b/y2015/autonomous/autonomous.gyp
@@ -0,0 +1,43 @@
+{
+  'targets': [
+    {
+      'target_name': 'auto_lib',
+      'type': 'static_library',
+      'sources': [
+        'auto.cc',
+      ],
+      'dependencies': [
+        '<(DEPTH)/frc971/autonomous/autonomous.gyp:auto_queue',
+        '<(AOS)/common/controls/controls.gyp:control_loop',
+        '<(DEPTH)/y2015/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(AOS)/common/common.gyp:time',
+        '<(AOS)/common/util/util.gyp:phased_loop',
+        '<(AOS)/common/util/util.gyp:trapezoid_profile',
+        '<(AOS)/build/aos.gyp:logging',
+        '<(DEPTH)/y2015/actors/actors.gyp:drivetrain_action_lib',
+        '<(AOS)/common/logging/logging.gyp:queue_logging',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/actors/actors.gyp:stack_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:held_to_lift_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:pickup_action_lib',
+      ],
+      'export_dependent_settings': [
+        '<(AOS)/common/controls/controls.gyp:control_loop',
+      ],
+    },
+    {
+      'target_name': 'auto',
+      'type': 'executable',
+      'sources': [
+        'auto_main.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/linux_code/linux_code.gyp:init',
+        '<(DEPTH)/frc971/autonomous/autonomous.gyp:auto_queue',
+        'auto_lib',
+      ],
+    },
+  ],
+}
diff --git a/frc971/constants.cc b/y2015/constants.cc
similarity index 98%
rename from frc971/constants.cc
rename to y2015/constants.cc
index 785c0d7..50f6672 100644
--- a/frc971/constants.cc
+++ b/y2015/constants.cc
@@ -1,4 +1,4 @@
-#include "frc971/constants.h"
+#include "y2015/constants.h"
 
 #include <math.h>
 #include <stdint.h>
@@ -15,8 +15,8 @@
 #include "aos/common/network/team_number.h"
 #include "aos/common/mutex.h"
 
-#include "frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
-#include "frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
+#include "y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 
 #ifndef M_PI
 #define M_PI 3.14159265358979323846
diff --git a/y2015/constants.h b/y2015/constants.h
new file mode 100644
index 0000000..a87315c
--- /dev/null
+++ b/y2015/constants.h
@@ -0,0 +1,149 @@
+#ifndef Y2015_CONSTANTS_H_
+#define Y2015_CONSTANTS_H_
+
+#include <stdint.h>
+
+#include "frc971/control_loops/state_feedback_loop.h"
+#include "frc971/shifter_hall_effect.h"
+#include "frc971/constants.h"
+
+namespace frc971 {
+namespace constants {
+
+// Has all of the numbers that change for both robots and makes it easy to
+// retrieve the values for the current one.
+
+// Everything is in SI units (volts, radians, meters, seconds, etc).
+// Some of these values are related to the conversion between raw values
+// (encoder counts, voltage, etc) to scaled units (radians, meters, etc).
+
+// This structure contains current values for all of the things that change.
+struct Values {
+  // Drivetrain Values /////
+
+  // The ratio from the encoder shaft to the drivetrain wheels.
+  double drivetrain_encoder_ratio;
+  // The ratio from the encoder shaft to the arm joint.
+  double arm_encoder_ratio;
+  // The ratio from the pot shaft to the arm joint.
+  double arm_pot_ratio;
+  // The ratio from the encoder shaft to the elevator output pulley.
+  double elev_encoder_ratio;
+  // The ratio from the pot shaft to the elevator output pulley.
+  double elev_pot_ratio;
+  // How far the elevator moves (meters) per radian on the output pulley.
+  double elev_distance_per_radian;
+  // The ratio from the encoder shaft to the claw joint.
+  double claw_encoder_ratio;
+  // The ratio from the pot shaft to the claw joint.
+  double claw_pot_ratio;
+
+  // How tall a tote is in meters.
+  double tote_height;
+
+  // The gear ratios from motor shafts to the drivetrain wheels for high and low
+  // gear.
+  double low_gear_ratio;
+  double high_gear_ratio;
+  ShifterHallEffect left_drive, right_drive;
+  bool clutch_transmission;
+
+  double turn_width;
+
+  ::std::function<StateFeedbackLoop<2, 2, 2>()> make_v_drivetrain_loop;
+  ::std::function<StateFeedbackLoop<4, 2, 2>()> make_drivetrain_loop;
+
+  double drivetrain_done_distance;
+  double drivetrain_max_speed;
+
+  // Superstructure Values /////
+
+  // Defines a range of motion for a subsystem.
+  // These are all absolute positions in scaled units.
+  struct Range {
+    double lower_hard_limit;
+    double upper_hard_limit;
+    double lower_limit;
+    double upper_limit;
+  };
+
+  struct Claw {
+    Range wrist;
+    ZeroingConstants zeroing;
+    // The value to add to potentiometer readings after they have been converted
+    // to radians so that the resulting value is 0 when the claw is at absolute
+    // 0 (horizontal straight out the front).
+    double potentiometer_offset;
+
+    // Time between sending commands to claw opening pistons and them reaching
+    // the new state.
+    double piston_switch_time;
+    // How far on either side we look for the index pulse before we give up.
+    double zeroing_range;
+  };
+  Claw claw;
+
+  struct Fridge {
+    Range elevator;
+    Range arm;
+
+    ZeroingConstants left_elev_zeroing;
+    ZeroingConstants right_elev_zeroing;
+    ZeroingConstants left_arm_zeroing;
+    ZeroingConstants right_arm_zeroing;
+
+    // Values to add to scaled potentiometer readings so 0 lines up with the
+    // physical absolute 0.
+    double left_elevator_potentiometer_offset;
+    double right_elevator_potentiometer_offset;
+    double left_arm_potentiometer_offset;
+    double right_arm_potentiometer_offset;
+
+    // How high the elevator has to be before we start zeroing the arm.
+    double arm_zeroing_height;
+
+    // The length of the arm, from the axis of the bottom pivot to the axis of
+    // the top pivot.
+    double arm_length;
+  };
+  Fridge fridge;
+
+  double max_allowed_left_right_arm_difference;
+  double max_allowed_left_right_elevator_difference;
+
+  struct ClawGeometry {
+    // Horizontal distance from the center of the grabber to the end.
+    double grabber_half_length;
+    // Vertical distance from the arm rotation center to the bottom of the
+    // grabber.  Distance measured with arm vertical (theta = 0).
+    double grabber_delta_y;
+    // Vertical separation of the claw and arm rotation centers with the
+    // elevator at 0.0 and the arm angle set to zero.
+    double grabber_arm_vert_separation;
+    // Horizontal separation of the claw and arm rotation centers with the
+    // elevator at 0.0 and the arm angle set to zero.
+    double grabber_arm_horz_separation;
+    // Distance between the center of the claw to the top of the claw.
+    // The line drawn at this distance parallel to the claw centerline is used
+    // to determine if claw interfears with the grabber.
+    double claw_top_thickness;
+    // The grabber is safe at any height if it is behind this location.
+    double grabber_always_safe_h_min;
+    // The grabber is safe at any x if it is above this location.
+    double grabber_always_safe_x_max;
+  };
+  ClawGeometry clawGeometry;
+};
+
+// Creates (once) a Values instance for ::aos::network::GetTeamNumber() and
+// returns a reference to it.
+const Values &GetValues();
+
+// Creates Values instances for each team number it is called with and returns
+// them.
+const Values &GetValuesForTeam(uint16_t team_number);
+
+}  // namespace constants
+}  // namespace frc971
+
+#endif  // Y2015_CONSTANTS_H_
diff --git a/frc971/control_loops/claw/claw.cc b/y2015/control_loops/claw/claw.cc
similarity index 98%
rename from frc971/control_loops/claw/claw.cc
rename to y2015/control_loops/claw/claw.cc
index 068836c..c1a734e 100644
--- a/frc971/control_loops/claw/claw.cc
+++ b/y2015/control_loops/claw/claw.cc
@@ -1,12 +1,12 @@
-#include "frc971/control_loops/claw/claw.h"
+#include "y2015/control_loops/claw/claw.h"
 
 #include <algorithm>
 
 #include "aos/common/controls/control_loops.q.h"
 #include "aos/common/logging/logging.h"
 
-#include "frc971/constants.h"
-#include "frc971/control_loops/claw/claw_motor_plant.h"
+#include "y2015/constants.h"
+#include "y2015/control_loops/claw/claw_motor_plant.h"
 #include "aos/common/util/trapezoid_profile.h"
 
 namespace frc971 {
diff --git a/frc971/control_loops/claw/claw.gyp b/y2015/control_loops/claw/claw.gyp
similarity index 95%
rename from frc971/control_loops/claw/claw.gyp
rename to y2015/control_loops/claw/claw.gyp
index 40fe95d..780f065 100644
--- a/frc971/control_loops/claw/claw.gyp
+++ b/y2015/control_loops/claw/claw.gyp
@@ -20,7 +20,7 @@
       'type': 'static_library',
       'sources': ['claw.q'],
       'variables': {
-        'header_path': 'frc971/control_loops/claw',
+        'header_path': 'y2015/control_loops/claw',
       },
       'dependencies': [
         '<(AOS)/common/controls/controls.gyp:control_loop_queues',
@@ -45,7 +45,7 @@
         '<(AOS)/common/controls/controls.gyp:control_loop',
         '<(AOS)/common/common.gyp:time',
         '<(AOS)/common/util/util.gyp:trapezoid_profile',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         '<(DEPTH)/frc971/zeroing/zeroing.gyp:zeroing',
       ],
diff --git a/frc971/control_loops/claw/claw.h b/y2015/control_loops/claw/claw.h
similarity index 93%
rename from frc971/control_loops/claw/claw.h
rename to y2015/control_loops/claw/claw.h
index 0413b8d..02e5398 100644
--- a/frc971/control_loops/claw/claw.h
+++ b/y2015/control_loops/claw/claw.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_CLAW_H_
-#define FRC971_CONTROL_LOOPS_CLAW_H_
+#ifndef Y2015_CONTROL_LOOPS_CLAW_H_
+#define Y2015_CONTROL_LOOPS_CLAW_H_
 
 #include <memory>
 
@@ -7,8 +7,8 @@
 #include "aos/common/time.h"
 #include "aos/common/util/trapezoid_profile.h"
 #include "frc971/control_loops/state_feedback_loop.h"
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/control_loops/claw/claw_motor_plant.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/claw/claw_motor_plant.h"
 #include "frc971/zeroing/zeroing.h"
 
 namespace frc971 {
@@ -113,4 +113,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_CLAW_H_
+#endif  // Y2015_CONTROL_LOOPS_CLAW_H_
diff --git a/frc971/control_loops/claw/claw.q b/y2015/control_loops/claw/claw.q
similarity index 100%
rename from frc971/control_loops/claw/claw.q
rename to y2015/control_loops/claw/claw.q
diff --git a/frc971/control_loops/claw/claw_lib_test.cc b/y2015/control_loops/claw/claw_lib_test.cc
similarity index 98%
rename from frc971/control_loops/claw/claw_lib_test.cc
rename to y2015/control_loops/claw/claw_lib_test.cc
index e53c0ed..10fcc07 100644
--- a/frc971/control_loops/claw/claw_lib_test.cc
+++ b/y2015/control_loops/claw/claw_lib_test.cc
@@ -7,10 +7,10 @@
 #include "aos/common/queue.h"
 #include "aos/common/time.h"
 #include "aos/common/controls/control_loop_test.h"
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/control_loops/claw/claw.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/claw/claw.h"
 #include "frc971/control_loops/position_sensor_sim.h"
-#include "frc971/constants.h"
+#include "y2015/constants.h"
 #include "frc971/control_loops/team_number_test_environment.h"
 
 using ::aos::time::Time;
diff --git a/frc971/control_loops/claw/claw_main.cc b/y2015/control_loops/claw/claw_main.cc
similarity index 77%
rename from frc971/control_loops/claw/claw_main.cc
rename to y2015/control_loops/claw/claw_main.cc
index bf25a03..d1b869c 100644
--- a/frc971/control_loops/claw/claw_main.cc
+++ b/y2015/control_loops/claw/claw_main.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/claw/claw.h"
+#include "y2015/control_loops/claw/claw.h"
 
 #include "aos/linux_code/init.h"
 
diff --git a/frc971/control_loops/claw/claw_motor_plant.cc b/y2015/control_loops/claw/claw_motor_plant.cc
similarity index 96%
rename from frc971/control_loops/claw/claw_motor_plant.cc
rename to y2015/control_loops/claw/claw_motor_plant.cc
index b95bf12..5f5c206 100644
--- a/frc971/control_loops/claw/claw_motor_plant.cc
+++ b/y2015/control_loops/claw/claw_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/claw/claw_motor_plant.h"
+#include "y2015/control_loops/claw/claw_motor_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/claw/claw_motor_plant.h b/y2015/control_loops/claw/claw_motor_plant.h
similarity index 69%
rename from frc971/control_loops/claw/claw_motor_plant.h
rename to y2015/control_loops/claw/claw_motor_plant.h
index 1502be3..6cb9cdb 100644
--- a/frc971/control_loops/claw/claw_motor_plant.h
+++ b/y2015/control_loops/claw/claw_motor_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
+#define Y2015_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -17,4 +17,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/claw/replay_claw.cc b/y2015/control_loops/claw/replay_claw.cc
similarity index 93%
rename from frc971/control_loops/claw/replay_claw.cc
rename to y2015/control_loops/claw/replay_claw.cc
index 00d3c6d..50673e4 100644
--- a/frc971/control_loops/claw/replay_claw.cc
+++ b/y2015/control_loops/claw/replay_claw.cc
@@ -1,7 +1,7 @@
 #include "aos/common/controls/replay_control_loop.h"
 #include "aos/linux_code/init.h"
 
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 // Reads one or more log files and sends out all the queue messages (in the
 // correct order and at the correct time) to feed a "live" claw process.
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/y2015/control_loops/drivetrain/drivetrain.cc
similarity index 98%
rename from frc971/control_loops/drivetrain/drivetrain.cc
rename to y2015/control_loops/drivetrain/drivetrain.cc
index 03e0db8..22a5d48 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/y2015/control_loops/drivetrain/drivetrain.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/drivetrain/drivetrain.h"
+#include "y2015/control_loops/drivetrain/drivetrain.h"
 
 #include <stdio.h>
 #include <sched.h>
@@ -12,11 +12,11 @@
 #include "aos/common/logging/queue_logging.h"
 #include "aos/common/logging/matrix_logging.h"
 
-#include "frc971/constants.h"
+#include "y2015/constants.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "frc971/control_loops/coerce_goal.h"
-#include "frc971/control_loops/drivetrain/polydrivetrain_cim_plant.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/control_loops/drivetrain/polydrivetrain_cim_plant.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/queues/gyro.q.h"
 #include "frc971/shifter_hall_effect.h"
 
diff --git a/frc971/control_loops/drivetrain/drivetrain.gyp b/y2015/control_loops/drivetrain/drivetrain.gyp
similarity index 96%
rename from frc971/control_loops/drivetrain/drivetrain.gyp
rename to y2015/control_loops/drivetrain/drivetrain.gyp
index fb32377..4333258 100644
--- a/frc971/control_loops/drivetrain/drivetrain.gyp
+++ b/y2015/control_loops/drivetrain/drivetrain.gyp
@@ -20,7 +20,7 @@
       'type': 'static_library',
       'sources': ['drivetrain.q'],
       'variables': {
-        'header_path': 'frc971/control_loops/drivetrain',
+        'header_path': 'y2015/control_loops/drivetrain',
       },
       'dependencies': [
         '<(AOS)/common/controls/controls.gyp:control_loop_queues',
@@ -54,7 +54,7 @@
       'dependencies': [
         'drivetrain_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
         '<(AOS)/common/controls/controls.gyp:polytope',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:coerce_goal',
diff --git a/frc971/control_loops/drivetrain/drivetrain.h b/y2015/control_loops/drivetrain/drivetrain.h
similarity index 87%
rename from frc971/control_loops/drivetrain/drivetrain.h
rename to y2015/control_loops/drivetrain/drivetrain.h
index decde09..8e8768e 100644
--- a/frc971/control_loops/drivetrain/drivetrain.h
+++ b/y2015/control_loops/drivetrain/drivetrain.h
@@ -1,12 +1,12 @@
-#ifndef FRC971_CONTROL_LOOPS_DRIVETRAIN_H_
-#define FRC971_CONTROL_LOOPS_DRIVETRAIN_H_
+#ifndef Y2015_CONTROL_LOOPS_DRIVETRAIN_H_
+#define Y2015_CONTROL_LOOPS_DRIVETRAIN_H_
 
 #include "Eigen/Dense"
 
 #include "aos/common/controls/polytope.h"
 #include "aos/common/controls/control_loop.h"
 #include "aos/common/controls/polytope.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
 #include "aos/common/util/log_interval.h"
 
 namespace frc971 {
@@ -40,4 +40,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_DRIVETRAIN_H_
+#endif  // Y2015_CONTROL_LOOPS_DRIVETRAIN_H_
diff --git a/frc971/control_loops/drivetrain/drivetrain.q b/y2015/control_loops/drivetrain/drivetrain.q
similarity index 100%
rename from frc971/control_loops/drivetrain/drivetrain.q
rename to y2015/control_loops/drivetrain/drivetrain.q
diff --git a/frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.cc b/y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
similarity index 98%
rename from frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
rename to y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
index b04c5af..e2f5a9a 100644
--- a/frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
+++ b/y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h b/y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.h
similarity index 80%
rename from frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h
rename to y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.h
index 366f95d..a2848be 100644
--- a/frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h
+++ b/y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
+#define Y2015_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -29,4 +29,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/y2015/control_loops/drivetrain/drivetrain_lib_test.cc
similarity index 97%
rename from frc971/control_loops/drivetrain/drivetrain_lib_test.cc
rename to y2015/control_loops/drivetrain/drivetrain_lib_test.cc
index 7e14cf0..d3869aa 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/y2015/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -8,11 +8,11 @@
 #include "aos/common/controls/polytope.h"
 #include "aos/common/controls/control_loop_test.h"
 
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
-#include "frc971/control_loops/drivetrain/drivetrain.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/control_loops/drivetrain/drivetrain.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "frc971/control_loops/coerce_goal.h"
-#include "frc971/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 #include "frc971/queues/gyro.q.h"
 
 
diff --git a/frc971/control_loops/drivetrain/drivetrain_main.cc b/y2015/control_loops/drivetrain/drivetrain_main.cc
similarity index 75%
rename from frc971/control_loops/drivetrain/drivetrain_main.cc
rename to y2015/control_loops/drivetrain/drivetrain_main.cc
index f3f0ddd..10a50f3 100644
--- a/frc971/control_loops/drivetrain/drivetrain_main.cc
+++ b/y2015/control_loops/drivetrain/drivetrain_main.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/drivetrain/drivetrain.h"
+#include "y2015/control_loops/drivetrain/drivetrain.h"
 
 #include "aos/linux_code/init.h"
 
diff --git a/frc971/control_loops/drivetrain/polydrivetrain_cim_plant.cc b/y2015/control_loops/drivetrain/polydrivetrain_cim_plant.cc
similarity index 95%
rename from frc971/control_loops/drivetrain/polydrivetrain_cim_plant.cc
rename to y2015/control_loops/drivetrain/polydrivetrain_cim_plant.cc
index ec2b669..36ebb59 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain_cim_plant.cc
+++ b/y2015/control_loops/drivetrain/polydrivetrain_cim_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/drivetrain/polydrivetrain_cim_plant.h"
+#include "y2015/control_loops/drivetrain/polydrivetrain_cim_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/drivetrain/polydrivetrain_cim_plant.h b/y2015/control_loops/drivetrain/polydrivetrain_cim_plant.h
similarity index 64%
rename from frc971/control_loops/drivetrain/polydrivetrain_cim_plant.h
rename to y2015/control_loops/drivetrain/polydrivetrain_cim_plant.h
index 12b2c59..1c445a7 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain_cim_plant.h
+++ b/y2015/control_loops/drivetrain/polydrivetrain_cim_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
-#define FRC971_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
+#define Y2015_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -17,4 +17,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
diff --git a/frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc b/y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
similarity index 98%
rename from frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
rename to y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
index 1641306..811991c 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
+++ b/y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
+#include "y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h b/y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
similarity index 80%
rename from frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
rename to y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
index 27aa4dd..5a99caf 100644
--- a/frc971/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
+++ b/y2015/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
+#define Y2015_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -29,4 +29,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/drivetrain/replay_drivetrain.cc b/y2015/control_loops/drivetrain/replay_drivetrain.cc
similarity index 91%
rename from frc971/control_loops/drivetrain/replay_drivetrain.cc
rename to y2015/control_loops/drivetrain/replay_drivetrain.cc
index 432efdc..030a945 100644
--- a/frc971/control_loops/drivetrain/replay_drivetrain.cc
+++ b/y2015/control_loops/drivetrain/replay_drivetrain.cc
@@ -1,7 +1,7 @@
 #include "aos/common/controls/replay_control_loop.h"
 #include "aos/linux_code/init.h"
 
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
 
 // Reads one or more log files and sends out all the queue messages (in the
 // correct order and at the correct time) to feed a "live" drivetrain process.
diff --git a/frc971/control_loops/fridge/arm_motor_plant.cc b/y2015/control_loops/fridge/arm_motor_plant.cc
similarity index 97%
rename from frc971/control_loops/fridge/arm_motor_plant.cc
rename to y2015/control_loops/fridge/arm_motor_plant.cc
index 556b812..6e3205a 100644
--- a/frc971/control_loops/fridge/arm_motor_plant.cc
+++ b/y2015/control_loops/fridge/arm_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/fridge/arm_motor_plant.h"
+#include "y2015/control_loops/fridge/arm_motor_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/fridge/arm_motor_plant.h b/y2015/control_loops/fridge/arm_motor_plant.h
similarity index 68%
rename from frc971/control_loops/fridge/arm_motor_plant.h
rename to y2015/control_loops/fridge/arm_motor_plant.h
index 4874ad5..3bf8d09 100644
--- a/frc971/control_loops/fridge/arm_motor_plant.h
+++ b/y2015/control_loops/fridge/arm_motor_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_FRIDGE_ARM_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_FRIDGE_ARM_MOTOR_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_FRIDGE_ARM_MOTOR_PLANT_H_
+#define Y2015_CONTROL_LOOPS_FRIDGE_ARM_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -17,4 +17,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_FRIDGE_ARM_MOTOR_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_FRIDGE_ARM_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/fridge/elevator_motor_plant.cc b/y2015/control_loops/fridge/elevator_motor_plant.cc
similarity index 97%
rename from frc971/control_loops/fridge/elevator_motor_plant.cc
rename to y2015/control_loops/fridge/elevator_motor_plant.cc
index e75e668..995d838 100644
--- a/frc971/control_loops/fridge/elevator_motor_plant.cc
+++ b/y2015/control_loops/fridge/elevator_motor_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/fridge/elevator_motor_plant.h"
+#include "y2015/control_loops/fridge/elevator_motor_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/fridge/elevator_motor_plant.h b/y2015/control_loops/fridge/elevator_motor_plant.h
similarity index 67%
rename from frc971/control_loops/fridge/elevator_motor_plant.h
rename to y2015/control_loops/fridge/elevator_motor_plant.h
index 7efd116..e68e6d7 100644
--- a/frc971/control_loops/fridge/elevator_motor_plant.h
+++ b/y2015/control_loops/fridge/elevator_motor_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_FRIDGE_ELEVATOR_MOTOR_PLANT_H_
-#define FRC971_CONTROL_LOOPS_FRIDGE_ELEVATOR_MOTOR_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_FRIDGE_ELEVATOR_MOTOR_PLANT_H_
+#define Y2015_CONTROL_LOOPS_FRIDGE_ELEVATOR_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -17,4 +17,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_FRIDGE_ELEVATOR_MOTOR_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_FRIDGE_ELEVATOR_MOTOR_PLANT_H_
diff --git a/frc971/control_loops/fridge/fridge.cc b/y2015/control_loops/fridge/fridge.cc
similarity index 98%
rename from frc971/control_loops/fridge/fridge.cc
rename to y2015/control_loops/fridge/fridge.cc
index b5e0ab6..083baf2 100644
--- a/frc971/control_loops/fridge/fridge.cc
+++ b/y2015/control_loops/fridge/fridge.cc
@@ -1,16 +1,16 @@
-#include "frc971/control_loops/fridge/fridge.h"
+#include "y2015/control_loops/fridge/fridge.h"
 
 #include <cmath>
 
 #include "aos/common/controls/control_loops.q.h"
 #include "aos/common/logging/logging.h"
 
-#include "frc971/control_loops/fridge/elevator_motor_plant.h"
-#include "frc971/control_loops/fridge/integral_arm_plant.h"
+#include "y2015/control_loops/fridge/elevator_motor_plant.h"
+#include "y2015/control_loops/fridge/integral_arm_plant.h"
 #include "frc971/control_loops/voltage_cap/voltage_cap.h"
 #include "frc971/zeroing/zeroing.h"
 
-#include "frc971/constants.h"
+#include "y2015/constants.h"
 
 namespace frc971 {
 namespace control_loops {
diff --git a/frc971/control_loops/fridge/fridge.gyp b/y2015/control_loops/fridge/fridge.gyp
similarity index 96%
rename from frc971/control_loops/fridge/fridge.gyp
rename to y2015/control_loops/fridge/fridge.gyp
index aaf3153..76844c4 100644
--- a/frc971/control_loops/fridge/fridge.gyp
+++ b/y2015/control_loops/fridge/fridge.gyp
@@ -20,7 +20,7 @@
       'type': 'static_library',
       'sources': ['fridge.q'],
       'variables': {
-        'header_path': 'frc971/control_loops/fridge',
+        'header_path': 'y2015/control_loops/fridge',
       },
       'dependencies': [
         '<(AOS)/common/controls/controls.gyp:control_loop_queues',
@@ -46,7 +46,7 @@
         'fridge_queue',
         '<(AOS)/common/controls/controls.gyp:control_loop',
         '<(AOS)/common/util/util.gyp:trapezoid_profile',
-        '<(DEPTH)/frc971/frc971.gyp:constants',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         '<(DEPTH)/frc971/control_loops/voltage_cap/voltage_cap.gyp:voltage_cap',
       ],
diff --git a/frc971/control_loops/fridge/fridge.h b/y2015/control_loops/fridge/fridge.h
similarity index 95%
rename from frc971/control_loops/fridge/fridge.h
rename to y2015/control_loops/fridge/fridge.h
index d1fbc68..0448e09 100644
--- a/frc971/control_loops/fridge/fridge.h
+++ b/y2015/control_loops/fridge/fridge.h
@@ -1,14 +1,14 @@
-#ifndef FRC971_CONTROL_LOOPS_FRIDGE_H_
-#define FRC971_CONTROL_LOOPS_FRIDGE_H_
+#ifndef Y2015_CONTROL_LOOPS_FRIDGE_H_
+#define Y2015_CONTROL_LOOPS_FRIDGE_H_
 
 #include <memory>
 
 #include "aos/common/controls/control_loop.h"
 #include "aos/common/util/trapezoid_profile.h"
 #include "frc971/control_loops/state_feedback_loop.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
 #include "frc971/zeroing/zeroing.h"
-#include "aos/common/util/kinematics.h"
+#include "y2015/util/kinematics.h"
 
 namespace frc971 {
 namespace control_loops {
@@ -168,5 +168,5 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif // FRC971_CONTROL_LOOPS_FRIDGE_H_
+#endif // Y2015_CONTROL_LOOPS_FRIDGE_H_
 
diff --git a/frc971/control_loops/fridge/fridge.q b/y2015/control_loops/fridge/fridge.q
similarity index 100%
rename from frc971/control_loops/fridge/fridge.q
rename to y2015/control_loops/fridge/fridge.q
diff --git a/frc971/control_loops/fridge/fridge_lib_test.cc b/y2015/control_loops/fridge/fridge_lib_test.cc
similarity index 98%
rename from frc971/control_loops/fridge/fridge_lib_test.cc
rename to y2015/control_loops/fridge/fridge_lib_test.cc
index 83859ee..7719fb4 100644
--- a/frc971/control_loops/fridge/fridge_lib_test.cc
+++ b/y2015/control_loops/fridge/fridge_lib_test.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/fridge/fridge.h"
+#include "y2015/control_loops/fridge/fridge.h"
 
 #include <math.h>
 #include <unistd.h>
@@ -10,12 +10,12 @@
 #include "aos/common/time.h"
 #include "aos/common/commonmath.h"
 #include "aos/common/controls/control_loop_test.h"
-#include "aos/common/util/kinematics.h"
+#include "y2015/util/kinematics.h"
 #include "frc971/control_loops/position_sensor_sim.h"
-#include "frc971/control_loops/fridge/arm_motor_plant.h"
-#include "frc971/control_loops/fridge/elevator_motor_plant.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
-#include "frc971/constants.h"
+#include "y2015/control_loops/fridge/arm_motor_plant.h"
+#include "y2015/control_loops/fridge/elevator_motor_plant.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
+#include "y2015/constants.h"
 #include "frc971/control_loops/team_number_test_environment.h"
 
 using ::aos::time::Time;
diff --git a/frc971/control_loops/fridge/fridge_main.cc b/y2015/control_loops/fridge/fridge_main.cc
similarity index 76%
rename from frc971/control_loops/fridge/fridge_main.cc
rename to y2015/control_loops/fridge/fridge_main.cc
index f92ced3..e0fd6ea 100644
--- a/frc971/control_loops/fridge/fridge_main.cc
+++ b/y2015/control_loops/fridge/fridge_main.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/fridge/fridge.h"
+#include "y2015/control_loops/fridge/fridge.h"
 
 #include "aos/linux_code/init.h"
 
diff --git a/frc971/control_loops/fridge/integral_arm_plant.cc b/y2015/control_loops/fridge/integral_arm_plant.cc
similarity index 97%
rename from frc971/control_loops/fridge/integral_arm_plant.cc
rename to y2015/control_loops/fridge/integral_arm_plant.cc
index a101044..da269d7 100644
--- a/frc971/control_loops/fridge/integral_arm_plant.cc
+++ b/y2015/control_loops/fridge/integral_arm_plant.cc
@@ -1,4 +1,4 @@
-#include "frc971/control_loops/fridge/integral_arm_plant.h"
+#include "y2015/control_loops/fridge/integral_arm_plant.h"
 
 #include <vector>
 
diff --git a/frc971/control_loops/fridge/integral_arm_plant.h b/y2015/control_loops/fridge/integral_arm_plant.h
similarity index 69%
rename from frc971/control_loops/fridge/integral_arm_plant.h
rename to y2015/control_loops/fridge/integral_arm_plant.h
index f43f915..80a4876 100644
--- a/frc971/control_loops/fridge/integral_arm_plant.h
+++ b/y2015/control_loops/fridge/integral_arm_plant.h
@@ -1,5 +1,5 @@
-#ifndef FRC971_CONTROL_LOOPS_FRIDGE_INTEGRAL_ARM_PLANT_H_
-#define FRC971_CONTROL_LOOPS_FRIDGE_INTEGRAL_ARM_PLANT_H_
+#ifndef Y2015_CONTROL_LOOPS_FRIDGE_INTEGRAL_ARM_PLANT_H_
+#define Y2015_CONTROL_LOOPS_FRIDGE_INTEGRAL_ARM_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
@@ -17,4 +17,4 @@
 }  // namespace control_loops
 }  // namespace frc971
 
-#endif  // FRC971_CONTROL_LOOPS_FRIDGE_INTEGRAL_ARM_PLANT_H_
+#endif  // Y2015_CONTROL_LOOPS_FRIDGE_INTEGRAL_ARM_PLANT_H_
diff --git a/frc971/control_loops/fridge/replay_fridge.cc b/y2015/control_loops/fridge/replay_fridge.cc
similarity index 92%
rename from frc971/control_loops/fridge/replay_fridge.cc
rename to y2015/control_loops/fridge/replay_fridge.cc
index 87833ef..65cc98a 100644
--- a/frc971/control_loops/fridge/replay_fridge.cc
+++ b/y2015/control_loops/fridge/replay_fridge.cc
@@ -1,7 +1,7 @@
 #include "aos/common/controls/replay_control_loop.h"
 #include "aos/linux_code/init.h"
 
-#include "frc971/control_loops/fridge/fridge.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
 
 // Reads one or more log files and sends out all the queue messages (in the
 // correct order and at the correct time) to feed a "live" fridge process.
diff --git a/frc971/control_loops/python/arm.py b/y2015/control_loops/python/arm.py
similarity index 100%
rename from frc971/control_loops/python/arm.py
rename to y2015/control_loops/python/arm.py
diff --git a/frc971/control_loops/python/claw.py b/y2015/control_loops/python/claw.py
similarity index 100%
rename from frc971/control_loops/python/claw.py
rename to y2015/control_loops/python/claw.py
diff --git a/frc971/control_loops/python/drivetrain.py b/y2015/control_loops/python/drivetrain.py
similarity index 100%
rename from frc971/control_loops/python/drivetrain.py
rename to y2015/control_loops/python/drivetrain.py
diff --git a/frc971/control_loops/python/elevator.py b/y2015/control_loops/python/elevator.py
similarity index 100%
rename from frc971/control_loops/python/elevator.py
rename to y2015/control_loops/python/elevator.py
diff --git a/frc971/control_loops/python/polydrivetrain.py b/y2015/control_loops/python/polydrivetrain.py
similarity index 100%
rename from frc971/control_loops/python/polydrivetrain.py
rename to y2015/control_loops/python/polydrivetrain.py
diff --git a/frc971/control_loops/python/polydrivetrain_test.py b/y2015/control_loops/python/polydrivetrain_test.py
similarity index 100%
rename from frc971/control_loops/python/polydrivetrain_test.py
rename to y2015/control_loops/python/polydrivetrain_test.py
diff --git a/frc971/control_loops/python/shooter.py b/y2015/control_loops/python/shooter.py
similarity index 100%
rename from frc971/control_loops/python/shooter.py
rename to y2015/control_loops/python/shooter.py
diff --git a/frc971/control_loops/update_arm.sh b/y2015/control_loops/update_arm.sh
similarity index 80%
rename from frc971/control_loops/update_arm.sh
rename to y2015/control_loops/update_arm.sh
index c4c1ab9..2a10f93 100755
--- a/frc971/control_loops/update_arm.sh
+++ b/y2015/control_loops/update_arm.sh
@@ -4,6 +4,8 @@
 
 cd $(dirname $0)
 
+export PYTHONPATH=../../frc971/control_loops/python
+
 ./python/arm.py fridge/arm_motor_plant.cc \
     fridge/arm_motor_plant.h \
     fridge/integral_arm_plant.cc \
diff --git a/frc971/control_loops/update_claw.sh b/y2015/control_loops/update_claw.sh
similarity index 74%
rename from frc971/control_loops/update_claw.sh
rename to y2015/control_loops/update_claw.sh
index 3ef6921..d37e737 100755
--- a/frc971/control_loops/update_claw.sh
+++ b/y2015/control_loops/update_claw.sh
@@ -4,5 +4,7 @@
 
 cd $(dirname $0)
 
+export PYTHONPATH=../../frc971/control_loops/python
+
 ./python/claw.py claw/claw_motor_plant.cc \
     claw/claw_motor_plant.h
diff --git a/frc971/control_loops/update_drivetrain.sh b/y2015/control_loops/update_drivetrain.sh
similarity index 84%
rename from frc971/control_loops/update_drivetrain.sh
rename to y2015/control_loops/update_drivetrain.sh
index bad1074..ecd1c41 100755
--- a/frc971/control_loops/update_drivetrain.sh
+++ b/y2015/control_loops/update_drivetrain.sh
@@ -4,6 +4,8 @@
 
 cd $(dirname $0)
 
+export PYTHONPATH=../../frc971/control_loops/python
+
 ./python/drivetrain.py drivetrain/drivetrain_dog_motor_plant.h \
     drivetrain/drivetrain_dog_motor_plant.cc \
     drivetrain/drivetrain_clutch_motor_plant.h \
diff --git a/frc971/control_loops/update_elevator.sh b/y2015/control_loops/update_elevator.sh
similarity index 76%
rename from frc971/control_loops/update_elevator.sh
rename to y2015/control_loops/update_elevator.sh
index 25ea27e..4a7edb4 100755
--- a/frc971/control_loops/update_elevator.sh
+++ b/y2015/control_loops/update_elevator.sh
@@ -4,5 +4,7 @@
 
 cd $(dirname $0)
 
+export PYTHONPATH=../../frc971/control_loops/python
+
 ./python/elevator.py fridge/elevator_motor_plant.cc \
     fridge/elevator_motor_plant.h
diff --git a/frc971/control_loops/update_polydrivetrain.sh b/y2015/control_loops/update_polydrivetrain.sh
similarity index 88%
rename from frc971/control_loops/update_polydrivetrain.sh
rename to y2015/control_loops/update_polydrivetrain.sh
index 2e2748e..338e40e 100755
--- a/frc971/control_loops/update_polydrivetrain.sh
+++ b/y2015/control_loops/update_polydrivetrain.sh
@@ -4,6 +4,8 @@
 
 cd $(dirname $0)
 
+export PYTHONPATH=../../frc971/control_loops/python
+
 ./python/polydrivetrain.py drivetrain/polydrivetrain_dog_motor_plant.h \
     drivetrain/polydrivetrain_dog_motor_plant.cc \
     drivetrain/polydrivetrain_clutch_motor_plant.h \
diff --git a/frc971/http_status/http_status.cc b/y2015/http_status/http_status.cc
similarity index 97%
rename from frc971/http_status/http_status.cc
rename to y2015/http_status/http_status.cc
index e0ee5de..9c64314 100644
--- a/frc971/http_status/http_status.cc
+++ b/y2015/http_status/http_status.cc
@@ -1,4 +1,4 @@
-#include "frc971/http_status/http_status.h"
+#include "y2015/http_status/http_status.h"
 
 #include <iostream>
 #include <sstream>
@@ -14,10 +14,10 @@
 #include "aos/common/util/phased_loop.h"
 #include "aos/common/mutex.h"
 
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
 
-#include "frc971/http_status/embedded.h"
+#include "y2015/http_status/embedded.h"
 
 namespace frc971 {
 namespace http_status {
diff --git a/frc971/http_status/http_status.gyp b/y2015/http_status/http_status.gyp
similarity index 81%
rename from frc971/http_status/http_status.gyp
rename to y2015/http_status/http_status.gyp
index 410e8b9..c78a1fc 100644
--- a/frc971/http_status/http_status.gyp
+++ b/y2015/http_status/http_status.gyp
@@ -14,7 +14,7 @@
             '<(AOS)/externals/seasocks/gen_embedded.py',
           ],
           'outputs': [
-            '<(SHARED_INTERMEDIATE_DIR)/http_status/frc971/http_status/embedded.h',
+            '<(SHARED_INTERMEDIATE_DIR)/http_status/y2015/http_status/embedded.h',
           ],
           'action': [
             'python', '<(AOS)/externals/seasocks/gen_embedded.py', '<(_outputs)',
@@ -28,8 +28,8 @@
         '<(AOS)/linux_code/linux_code.gyp:init',
         '<(AOS)/build/aos.gyp:logging',
         '<(EXTERNALS):seasocks',
-        '<(DEPTH)/frc971/control_loops/claw/claw.gyp:claw_queue',
-        '<(DEPTH)/frc971/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
         '<(AOS)/common/util/util.gyp:phased_loop',
         '<(AOS)/common/common.gyp:time',
       ],
diff --git a/frc971/http_status/http_status.h b/y2015/http_status/http_status.h
similarity index 100%
rename from frc971/http_status/http_status.h
rename to y2015/http_status/http_status.h
diff --git a/frc971/http_status/www/index.html b/y2015/http_status/www/index.html
similarity index 100%
rename from frc971/http_status/www/index.html
rename to y2015/http_status/www/index.html
diff --git a/frc971/http_status/www/lib/canvasjs.min.js b/y2015/http_status/www/lib/canvasjs.min.js
similarity index 100%
rename from frc971/http_status/www/lib/canvasjs.min.js
rename to y2015/http_status/www/lib/canvasjs.min.js
diff --git a/frc971/http_status/www/lib/jquery-1.4.4.js b/y2015/http_status/www/lib/jquery-1.4.4.js
similarity index 100%
rename from frc971/http_status/www/lib/jquery-1.4.4.js
rename to y2015/http_status/www/lib/jquery-1.4.4.js
diff --git a/frc971/http_status/www/lib/reconnecting-websocket.min.js b/y2015/http_status/www/lib/reconnecting-websocket.min.js
similarity index 100%
rename from frc971/http_status/www/lib/reconnecting-websocket.min.js
rename to y2015/http_status/www/lib/reconnecting-websocket.min.js
diff --git a/frc971/http_status/www_defaults/_404.png b/y2015/http_status/www_defaults/_404.png
similarity index 100%
rename from frc971/http_status/www_defaults/_404.png
rename to y2015/http_status/www_defaults/_404.png
Binary files differ
diff --git a/frc971/http_status/www_defaults/_error.css b/y2015/http_status/www_defaults/_error.css
similarity index 100%
rename from frc971/http_status/www_defaults/_error.css
rename to y2015/http_status/www_defaults/_error.css
diff --git a/frc971/http_status/www_defaults/_error.html b/y2015/http_status/www_defaults/_error.html
similarity index 100%
rename from frc971/http_status/www_defaults/_error.html
rename to y2015/http_status/www_defaults/_error.html
diff --git a/frc971/http_status/www_defaults/_seasocks.css b/y2015/http_status/www_defaults/_seasocks.css
similarity index 100%
rename from frc971/http_status/www_defaults/_seasocks.css
rename to y2015/http_status/www_defaults/_seasocks.css
diff --git a/frc971/http_status/www_defaults/_stats.html b/y2015/http_status/www_defaults/_stats.html
similarity index 100%
rename from frc971/http_status/www_defaults/_stats.html
rename to y2015/http_status/www_defaults/_stats.html
diff --git a/frc971/http_status/www_defaults/favicon.ico b/y2015/http_status/www_defaults/favicon.ico
similarity index 100%
rename from frc971/http_status/www_defaults/favicon.ico
rename to y2015/http_status/www_defaults/favicon.ico
Binary files differ
diff --git a/frc971/joystick_reader.cc b/y2015/joystick_reader.cc
similarity index 96%
rename from frc971/joystick_reader.cc
rename to y2015/joystick_reader.cc
index b8ad544..01b5431 100644
--- a/frc971/joystick_reader.cc
+++ b/y2015/joystick_reader.cc
@@ -11,21 +11,21 @@
 #include "aos/common/time.h"
 #include "aos/common/actions/actions.h"
 
-#include "frc971/control_loops/claw/claw.q.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
-#include "frc971/constants.h"
+#include "y2015/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
+#include "y2015/constants.h"
 #include "frc971/queues/gyro.q.h"
 #include "frc971/autonomous/auto.q.h"
-#include "frc971/actors/pickup_actor.h"
-#include "frc971/actors/stack_actor.h"
-#include "frc971/actors/score_actor.h"
-#include "frc971/actors/stack_and_lift_actor.h"
-#include "frc971/actors/stack_and_hold_actor.h"
-#include "frc971/actors/held_to_lift_actor.h"
-#include "frc971/actors/lift_actor.h"
-#include "frc971/actors/can_pickup_actor.h"
-#include "frc971/actors/horizontal_can_pickup_actor.h"
+#include "y2015/actors/pickup_actor.h"
+#include "y2015/actors/stack_actor.h"
+#include "y2015/actors/score_actor.h"
+#include "y2015/actors/stack_and_lift_actor.h"
+#include "y2015/actors/stack_and_hold_actor.h"
+#include "y2015/actors/held_to_lift_actor.h"
+#include "y2015/actors/lift_actor.h"
+#include "y2015/actors/can_pickup_actor.h"
+#include "y2015/actors/horizontal_can_pickup_actor.h"
 
 using ::frc971::control_loops::claw_queue;
 using ::frc971::control_loops::drivetrain_queue;
diff --git a/y2015/prime/build.sh b/y2015/prime/build.sh
new file mode 100755
index 0000000..46cff40
--- /dev/null
+++ b/y2015/prime/build.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd $(dirname $0)
+
+exec ../../aos/build/build.py $0 prime y2015 prime.gyp "$@"
diff --git a/frc971/prime/compile_loop.sh b/y2015/prime/compile_loop.sh
similarity index 100%
rename from frc971/prime/compile_loop.sh
rename to y2015/prime/compile_loop.sh
diff --git a/frc971/prime/prime.gyp b/y2015/prime/prime.gyp
similarity index 76%
rename from frc971/prime/prime.gyp
rename to y2015/prime/prime.gyp
index 88a37ba..5a8b006 100644
--- a/frc971/prime/prime.gyp
+++ b/y2015/prime/prime.gyp
@@ -4,10 +4,8 @@
       'target_name': 'All',
       'type': 'none',
       'dependencies': [
-        '<(AOS)/build/aos_all.gyp:Prime',
+        '../../frc971/frc971.gyp:All',
 
-        '../control_loops/control_loops.gyp:state_feedback_loop_test',
-        '../control_loops/control_loops.gyp:position_sensor_sim_test',
         '../control_loops/drivetrain/drivetrain.gyp:drivetrain',
         '../control_loops/drivetrain/drivetrain.gyp:drivetrain_lib_test',
         '../control_loops/drivetrain/drivetrain.gyp:replay_drivetrain',
@@ -18,10 +16,9 @@
         '../control_loops/claw/claw.gyp:claw_lib_test',
         '../control_loops/claw/claw.gyp:replay_claw',
         '../autonomous/autonomous.gyp:auto',
-        '../frc971.gyp:joystick_reader',
-        '../zeroing/zeroing.gyp:zeroing_test',
+        '../y2015.gyp:joystick_reader',
         '../http_status/http_status.gyp:http_status',
-        '../control_loops/voltage_cap/voltage_cap.gyp:voltage_cap_test',
+        '../util/util.gyp:kinematics_test',
         '../actors/actors.gyp:binaries',
       ],
       'copies': [
diff --git a/frc971/prime/start_list.txt b/y2015/prime/start_list.txt
similarity index 100%
rename from frc971/prime/start_list.txt
rename to y2015/prime/start_list.txt
diff --git a/aos/common/util/kinematics.h b/y2015/util/kinematics.h
similarity index 98%
rename from aos/common/util/kinematics.h
rename to y2015/util/kinematics.h
index 5718390..611012e 100644
--- a/aos/common/util/kinematics.h
+++ b/y2015/util/kinematics.h
@@ -1,9 +1,9 @@
-#ifndef AOS_COMMON_UTIL_KINEMATICS_H_
-#define AOS_COMMON_UTIL_KINEMATICS_H_
+#ifndef Y2015_UTIL_KINEMATICS_H_
+#define Y2015_UTIL_KINEMATICS_H_
 
 #include <cmath>
 #include "Eigen/Dense"
-#include "frc971/constants.h"
+#include "y2015/constants.h"
 
 namespace aos {
 namespace util {
@@ -385,4 +385,4 @@
 }  // namespace util
 }  // namespace aos
 
-#endif  // AOS_COMMON_UTIL_KINEMATICS_H_
+#endif  // Y2015_UTIL_KINEMATICS_H_
diff --git a/aos/common/util/kinematics_test.cc b/y2015/util/kinematics_test.cc
similarity index 99%
rename from aos/common/util/kinematics_test.cc
rename to y2015/util/kinematics_test.cc
index 268f78d..be1645e 100644
--- a/aos/common/util/kinematics_test.cc
+++ b/y2015/util/kinematics_test.cc
@@ -4,7 +4,7 @@
 
 #include "aos/common/logging/logging.h"
 #include "aos/common/queue_testutils.h"
-#include "aos/common/util/kinematics.h"
+#include "y2015/util/kinematics.h"
 #include "frc971/control_loops/team_number_test_environment.h"
 
 namespace aos {
diff --git a/y2015/util/util.gyp b/y2015/util/util.gyp
new file mode 100644
index 0000000..00079c1
--- /dev/null
+++ b/y2015/util/util.gyp
@@ -0,0 +1,33 @@
+{
+  'targets': [
+    {
+      'target_name': 'kinematics',
+      'type': 'static_library',
+      'sources': [
+        #'kinematics.h',
+      ],
+      'dependencies': [
+        '<(EXTERNALS):eigen',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+      ],
+      'export_dependent_settings': [
+        '<(EXTERNALS):eigen',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+      ],
+    },
+    {
+      'target_name': 'kinematics_test',
+      'type': 'executable',
+      'sources': [
+        'kinematics_test.cc',
+      ],
+      'dependencies': [
+        '<(EXTERNALS):gtest',
+        '<(AOS)/common/common.gyp:queue_testutils',
+        '<(AOS)/build/aos.gyp:logging',
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:team_number_test_environment',
+        'kinematics'
+      ],
+    },
+  ],
+}
diff --git a/y2015/wpilib/wpilib.gyp b/y2015/wpilib/wpilib.gyp
new file mode 100644
index 0000000..8c1be39
--- /dev/null
+++ b/y2015/wpilib/wpilib.gyp
@@ -0,0 +1,38 @@
+{
+  'targets': [
+    {
+      'target_name': 'wpilib_interface',
+      'type': 'executable',
+      'sources': [
+        'wpilib_interface.cc'
+      ],
+      'dependencies': [
+        '<(AOS)/linux_code/linux_code.gyp:init',
+        '<(AOS)/common/common.gyp:stl_mutex',
+        '<(AOS)/build/aos.gyp:logging',
+        '<(EXTERNALS):WPILib',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/y2015/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
+        '<(AOS)/common/controls/controls.gyp:control_loop',
+        '<(AOS)/common/util/util.gyp:log_interval',
+        '<(AOS)/common/common.gyp:time',
+        '<(AOS)/common/logging/logging.gyp:queue_logging',
+        '<(AOS)/common/messages/messages.gyp:robot_state',
+        '<(AOS)/common/util/util.gyp:phased_loop',
+        '<(AOS)/common/messages/messages.gyp:robot_state',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:hall_effect',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:joystick_sender',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:loop_output_handler',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:buffered_pcm',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:gyro_sender',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:dma_edge_counting',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:interrupt_edge_counting',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:encoder_and_potentiometer',
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:queues',
+        '<(DEPTH)/frc971/wpilib/wpilib.gyp:logging_queue',
+      ],
+    },
+  ],
+}
diff --git a/frc971/wpilib/wpilib_interface.cc b/y2015/wpilib/wpilib_interface.cc
similarity index 98%
rename from frc971/wpilib/wpilib_interface.cc
rename to y2015/wpilib/wpilib_interface.cc
index 25da16a..ff836a1 100644
--- a/frc971/wpilib/wpilib_interface.cc
+++ b/y2015/wpilib/wpilib_interface.cc
@@ -17,11 +17,11 @@
 #include "aos/linux_code/init.h"
 #include "aos/common/messages/robot_state.q.h"
 
-#include "frc971/constants.h"
+#include "y2015/constants.h"
 #include "frc971/control_loops/control_loops.q.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
-#include "frc971/control_loops/fridge/fridge.q.h"
-#include "frc971/control_loops/claw/claw.q.h"
+#include "y2015/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015/control_loops/fridge/fridge.q.h"
+#include "y2015/control_loops/claw/claw.q.h"
 
 #include "frc971/wpilib/hall_effect.h"
 #include "frc971/wpilib/joystick_sender.h"
diff --git a/y2015/y2015.gyp b/y2015/y2015.gyp
new file mode 100644
index 0000000..7f929d9
--- /dev/null
+++ b/y2015/y2015.gyp
@@ -0,0 +1,53 @@
+{
+  'targets': [
+    {
+      'target_name': 'constants',
+      'type': 'static_library',
+      'sources': [
+        'constants.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/build/aos.gyp:logging',
+        '<(AOS)/common/common.gyp:once',
+        '<(AOS)/common/network/network.gyp:team_number',
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
+        '<(DEPTH)/y2015/control_loops/drivetrain/drivetrain.gyp:polydrivetrain_plants',
+      ],
+      'export_dependent_settings': [
+        '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
+      ],
+    },
+    {
+      'target_name': 'joystick_reader',
+      'type': 'executable',
+      'sources': [
+        'joystick_reader.cc',
+      ],
+      'dependencies': [
+        '<(AOS)/prime/input/input.gyp:joystick_input',
+        '<(AOS)/linux_code/linux_code.gyp:init',
+        '<(AOS)/build/aos.gyp:logging',
+        '<(AOS)/common/common.gyp:time',
+        '<(AOS)/common/util/util.gyp:log_interval',
+        '<(AOS)/common/actions/actions.gyp:action_lib',
+
+        '<(DEPTH)/frc971/queues/queues.gyp:gyro',
+        '<(DEPTH)/y2015/control_loops/claw/claw.gyp:claw_queue',
+        '<(DEPTH)/y2015/control_loops/drivetrain/drivetrain.gyp:drivetrain_queue',
+        '<(DEPTH)/y2015/control_loops/fridge/fridge.gyp:fridge_queue',
+        '<(DEPTH)/y2015/y2015.gyp:constants',
+        '<(DEPTH)/frc971/autonomous/autonomous.gyp:auto_queue',
+        '<(DEPTH)/y2015/actors/actors.gyp:stack_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:stack_and_lift_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:stack_and_hold_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:pickup_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:lift_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:held_to_lift_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:can_pickup_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:score_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:horizontal_can_pickup_action_lib',
+        '<(DEPTH)/y2015/actors/actors.gyp:fridge_profile_lib',
+      ],
+    },
+  ],
+}