Moved bot3 to y2015_bot3

Change-Id: Idebb248ddc3ff658f2404f367dfa4a6dc421e0c1
diff --git a/bot3/BUILD b/bot3/BUILD
deleted file mode 100644
index d0f7782..0000000
--- a/bot3/BUILD
+++ /dev/null
@@ -1,22 +0,0 @@
-package(default_visibility = ['//visibility:public'])
-
-cc_binary(
-  name = 'joystick_reader_bot3',
-  srcs = [
-    'joystick_reader.cc',
-  ],
-  deps = [
-    '//aos/prime/input:joystick_input',
-    '//aos/linux_code:init',
-    '//aos/common/logging',
-    '//aos/common:time',
-    '//aos/common/util:log_interval',
-    '//aos/common/actions:action_lib',
-    '//frc971/queues:gyro',
-    '//bot3/control_loops/elevator:elevator_lib',
-    '//bot3/control_loops/drivetrain:drivetrain_queue',
-    '//bot3/control_loops/elevator:elevator_queue',
-    '//bot3/control_loops/intake:intake_queue',
-    '//bot3/autonomous:auto_queue',
-  ],
-)
diff --git a/bot3/autonomous/auto.h b/bot3/autonomous/auto.h
deleted file mode 100644
index 896d22c..0000000
--- a/bot3/autonomous/auto.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef BOT3_AUTONOMOUS_AUTO_H_
-#define BOT3_AUTONOMOUS_AUTO_H_
-
-namespace bot3 {
-namespace autonomous {
-
-void HandleAuto();
-
-}  // namespace autonomous
-}  // namespace bot3
-
-#endif  // BOT3_AUTONOMOUS_AUTO_H_
diff --git a/bot3/autonomous/auto_main.cc b/bot3/autonomous/auto_main.cc
deleted file mode 100644
index f9b978c..0000000
--- a/bot3/autonomous/auto_main.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-#include <stdio.h>
-
-#include "aos/common/time.h"
-#include "aos/linux_code/init.h"
-#include "aos/common/logging/logging.h"
-#include "bot3/autonomous/auto.q.h"
-#include "bot3/autonomous/auto.h"
-
-using ::aos::time::Time;
-
-int main(int /*argc*/, char * /*argv*/[]) {
-  ::aos::Init();
-
-  LOG(INFO, "Auto main started\n");
-  ::bot3::autonomous::autonomous.FetchLatest();
-  while (!::bot3::autonomous::autonomous.get()) {
-    ::bot3::autonomous::autonomous.FetchNextBlocking();
-    LOG(INFO, "Got another auto packet\n");
-  }
-
-  while (true) {
-    while (!::bot3::autonomous::autonomous->run_auto) {
-      ::bot3::autonomous::autonomous.FetchNextBlocking();
-      LOG(INFO, "Got another auto packet\n");
-    }
-    LOG(INFO, "Starting auto mode\n");
-    ::aos::time::Time start_time = ::aos::time::Time::Now();
-    ::bot3::autonomous::HandleAuto();
-
-    ::aos::time::Time elapsed_time = ::aos::time::Time::Now() - start_time;
-    LOG(INFO, "Auto mode exited in %f, waiting for it to finish.\n",
-        elapsed_time.ToSeconds());
-    while (::bot3::autonomous::autonomous->run_auto) {
-      ::bot3::autonomous::autonomous.FetchNextBlocking();
-      LOG(INFO, "Got another auto packet\n");
-    }
-    LOG(INFO, "Waiting for auto to start back up.\n");
-  }
-  ::aos::Cleanup();
-  return 0;
-}
-
diff --git a/bot3/control_loops/drivetrain/drivetrain_main.cc b/bot3/control_loops/drivetrain/drivetrain_main.cc
deleted file mode 100644
index f06acc0..0000000
--- a/bot3/control_loops/drivetrain/drivetrain_main.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "bot3/control_loops/drivetrain/drivetrain.h"
-
-#include "aos/linux_code/init.h"
-
-int main() {
-  ::aos::Init();
-  bot3::control_loops::DrivetrainLoop drivetrain;
-  drivetrain.Run();
-  ::aos::Cleanup();
-  return 0;
-}
diff --git a/bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h b/bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h
deleted file mode 100644
index dcbd577..0000000
--- a/bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
-#define BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace bot3 {
-namespace control_loops {
-
-StateFeedbackPlantCoefficients<1, 1, 1> MakeCIMPlantCoefficients();
-
-StateFeedbackController<1, 1, 1> MakeCIMController();
-
-StateFeedbackPlant<1, 1, 1> MakeCIMPlant();
-
-StateFeedbackLoop<1, 1, 1> MakeCIMLoop();
-
-}  // namespace control_loops
-}  // namespace bot3
-
-#endif  // BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
diff --git a/bot3/control_loops/elevator/elevator_main.cc b/bot3/control_loops/elevator/elevator_main.cc
deleted file mode 100644
index f7a5eef..0000000
--- a/bot3/control_loops/elevator/elevator_main.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "bot3/control_loops/elevator/elevator.h"
-
-#include "aos/linux_code/init.h"
-
-int main() {
-  ::aos::Init();
-  ::bot3::control_loops::Elevator elevator;
-  elevator.Run();
-  ::aos::Cleanup();
-  return 0;
-}
diff --git a/bot3/control_loops/elevator/elevator_motor_plant.h b/bot3/control_loops/elevator/elevator_motor_plant.h
deleted file mode 100644
index d87c79e..0000000
--- a/bot3/control_loops/elevator/elevator_motor_plant.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef BOT3_CONTROL_LOOPS_ELEVATOR_ELEVATOR_MOTOR_PLANT_H_
-#define BOT3_CONTROL_LOOPS_ELEVATOR_ELEVATOR_MOTOR_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace bot3 {
-namespace control_loops {
-
-StateFeedbackPlantCoefficients<2, 1, 1> MakeElevatorPlantCoefficients();
-
-StateFeedbackController<2, 1, 1> MakeElevatorController();
-
-StateFeedbackPlant<2, 1, 1> MakeElevatorPlant();
-
-StateFeedbackLoop<2, 1, 1> MakeElevatorLoop();
-
-}  // namespace control_loops
-}  // namespace bot3
-
-#endif  // BOT3_CONTROL_LOOPS_ELEVATOR_ELEVATOR_MOTOR_PLANT_H_
diff --git a/bot3/control_loops/elevator/integral_elevator_motor_plant.h b/bot3/control_loops/elevator/integral_elevator_motor_plant.h
deleted file mode 100644
index 64a4539..0000000
--- a/bot3/control_loops/elevator/integral_elevator_motor_plant.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef BOT3_CONTROL_LOOPS_ELEVATOR_INTEGRAL_ELEVATOR_MOTOR_PLANT_H_
-#define BOT3_CONTROL_LOOPS_ELEVATOR_INTEGRAL_ELEVATOR_MOTOR_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace bot3 {
-namespace control_loops {
-
-StateFeedbackPlantCoefficients<3, 1, 1> MakeIntegralElevatorPlantCoefficients();
-
-StateFeedbackController<3, 1, 1> MakeIntegralElevatorController();
-
-StateFeedbackPlant<3, 1, 1> MakeIntegralElevatorPlant();
-
-StateFeedbackLoop<3, 1, 1> MakeIntegralElevatorLoop();
-
-}  // namespace control_loops
-}  // namespace bot3
-
-#endif  // BOT3_CONTROL_LOOPS_ELEVATOR_INTEGRAL_ELEVATOR_MOTOR_PLANT_H_
diff --git a/bot3/control_loops/intake/intake_main.cc b/bot3/control_loops/intake/intake_main.cc
deleted file mode 100644
index ccc5fab..0000000
--- a/bot3/control_loops/intake/intake_main.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "bot3/control_loops/intake/intake.h"
-
-#include "aos/linux_code/init.h"
-
-int main() {
-  ::aos::Init();
-  ::bot3::control_loops::Intake intake;
-  intake.Run();
-  ::aos::Cleanup();
-  return 0;
-}
diff --git a/bot3/prime/BUILD b/bot3/prime/BUILD
deleted file mode 100644
index d30e1c1..0000000
--- a/bot3/prime/BUILD
+++ /dev/null
@@ -1,20 +0,0 @@
-package(default_visibility = ['//visibility:public'])
-
-load('/aos/prime/downloader/downloader', 'aos_downloader')
-
-aos_downloader(
-  name = 'download',
-  start_srcs = [
-    '//aos:prime_start_binaries',
-    '//bot3/control_loops/drivetrain:drivetrain_bot3',
-    '//bot3/control_loops/intake:intake',
-    '//bot3:joystick_reader_bot3',
-    '//bot3/control_loops/elevator:elevator',
-    '//bot3/autonomous:auto_bot3',
-    '//bot3/actors:binaries',
-    '//bot3/wpilib:wpilib_interface',
-  ],
-  srcs = [
-    '//aos:prime_binaries',
-  ],
-)
diff --git a/y2015_bot3/BUILD b/y2015_bot3/BUILD
new file mode 100644
index 0000000..3eebb80
--- /dev/null
+++ b/y2015_bot3/BUILD
@@ -0,0 +1,22 @@
+package(default_visibility = ['//visibility:public'])
+
+cc_binary(
+  name = 'joystick_reader',
+  srcs = [
+    'joystick_reader.cc',
+  ],
+  deps = [
+    '//aos/prime/input:joystick_input',
+    '//aos/linux_code:init',
+    '//aos/common/logging',
+    '//aos/common:time',
+    '//aos/common/util:log_interval',
+    '//aos/common/actions:action_lib',
+    '//frc971/queues:gyro',
+    '//y2015_bot3/control_loops/elevator:elevator_lib',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_queue',
+    '//y2015_bot3/control_loops/elevator:elevator_queue',
+    '//y2015_bot3/control_loops/intake:intake_queue',
+    '//y2015_bot3/autonomous:auto_queue',
+  ],
+)
diff --git a/bot3/actors/BUILD b/y2015_bot3/actors/BUILD
similarity index 84%
rename from bot3/actors/BUILD
rename to y2015_bot3/actors/BUILD
index 11b3b08..f2e3841 100644
--- a/bot3/actors/BUILD
+++ b/y2015_bot3/actors/BUILD
@@ -5,7 +5,7 @@
 filegroup(
   name = 'binaries',
   srcs = [
-    ':drivetrain_action_bot3',
+    ':drivetrain_action',
   ],
 )
 
@@ -37,13 +37,13 @@
     '//aos/common/logging:queue_logging',
     '//third_party/eigen',
     '//aos/common/util:trapezoid_profile',
-    '//bot3/control_loops/drivetrain:drivetrain_queue',
-    '//bot3/control_loops/drivetrain:drivetrain_lib',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_queue',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_lib',
   ],
 )
 
 cc_binary(
-  name = 'drivetrain_action_bot3',
+  name = 'drivetrain_action',
   srcs = [
     'drivetrain_actor_main.cc',
   ],
diff --git a/bot3/actors/actors.gyp b/y2015_bot3/actors/actors.gyp
similarity index 100%
rename from bot3/actors/actors.gyp
rename to y2015_bot3/actors/actors.gyp
diff --git a/bot3/actors/drivetrain_action.q b/y2015_bot3/actors/drivetrain_action.q
similarity index 100%
rename from bot3/actors/drivetrain_action.q
rename to y2015_bot3/actors/drivetrain_action.q
diff --git a/bot3/actors/drivetrain_actor.cc b/y2015_bot3/actors/drivetrain_actor.cc
similarity index 92%
rename from bot3/actors/drivetrain_actor.cc
rename to y2015_bot3/actors/drivetrain_actor.cc
index 8421f43..0f9eedd 100644
--- a/bot3/actors/drivetrain_actor.cc
+++ b/y2015_bot3/actors/drivetrain_actor.cc
@@ -1,4 +1,4 @@
-#include "bot3/actors/drivetrain_actor.h"
+#include "y2015_bot3/actors/drivetrain_actor.h"
 
 #include <functional>
 #include <numeric>
@@ -11,22 +11,22 @@
 #include "aos/common/commonmath.h"
 #include "aos/common/time.h"
 
-#include "bot3/actors/drivetrain_actor.h"
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
-#include "bot3/control_loops/drivetrain/drivetrain.h"
-#include "bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015_bot3/actors/drivetrain_actor.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 
 namespace frc971 {
 namespace actors {
 
-using ::bot3::control_loops::drivetrain_queue;
-using ::bot3::control_loops::kDrivetrainTurnWidth;
+using ::y2015_bot3::control_loops::drivetrain_queue;
+using ::y2015_bot3::control_loops::kDrivetrainTurnWidth;
 
 DrivetrainActor::DrivetrainActor(actors::DrivetrainActionQueueGroup* s)
     : aos::common::actions::ActorBase<actors::DrivetrainActionQueueGroup>(s) {}
 
 bool DrivetrainActor::RunAction(const actors::DrivetrainActionParams &params) {
-  static const auto K = ::bot3::control_loops::MakeDrivetrainLoop().K();
+  static const auto K = ::y2015_bot3::control_loops::MakeDrivetrainLoop().K();
 
   const double yoffset = params.y_offset;
   const double turn_offset =
diff --git a/bot3/actors/drivetrain_actor.h b/y2015_bot3/actors/drivetrain_actor.h
similarity index 77%
rename from bot3/actors/drivetrain_actor.h
rename to y2015_bot3/actors/drivetrain_actor.h
index 0002d7d..0b2b579 100644
--- a/bot3/actors/drivetrain_actor.h
+++ b/y2015_bot3/actors/drivetrain_actor.h
@@ -1,9 +1,9 @@
-#ifndef Y2015_ACTIONS_DRIVETRAIN_ACTION_H_
-#define Y2015_ACTIONS_DRIVETRAIN_ACTION_H_
+#ifndef Y2015_BOT3_ACTIONS_DRIVETRAIN_ACTION_H_
+#define Y2015_BOT3_ACTIONS_DRIVETRAIN_ACTION_H_
 
 #include <memory>
 
-#include "bot3/actors/drivetrain_action.q.h"
+#include "y2015_bot3/actors/drivetrain_action.q.h"
 #include "aos/common/actions/actor.h"
 #include "aos/common/actions/actions.h"
 
@@ -28,4 +28,4 @@
 }  // namespace actors
 }  // namespace frc971
 
-#endif
+#endif  // Y2015_BOT3_ACTIONS_DRIVETRAIN_ACTION_H_
diff --git a/bot3/actors/drivetrain_actor_main.cc b/y2015_bot3/actors/drivetrain_actor_main.cc
similarity index 74%
rename from bot3/actors/drivetrain_actor_main.cc
rename to y2015_bot3/actors/drivetrain_actor_main.cc
index 73a3ee5..68b860b 100644
--- a/bot3/actors/drivetrain_actor_main.cc
+++ b/y2015_bot3/actors/drivetrain_actor_main.cc
@@ -1,8 +1,8 @@
 #include <stdio.h>
 
 #include "aos/linux_code/init.h"
-#include "bot3/actors/drivetrain_action.q.h"
-#include "bot3/actors/drivetrain_actor.h"
+#include "y2015_bot3/actors/drivetrain_action.q.h"
+#include "y2015_bot3/actors/drivetrain_actor.h"
 
 using ::aos::time::Time;
 
diff --git a/bot3/autonomous/BUILD b/y2015_bot3/autonomous/BUILD
similarity index 68%
rename from bot3/autonomous/BUILD
rename to y2015_bot3/autonomous/BUILD
index 48b725e..042dbf3 100644
--- a/bot3/autonomous/BUILD
+++ b/y2015_bot3/autonomous/BUILD
@@ -20,11 +20,11 @@
   deps = [
     ':auto_queue',
     '//aos/common/controls:control_loop',
-    '//bot3/control_loops/drivetrain:drivetrain_queue',
-    '//bot3/control_loops/drivetrain:drivetrain_lib',
-    '//bot3/actors:drivetrain_action_lib',
-    '//bot3/control_loops/elevator:elevator_queue',
-    '//bot3/control_loops/intake:intake_queue',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_queue',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_lib',
+    '//y2015_bot3/actors:drivetrain_action_lib',
+    '//y2015_bot3/control_loops/elevator:elevator_queue',
+    '//y2015_bot3/control_loops/intake:intake_queue',
     '//aos/common:time',
     '//aos/common/util:phased_loop',
     '//aos/common/util:trapezoid_profile',
@@ -34,7 +34,7 @@
 )
 
 cc_binary(
-  name = 'auto_bot3',
+  name = 'auto',
   srcs = [
     'auto_main.cc',
   ],
diff --git a/bot3/autonomous/auto.cc b/y2015_bot3/autonomous/auto.cc
similarity index 94%
rename from bot3/autonomous/auto.cc
rename to y2015_bot3/autonomous/auto.cc
index e76d8aa..9dd2892 100644
--- a/bot3/autonomous/auto.cc
+++ b/y2015_bot3/autonomous/auto.cc
@@ -8,20 +8,20 @@
 #include "aos/common/logging/logging.h"
 #include "aos/common/logging/queue_logging.h"
 
-#include "bot3/autonomous/auto.q.h"
-#include "bot3/actors/drivetrain_actor.h"
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
-#include "bot3/control_loops/drivetrain/drivetrain.h"
-#include "bot3/control_loops/elevator/elevator.q.h"
-#include "bot3/control_loops/intake/intake.q.h"
+#include "y2015_bot3/autonomous/auto.q.h"
+#include "y2015_bot3/actors/drivetrain_actor.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.h"
+#include "y2015_bot3/control_loops/elevator/elevator.q.h"
+#include "y2015_bot3/control_loops/intake/intake.q.h"
 
 using ::aos::time::Time;
-using ::bot3::control_loops::drivetrain_queue;
-using ::bot3::control_loops::intake_queue;
-using ::bot3::control_loops::elevator_queue;
-using ::bot3::control_loops::kDrivetrainTurnWidth;
+using ::y2015_bot3::control_loops::drivetrain_queue;
+using ::y2015_bot3::control_loops::intake_queue;
+using ::y2015_bot3::control_loops::elevator_queue;
+using ::y2015_bot3::control_loops::kDrivetrainTurnWidth;
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace autonomous {
 
 struct ProfileParams {
@@ -43,8 +43,8 @@
 static double left_initial_position, right_initial_position;
 
 bool ShouldExitAuto() {
-  ::bot3::autonomous::autonomous.FetchLatest();
-  bool ans = !::bot3::autonomous::autonomous->run_auto;
+  ::y2015_bot3::autonomous::autonomous.FetchLatest();
+  bool ans = !::y2015_bot3::autonomous::autonomous->run_auto;
   if (ans) {
     LOG(INFO, "Time to exit auto mode\n");
   }
@@ -453,4 +453,4 @@
 }
 
 }  // namespace autonomous
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/autonomous/auto.h b/y2015_bot3/autonomous/auto.h
new file mode 100644
index 0000000..bbc5d32
--- /dev/null
+++ b/y2015_bot3/autonomous/auto.h
@@ -0,0 +1,12 @@
+#ifndef Y2015_BOT3_AUTONOMOUS_AUTO_H_
+#define Y2015_BOT3_AUTONOMOUS_AUTO_H_
+
+namespace y2015_bot3 {
+namespace autonomous {
+
+void HandleAuto();
+
+}  // namespace autonomous
+}  // namespace y2015_bot3
+
+#endif  // Y2015_BOT3_AUTONOMOUS_AUTO_H_
diff --git a/bot3/autonomous/auto.q b/y2015_bot3/autonomous/auto.q
similarity index 91%
rename from bot3/autonomous/auto.q
rename to y2015_bot3/autonomous/auto.q
index 7f2a612..2fbf41b 100644
--- a/bot3/autonomous/auto.q
+++ b/y2015_bot3/autonomous/auto.q
@@ -1,4 +1,4 @@
-package bot3.autonomous;
+package y2015_bot3.autonomous;
 
 message AutoControl {
   // True if auto mode should be running, false otherwise.
diff --git a/y2015_bot3/autonomous/auto_main.cc b/y2015_bot3/autonomous/auto_main.cc
new file mode 100644
index 0000000..1556561
--- /dev/null
+++ b/y2015_bot3/autonomous/auto_main.cc
@@ -0,0 +1,42 @@
+#include <stdio.h>
+
+#include "aos/common/time.h"
+#include "aos/linux_code/init.h"
+#include "aos/common/logging/logging.h"
+#include "y2015_bot3/autonomous/auto.q.h"
+#include "y2015_bot3/autonomous/auto.h"
+
+using ::aos::time::Time;
+
+int main(int /*argc*/, char * /*argv*/[]) {
+  ::aos::Init();
+
+  LOG(INFO, "Auto main started\n");
+  ::y2015_bot3::autonomous::autonomous.FetchLatest();
+  while (!::y2015_bot3::autonomous::autonomous.get()) {
+    ::y2015_bot3::autonomous::autonomous.FetchNextBlocking();
+    LOG(INFO, "Got another auto packet\n");
+  }
+
+  while (true) {
+    while (!::y2015_bot3::autonomous::autonomous->run_auto) {
+      ::y2015_bot3::autonomous::autonomous.FetchNextBlocking();
+      LOG(INFO, "Got another auto packet\n");
+    }
+    LOG(INFO, "Starting auto mode\n");
+    ::aos::time::Time start_time = ::aos::time::Time::Now();
+    ::y2015_bot3::autonomous::HandleAuto();
+
+    ::aos::time::Time elapsed_time = ::aos::time::Time::Now() - start_time;
+    LOG(INFO, "Auto mode exited in %f, waiting for it to finish.\n",
+        elapsed_time.ToSeconds());
+    while (::y2015_bot3::autonomous::autonomous->run_auto) {
+      ::y2015_bot3::autonomous::autonomous.FetchNextBlocking();
+      LOG(INFO, "Got another auto packet\n");
+    }
+    LOG(INFO, "Waiting for auto to start back up.\n");
+  }
+  ::aos::Cleanup();
+  return 0;
+}
+
diff --git a/bot3/autonomous/autonomous.gyp b/y2015_bot3/autonomous/autonomous.gyp
similarity index 100%
rename from bot3/autonomous/autonomous.gyp
rename to y2015_bot3/autonomous/autonomous.gyp
diff --git a/bot3/bot3.gyp b/y2015_bot3/bot3.gyp
similarity index 100%
rename from bot3/bot3.gyp
rename to y2015_bot3/bot3.gyp
diff --git a/bot3/control_loops/BUILD b/y2015_bot3/control_loops/BUILD
similarity index 78%
rename from bot3/control_loops/BUILD
rename to y2015_bot3/control_loops/BUILD
index 1dc5c67..02315af 100644
--- a/bot3/control_loops/BUILD
+++ b/y2015_bot3/control_loops/BUILD
@@ -9,6 +9,6 @@
     'position_sensor_sim.h',
   ],
   deps = [
-    '//bot3/control_loops/elevator:elevator_queue',
+    '//y2015_bot3/control_loops/elevator:elevator_queue',
   ],
 )
diff --git a/bot3/control_loops/control_loops.gyp b/y2015_bot3/control_loops/control_loops.gyp
similarity index 100%
rename from bot3/control_loops/control_loops.gyp
rename to y2015_bot3/control_loops/control_loops.gyp
diff --git a/bot3/control_loops/drivetrain/BUILD b/y2015_bot3/control_loops/drivetrain/BUILD
similarity index 94%
rename from bot3/control_loops/drivetrain/BUILD
rename to y2015_bot3/control_loops/drivetrain/BUILD
index 8b6ad75..ad1ec39 100644
--- a/bot3/control_loops/drivetrain/BUILD
+++ b/y2015_bot3/control_loops/drivetrain/BUILD
@@ -3,7 +3,7 @@
 load('/aos/build/queues', 'queue_library')
 
 cc_binary(
-  name = 'replay_drivetrain_bot3',
+  name = 'replay_drivetrain',
   srcs = [
     'replay_drivetrain.cc',
   ],
@@ -69,7 +69,7 @@
 )
 
 cc_binary(
-  name = 'drivetrain_lib_test_bot3',
+  name = 'drivetrain_lib_test',
   srcs = [
     'drivetrain_lib_test.cc',
   ],
@@ -86,7 +86,7 @@
 )
 
 cc_binary(
-  name = 'drivetrain_bot3',
+  name = 'drivetrain',
   srcs = [
     'drivetrain_main.cc',
   ],
diff --git a/bot3/control_loops/drivetrain/drivetrain.cc b/y2015_bot3/control_loops/drivetrain/drivetrain.cc
similarity index 97%
rename from bot3/control_loops/drivetrain/drivetrain.cc
rename to y2015_bot3/control_loops/drivetrain/drivetrain.cc
index 31fd7e3..b126ad2 100644
--- a/bot3/control_loops/drivetrain/drivetrain.cc
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain.cc
@@ -1,4 +1,4 @@
-#include "bot3/control_loops/drivetrain/drivetrain.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.h"
 
 #include <stdio.h>
 #include <sched.h>
@@ -14,19 +14,19 @@
 
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "frc971/control_loops/coerce_goal.h"
-#include "bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h"
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/queues/gyro.q.h"
 #include "frc971/shifter_hall_effect.h"
-#include "bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
-#include "bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
 
 // A consistent way to mark code that goes away without shifters.
 #define HAVE_SHIFTERS 0
 
 using ::frc971::sensors::gyro_reading;
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 class DrivetrainMotorsSS {
@@ -143,7 +143,7 @@
 
   DrivetrainMotorsSS()
       : loop_(new LimitedDrivetrainLoop(
-            ::bot3::control_loops::MakeDrivetrainLoop())),
+            ::y2015_bot3::control_loops::MakeDrivetrainLoop())),
         filtered_offset_(0.0),
         gyro_(0.0),
         left_goal_(0.0),
@@ -264,7 +264,7 @@
                  /*[*/ 12 /*]*/,
                  /*[*/ 12 /*]]*/).finished()),
         loop_(new StateFeedbackLoop<2, 2, 2>(
-            ::bot3::control_loops::MakeVelocityDrivetrainLoop())),
+            ::y2015_bot3::control_loops::MakeVelocityDrivetrainLoop())),
         ttrust_(1.1),
         wheel_(0.0),
         throttle_(0.0),
@@ -761,4 +761,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/bot3/control_loops/drivetrain/drivetrain.gyp b/y2015_bot3/control_loops/drivetrain/drivetrain.gyp
similarity index 100%
rename from bot3/control_loops/drivetrain/drivetrain.gyp
rename to y2015_bot3/control_loops/drivetrain/drivetrain.gyp
diff --git a/bot3/control_loops/drivetrain/drivetrain.h b/y2015_bot3/control_loops/drivetrain/drivetrain.h
similarity index 85%
rename from bot3/control_loops/drivetrain/drivetrain.h
rename to y2015_bot3/control_loops/drivetrain/drivetrain.h
index 586962f..b89c1dd 100644
--- a/bot3/control_loops/drivetrain/drivetrain.h
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain.h
@@ -1,5 +1,5 @@
-#ifndef BOT3_CONTROL_LOOPS_DRIVETRAIN_H_
-#define BOT3_CONTROL_LOOPS_DRIVETRAIN_H_
+#ifndef Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_H_
+#define Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_H_
 
 #include "Eigen/Dense"
 
@@ -9,9 +9,9 @@
 #include "aos/common/util/log_interval.h"
 
 #include "frc971/shifter_hall_effect.h"
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 // Constants
@@ -33,7 +33,7 @@
     : public aos::controls::ControlLoop<control_loops::DrivetrainQueue> {
  public:
   // Constructs a control loop which can take a Drivetrain or defaults to the
-  // drivetrain at bot3::control_loops::drivetrain
+  // drivetrain at y2015_bot3::control_loops::drivetrain
   explicit DrivetrainLoop(control_loops::DrivetrainQueue *my_drivetrain =
                               &control_loops::drivetrain_queue)
       : aos::controls::ControlLoop<control_loops::DrivetrainQueue>(
@@ -55,6 +55,6 @@
 };
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-#endif  // BOT3_CONTROL_LOOPS_DRIVETRAIN_H_
+#endif  // Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_H_
diff --git a/bot3/control_loops/drivetrain/drivetrain.q b/y2015_bot3/control_loops/drivetrain/drivetrain.q
similarity index 97%
rename from bot3/control_loops/drivetrain/drivetrain.q
rename to y2015_bot3/control_loops/drivetrain/drivetrain.q
index f6eb030..5bbbb25 100644
--- a/bot3/control_loops/drivetrain/drivetrain.q
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain.q
@@ -1,4 +1,4 @@
-package bot3.control_loops;
+package y2015_bot3.control_loops;
 
 import "aos/common/controls/control_loops.q";
 
diff --git a/bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.cc b/y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
similarity index 98%
rename from bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
rename to y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
index 85cb721..25e728a 100644
--- a/bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.cc
@@ -1,10 +1,10 @@
-#include "bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 
 #include <vector>
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<4, 2, 2> MakeDrivetrainLowLowPlantCoefficients() {
@@ -130,4 +130,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h b/y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h
similarity index 74%
rename from bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h
rename to y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h
index f5d5896..041e06e 100644
--- a/bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h
@@ -1,9 +1,9 @@
-#ifndef BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
-#define BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
+#ifndef Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
+#define Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<4, 2, 2> MakeDrivetrainLowLowPlantCoefficients();
@@ -27,6 +27,6 @@
 StateFeedbackLoop<4, 2, 2> MakeDrivetrainLoop();
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-#endif  // BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
+#endif  // Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_DRIVETRAIN_DOG_MOTOR_PLANT_H_
diff --git a/bot3/control_loops/drivetrain/drivetrain_lib_test.cc b/y2015_bot3/control_loops/drivetrain/drivetrain_lib_test.cc
similarity index 87%
rename from bot3/control_loops/drivetrain/drivetrain_lib_test.cc
rename to y2015_bot3/control_loops/drivetrain/drivetrain_lib_test.cc
index b9e828e..8848535 100644
--- a/bot3/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -8,14 +8,14 @@
 #include "aos/common/controls/polytope.h"
 #include "aos/common/controls/control_loop_test.h"
 
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
-#include "bot3/control_loops/drivetrain/drivetrain.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.h"
 #include "frc971/control_loops/state_feedback_loop.h"
 #include "frc971/control_loops/coerce_goal.h"
-#include "bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain_dog_motor_plant.h"
 #include "frc971/queues/gyro.q.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 namespace testing {
 
@@ -48,11 +48,11 @@
   DrivetrainSimulation()
       : drivetrain_plant_(
             new StateFeedbackPlant<4, 2, 2>(MakeDrivetrainPlant())),
-        my_drivetrain_queue_(".bot3.control_loops.drivetrain",
-                       0x8a8dde77, ".bot3.control_loops.drivetrain.goal",
-                       ".bot3.control_loops.drivetrain.position",
-                       ".bot3.control_loops.drivetrain.output",
-                       ".bot3.control_loops.drivetrain.status") {
+        my_drivetrain_queue_(".y2015_bot3.control_loops.drivetrain", 0x8a8dde77,
+                             ".y2015_bot3.control_loops.drivetrain.goal",
+                             ".y2015_bot3.control_loops.drivetrain.position",
+                             ".y2015_bot3.control_loops.drivetrain.output",
+                             ".y2015_bot3.control_loops.drivetrain.status") {
     Reinitialize();
   }
 
@@ -110,14 +110,14 @@
   DrivetrainLoop drivetrain_motor_;
   DrivetrainSimulation drivetrain_motor_plant_;
 
-  DrivetrainTest() : my_drivetrain_queue_(".bot3.control_loops.drivetrain",
-                               0x8a8dde77,
-                               ".bot3.control_loops.drivetrain.goal",
-                               ".bot3.control_loops.drivetrain.position",
-                               ".bot3.control_loops.drivetrain.output",
-                               ".bot3.control_loops.drivetrain.status"),
-                drivetrain_motor_(&my_drivetrain_queue_),
-                drivetrain_motor_plant_() {
+  DrivetrainTest()
+      : my_drivetrain_queue_(".y2015_bot3.control_loops.drivetrain", 0x8a8dde77,
+                             ".y2015_bot3.control_loops.drivetrain.goal",
+                             ".y2015_bot3.control_loops.drivetrain.position",
+                             ".y2015_bot3.control_loops.drivetrain.output",
+                             ".y2015_bot3.control_loops.drivetrain.status"),
+        drivetrain_motor_(&my_drivetrain_queue_),
+        drivetrain_motor_plant_() {
     ::frc971::sensors::gyro_reading.Clear();
   }
 
@@ -293,4 +293,4 @@
 
 }  // namespace testing
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/control_loops/drivetrain/drivetrain_main.cc b/y2015_bot3/control_loops/drivetrain/drivetrain_main.cc
new file mode 100644
index 0000000..eef49a8
--- /dev/null
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_main.cc
@@ -0,0 +1,11 @@
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.h"
+
+#include "aos/linux_code/init.h"
+
+int main() {
+  ::aos::Init();
+  ::y2015_bot3::control_loops::DrivetrainLoop drivetrain;
+  drivetrain.Run();
+  ::aos::Cleanup();
+  return 0;
+}
diff --git a/bot3/control_loops/drivetrain/polydrivetrain_cim_plant.cc b/y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.cc
similarity index 92%
rename from bot3/control_loops/drivetrain/polydrivetrain_cim_plant.cc
rename to y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.cc
index 86eb915..b1ce57f 100644
--- a/bot3/control_loops/drivetrain/polydrivetrain_cim_plant.cc
+++ b/y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.cc
@@ -1,10 +1,10 @@
-#include "bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h"
 
 #include <vector>
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<1, 1, 1> MakeCIMPlantCoefficients() {
@@ -46,4 +46,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h b/y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h
new file mode 100644
index 0000000..ebddeff
--- /dev/null
+++ b/y2015_bot3/control_loops/drivetrain/polydrivetrain_cim_plant.h
@@ -0,0 +1,20 @@
+#ifndef Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
+#define Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
+
+#include "frc971/control_loops/state_feedback_loop.h"
+
+namespace y2015_bot3 {
+namespace control_loops {
+
+StateFeedbackPlantCoefficients<1, 1, 1> MakeCIMPlantCoefficients();
+
+StateFeedbackController<1, 1, 1> MakeCIMController();
+
+StateFeedbackPlant<1, 1, 1> MakeCIMPlant();
+
+StateFeedbackLoop<1, 1, 1> MakeCIMLoop();
+
+}  // namespace control_loops
+}  // namespace y2015_bot3
+
+#endif  // Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_CIM_PLANT_H_
diff --git a/bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc b/y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
similarity index 97%
rename from bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
rename to y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
index 75bb2a1..da0e9b4 100644
--- a/bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
+++ b/y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.cc
@@ -1,10 +1,10 @@
-#include "bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
+#include "y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h"
 
 #include <vector>
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<2, 2, 2> MakeVelocityDrivetrainLowLowPlantCoefficients() {
@@ -130,4 +130,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h b/y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
similarity index 75%
rename from bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
rename to y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
index 191d1aa..a6afeaf 100644
--- a/bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
+++ b/y2015_bot3/control_loops/drivetrain/polydrivetrain_dog_motor_plant.h
@@ -1,9 +1,9 @@
-#ifndef BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
-#define BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
+#ifndef Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
+#define Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<2, 2, 2> MakeVelocityDrivetrainLowLowPlantCoefficients();
@@ -27,6 +27,6 @@
 StateFeedbackLoop<2, 2, 2> MakeVelocityDrivetrainLoop();
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-#endif  // BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
+#endif  // Y2015_BOT3_CONTROL_LOOPS_DRIVETRAIN_POLYDRIVETRAIN_DOG_MOTOR_PLANT_H_
diff --git a/bot3/control_loops/drivetrain/replay_drivetrain.cc b/y2015_bot3/control_loops/drivetrain/replay_drivetrain.cc
similarity index 68%
rename from bot3/control_loops/drivetrain/replay_drivetrain.cc
rename to y2015_bot3/control_loops/drivetrain/replay_drivetrain.cc
index f2fb87c..fb14f1f 100644
--- a/bot3/control_loops/drivetrain/replay_drivetrain.cc
+++ b/y2015_bot3/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 "bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/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.
@@ -14,8 +14,9 @@
 
   ::aos::InitNRT();
 
-  ::aos::controls::ControlLoopReplayer<::bot3::control_loops::DrivetrainQueue>
-      replayer(&::bot3::control_loops::drivetrain_queue, "drivetrain");
+  ::aos::controls::ControlLoopReplayer<
+      ::y2015_bot3::control_loops::DrivetrainQueue>
+      replayer(&::y2015_bot3::control_loops::drivetrain_queue, "drivetrain");
   for (int i = 1; i < argc; ++i) {
     replayer.ProcessFile(argv[i]);
   }
diff --git a/bot3/control_loops/elevator/BUILD b/y2015_bot3/control_loops/elevator/BUILD
similarity index 95%
rename from bot3/control_loops/elevator/BUILD
rename to y2015_bot3/control_loops/elevator/BUILD
index c3cb1ac..b249477 100644
--- a/bot3/control_loops/elevator/BUILD
+++ b/y2015_bot3/control_loops/elevator/BUILD
@@ -44,7 +44,7 @@
   deps = [
     '//third_party/googletest',
     ':elevator_lib',
-    '//bot3/control_loops:position_sensor_sim',
+    '//y2015_bot3/control_loops:position_sensor_sim',
     '//frc971/control_loops:state_feedback_loop',
     '//aos/common/controls:control_loop_test',
     '//aos/common:time',
diff --git a/bot3/control_loops/elevator/elevator.cc b/y2015_bot3/control_loops/elevator/elevator.cc
similarity index 97%
rename from bot3/control_loops/elevator/elevator.cc
rename to y2015_bot3/control_loops/elevator/elevator.cc
index 0510708..2fef56f 100644
--- a/bot3/control_loops/elevator/elevator.cc
+++ b/y2015_bot3/control_loops/elevator/elevator.cc
@@ -1,13 +1,13 @@
-#include "bot3/control_loops/elevator/elevator.h"
+#include "y2015_bot3/control_loops/elevator/elevator.h"
 
 #include <cmath>
 
 #include "aos/common/controls/control_loops.q.h"
 #include "aos/common/logging/logging.h"
 
-#include "bot3/control_loops/elevator/integral_elevator_motor_plant.h"
+#include "y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 void SimpleCappedStateFeedbackLoop::CapU() {
@@ -282,4 +282,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/bot3/control_loops/elevator/elevator.gyp b/y2015_bot3/control_loops/elevator/elevator.gyp
similarity index 100%
rename from bot3/control_loops/elevator/elevator.gyp
rename to y2015_bot3/control_loops/elevator/elevator.gyp
diff --git a/bot3/control_loops/elevator/elevator.h b/y2015_bot3/control_loops/elevator/elevator.h
similarity index 95%
rename from bot3/control_loops/elevator/elevator.h
rename to y2015_bot3/control_loops/elevator/elevator.h
index 90aa16f..e6cd483 100644
--- a/bot3/control_loops/elevator/elevator.h
+++ b/y2015_bot3/control_loops/elevator/elevator.h
@@ -1,5 +1,5 @@
-#ifndef BOT3_CONTROL_LOOPS_ELEVATOR_H_
-#define BOT3_CONTROL_LOOPS_ELEVATOR_H_
+#ifndef Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_H_
+#define Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_H_
 
 #include <memory>
 
@@ -7,9 +7,9 @@
 #include "aos/common/util/trapezoid_profile.h"
 
 #include "frc971/control_loops/state_feedback_loop.h"
-#include "bot3/control_loops/elevator/elevator.q.h"
+#include "y2015_bot3/control_loops/elevator/elevator.q.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 namespace testing {
 class ElevatorTest_DisabledGoalTest_Test;
@@ -186,6 +186,6 @@
 };
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-#endif  // BOT3_CONTROL_LOOPS_ELEVATOR_H_
+#endif  // Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_H_
diff --git a/bot3/control_loops/elevator/elevator.q b/y2015_bot3/control_loops/elevator/elevator.q
similarity index 98%
rename from bot3/control_loops/elevator/elevator.q
rename to y2015_bot3/control_loops/elevator/elevator.q
index 9c7e8b0..1492f1f 100644
--- a/bot3/control_loops/elevator/elevator.q
+++ b/y2015_bot3/control_loops/elevator/elevator.q
@@ -1,4 +1,4 @@
-package bot3.control_loops;
+package y2015_bot3.control_loops;
 
 import "aos/common/controls/control_loops.q";
 import "frc971/control_loops/control_loops.q";
diff --git a/bot3/control_loops/elevator/elevator_lib_test.cc b/y2015_bot3/control_loops/elevator/elevator_lib_test.cc
similarity index 93%
rename from bot3/control_loops/elevator/elevator_lib_test.cc
rename to y2015_bot3/control_loops/elevator/elevator_lib_test.cc
index 4b90067..2f6b019 100644
--- a/bot3/control_loops/elevator/elevator_lib_test.cc
+++ b/y2015_bot3/control_loops/elevator/elevator_lib_test.cc
@@ -1,4 +1,4 @@
-#include "bot3/control_loops/elevator/elevator.h"
+#include "y2015_bot3/control_loops/elevator/elevator.h"
 
 #include <math.h>
 #include <unistd.h>
@@ -9,14 +9,14 @@
 #include "aos/common/queue.h"
 #include "aos/common/time.h"
 #include "aos/common/controls/control_loop_test.h"
-#include "bot3/control_loops/position_sensor_sim.h"
-#include "bot3/control_loops/elevator/elevator_motor_plant.h"
-#include "bot3/control_loops/elevator/elevator.q.h"
+#include "y2015_bot3/control_loops/position_sensor_sim.h"
+#include "y2015_bot3/control_loops/elevator/elevator_motor_plant.h"
+#include "y2015_bot3/control_loops/elevator/elevator.q.h"
 
 using ::aos::time::Time;
-using ::bot3::control_loops::PositionSensorSimulator;
+using ::y2015_bot3::control_loops::PositionSensorSimulator;
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 namespace testing {
 
@@ -29,11 +29,11 @@
   ElevatorSimulator()
       : plant_(new StateFeedbackPlant<2, 1, 1>(MakeElevatorPlant())),
         position_sim_(),
-        queue_(".bot3.control_loops.elevator_queue", 0xca8daa3b,
-               ".bot3.control_loops.elevator_queue.goal",
-               ".bot3.control_loops.elevator_queue.position",
-               ".bot3.control_loops.elevator_queue.output",
-               ".bot3.control_loops.elevator_queue.status") {
+        queue_(".y2015_bot3.control_loops.elevator_queue", 0xca8daa3b,
+               ".y2015_bot3.control_loops.elevator_queue.goal",
+               ".y2015_bot3.control_loops.elevator_queue.position",
+               ".y2015_bot3.control_loops.elevator_queue.output",
+               ".y2015_bot3.control_loops.elevator_queue.status") {
     // Initialize the elevator.
     InitializePosition(kElevLowerLimit);
   }
@@ -93,14 +93,13 @@
 class ElevatorTest : public ::aos::testing::ControlLoopTest {
  protected:
   ElevatorTest()
-      : queue_(".bot3.control_loops.elevator_queue", 0xca8daa3b,
-               ".bot3.control_loops.elevator_queue.goal",
-               ".bot3.control_loops.elevator_queue.position",
-               ".bot3.control_loops.elevator_queue.output",
-               ".bot3.control_loops.elevator_queue.status"),
+      : queue_(".y2015_bot3.control_loops.elevator_queue", 0xca8daa3b,
+               ".y2015_bot3.control_loops.elevator_queue.goal",
+               ".y2015_bot3.control_loops.elevator_queue.position",
+               ".y2015_bot3.control_loops.elevator_queue.output",
+               ".y2015_bot3.control_loops.elevator_queue.status"),
         elevator_(&queue_),
-        plant_() {
-  }
+        plant_() {}
 
   // Checks to see if fetching position/status from queues does not return null
   // pointers.
@@ -596,4 +595,4 @@
 
 }  // namespace testing
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/control_loops/elevator/elevator_main.cc b/y2015_bot3/control_loops/elevator/elevator_main.cc
new file mode 100644
index 0000000..a6c95dd
--- /dev/null
+++ b/y2015_bot3/control_loops/elevator/elevator_main.cc
@@ -0,0 +1,11 @@
+#include "y2015_bot3/control_loops/elevator/elevator.h"
+
+#include "aos/linux_code/init.h"
+
+int main() {
+  ::aos::Init();
+  ::y2015_bot3::control_loops::Elevator elevator;
+  elevator.Run();
+  ::aos::Cleanup();
+  return 0;
+}
diff --git a/bot3/control_loops/elevator/elevator_motor_plant.cc b/y2015_bot3/control_loops/elevator/elevator_motor_plant.cc
similarity index 93%
rename from bot3/control_loops/elevator/elevator_motor_plant.cc
rename to y2015_bot3/control_loops/elevator/elevator_motor_plant.cc
index e1e87d9..7fff4ff 100644
--- a/bot3/control_loops/elevator/elevator_motor_plant.cc
+++ b/y2015_bot3/control_loops/elevator/elevator_motor_plant.cc
@@ -1,10 +1,10 @@
-#include "bot3/control_loops/elevator/elevator_motor_plant.h"
+#include "y2015_bot3/control_loops/elevator/elevator_motor_plant.h"
 
 #include <vector>
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<2, 1, 1> MakeElevatorPlantCoefficients() {
@@ -46,4 +46,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/control_loops/elevator/elevator_motor_plant.h b/y2015_bot3/control_loops/elevator/elevator_motor_plant.h
new file mode 100644
index 0000000..7be05e6
--- /dev/null
+++ b/y2015_bot3/control_loops/elevator/elevator_motor_plant.h
@@ -0,0 +1,20 @@
+#ifndef Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_ELEVATOR_MOTOR_PLANT_H_
+#define Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_ELEVATOR_MOTOR_PLANT_H_
+
+#include "frc971/control_loops/state_feedback_loop.h"
+
+namespace y2015_bot3 {
+namespace control_loops {
+
+StateFeedbackPlantCoefficients<2, 1, 1> MakeElevatorPlantCoefficients();
+
+StateFeedbackController<2, 1, 1> MakeElevatorController();
+
+StateFeedbackPlant<2, 1, 1> MakeElevatorPlant();
+
+StateFeedbackLoop<2, 1, 1> MakeElevatorLoop();
+
+}  // namespace control_loops
+}  // namespace y2015_bot3
+
+#endif  // Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_ELEVATOR_MOTOR_PLANT_H_
diff --git a/bot3/control_loops/elevator/integral_elevator_motor_plant.cc b/y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.cc
similarity index 93%
rename from bot3/control_loops/elevator/integral_elevator_motor_plant.cc
rename to y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.cc
index eb8a95c..8573618 100644
--- a/bot3/control_loops/elevator/integral_elevator_motor_plant.cc
+++ b/y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.cc
@@ -1,10 +1,10 @@
-#include "bot3/control_loops/elevator/integral_elevator_motor_plant.h"
+#include "y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.h"
 
 #include <vector>
 
 #include "frc971/control_loops/state_feedback_loop.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 StateFeedbackPlantCoefficients<3, 1, 1> MakeIntegralElevatorPlantCoefficients() {
@@ -46,4 +46,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.h b/y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.h
new file mode 100644
index 0000000..553c0c3
--- /dev/null
+++ b/y2015_bot3/control_loops/elevator/integral_elevator_motor_plant.h
@@ -0,0 +1,20 @@
+#ifndef Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_INTEGRAL_ELEVATOR_MOTOR_PLANT_H_
+#define Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_INTEGRAL_ELEVATOR_MOTOR_PLANT_H_
+
+#include "frc971/control_loops/state_feedback_loop.h"
+
+namespace y2015_bot3 {
+namespace control_loops {
+
+StateFeedbackPlantCoefficients<3, 1, 1> MakeIntegralElevatorPlantCoefficients();
+
+StateFeedbackController<3, 1, 1> MakeIntegralElevatorController();
+
+StateFeedbackPlant<3, 1, 1> MakeIntegralElevatorPlant();
+
+StateFeedbackLoop<3, 1, 1> MakeIntegralElevatorLoop();
+
+}  // namespace control_loops
+}  // namespace y2015_bot3
+
+#endif  // Y2015_BOT3_CONTROL_LOOPS_ELEVATOR_INTEGRAL_ELEVATOR_MOTOR_PLANT_H_
diff --git a/bot3/control_loops/intake/BUILD b/y2015_bot3/control_loops/intake/BUILD
similarity index 100%
rename from bot3/control_loops/intake/BUILD
rename to y2015_bot3/control_loops/intake/BUILD
diff --git a/bot3/control_loops/intake/intake.cc b/y2015_bot3/control_loops/intake/intake.cc
similarity index 81%
rename from bot3/control_loops/intake/intake.cc
rename to y2015_bot3/control_loops/intake/intake.cc
index fb00a83..51bab21 100644
--- a/bot3/control_loops/intake/intake.cc
+++ b/y2015_bot3/control_loops/intake/intake.cc
@@ -1,8 +1,8 @@
-#include "bot3/control_loops/intake/intake.h"
+#include "y2015_bot3/control_loops/intake/intake.h"
 
-#include "bot3/control_loops/intake/intake.q.h"
+#include "y2015_bot3/control_loops/intake/intake.q.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 Intake::Intake(control_loops::IntakeQueue *intake)
@@ -27,4 +27,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/bot3/control_loops/intake/intake.gyp b/y2015_bot3/control_loops/intake/intake.gyp
similarity index 100%
rename from bot3/control_loops/intake/intake.gyp
rename to y2015_bot3/control_loops/intake/intake.gyp
diff --git a/bot3/control_loops/intake/intake.h b/y2015_bot3/control_loops/intake/intake.h
similarity index 72%
rename from bot3/control_loops/intake/intake.h
rename to y2015_bot3/control_loops/intake/intake.h
index 43cd9fc..120b0a3 100644
--- a/bot3/control_loops/intake/intake.h
+++ b/y2015_bot3/control_loops/intake/intake.h
@@ -1,11 +1,11 @@
-#ifndef BOT3_CONTROL_LOOPS_INTAKE_H_
-#define BOT3_CONTROL_LOOPS_INTAKE_H_
+#ifndef Y2015_BOT3_CONTROL_LOOPS_INTAKE_H_
+#define Y2015_BOT3_CONTROL_LOOPS_INTAKE_H_
 
 #include "aos/common/controls/control_loop.h"
 
-#include "bot3/control_loops/intake/intake.q.h"
+#include "y2015_bot3/control_loops/intake/intake.q.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 constexpr double kIntakeVoltageFullPower = 12.0;
@@ -23,6 +23,6 @@
 };
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-#endif  // BOT3_CONTROL_LOOPS_INTAKE_H_
+#endif  // Y2015_BOT3_CONTROL_LOOPS_INTAKE_H_
diff --git a/bot3/control_loops/intake/intake.q b/y2015_bot3/control_loops/intake/intake.q
similarity index 93%
rename from bot3/control_loops/intake/intake.q
rename to y2015_bot3/control_loops/intake/intake.q
index 70934b2..f778231 100644
--- a/bot3/control_loops/intake/intake.q
+++ b/y2015_bot3/control_loops/intake/intake.q
@@ -1,4 +1,4 @@
-package bot3.control_loops;
+package y2015_bot3.control_loops;
 
 import "aos/common/controls/control_loops.q";
 
diff --git a/bot3/control_loops/intake/intake_lib_test.cc b/y2015_bot3/control_loops/intake/intake_lib_test.cc
similarity index 75%
rename from bot3/control_loops/intake/intake_lib_test.cc
rename to y2015_bot3/control_loops/intake/intake_lib_test.cc
index ad18078..6d598fe 100644
--- a/bot3/control_loops/intake/intake_lib_test.cc
+++ b/y2015_bot3/control_loops/intake/intake_lib_test.cc
@@ -1,4 +1,4 @@
-#include "bot3/control_loops/intake/intake.h"
+#include "y2015_bot3/control_loops/intake/intake.h"
 
 #include <math.h>
 #include <unistd.h>
@@ -6,11 +6,11 @@
 #include "gtest/gtest.h"
 #include "aos/common/queue.h"
 #include "aos/common/controls/control_loop_test.h"
-#include "bot3/control_loops/intake/intake.q.h"
+#include "y2015_bot3/control_loops/intake/intake.q.h"
 
 using ::aos::time::Time;
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 namespace testing {
 
@@ -20,12 +20,11 @@
  public:
   // Constructs a simulation.
   IntakeSimulation()
-      : queue_(".bot3.control_loops.intake_queue", 0x627ceeeb,
-                      ".bot3.control_loops.intake_queue.goal",
-                      ".bot3.control_loops.intake_queue.position",
-                      ".bot3.control_loops.intake_queue.output",
-                      ".bot3.control_loops.intake_queue.status") {
-  }
+      : queue_(".y2015_bot3.control_loops.intake_queue", 0x627ceeeb,
+               ".y2015_bot3.control_loops.intake_queue.goal",
+               ".y2015_bot3.control_loops.intake_queue.position",
+               ".y2015_bot3.control_loops.intake_queue.output",
+               ".y2015_bot3.control_loops.intake_queue.status") {}
 
   // Simulates for a single timestep.
   void Simulate() {
@@ -39,11 +38,11 @@
 class IntakeTest : public ::aos::testing::ControlLoopTest {
  protected:
   IntakeTest()
-      : queue_(".bot3.control_loops.intake_queue", 0x627ceeeb,
-                      ".bot3.control_loops.intake_queue.goal",
-                      ".bot3.control_loops.intake_queue.position",
-                      ".bot3.control_loops.intake_queue.output",
-                      ".bot3.control_loops.intake_queue.status"),
+      : queue_(".y2015_bot3.control_loops.intake_queue", 0x627ceeeb,
+               ".y2015_bot3.control_loops.intake_queue.goal",
+               ".y2015_bot3.control_loops.intake_queue.position",
+               ".y2015_bot3.control_loops.intake_queue.output",
+               ".y2015_bot3.control_loops.intake_queue.status"),
         intake_(&queue_),
         plant_() {
     set_team_id(971);
@@ -119,4 +118,4 @@
 
 }  // namespace testing
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/y2015_bot3/control_loops/intake/intake_main.cc b/y2015_bot3/control_loops/intake/intake_main.cc
new file mode 100644
index 0000000..095460d
--- /dev/null
+++ b/y2015_bot3/control_loops/intake/intake_main.cc
@@ -0,0 +1,11 @@
+#include "y2015_bot3/control_loops/intake/intake.h"
+
+#include "aos/linux_code/init.h"
+
+int main() {
+  ::aos::Init();
+  ::y2015_bot3::control_loops::Intake intake;
+  intake.Run();
+  ::aos::Cleanup();
+  return 0;
+}
diff --git a/bot3/control_loops/position_sensor_sim.cc b/y2015_bot3/control_loops/position_sensor_sim.cc
similarity index 86%
rename from bot3/control_loops/position_sensor_sim.cc
rename to y2015_bot3/control_loops/position_sensor_sim.cc
index 480cd98..9562a3f 100644
--- a/bot3/control_loops/position_sensor_sim.cc
+++ b/y2015_bot3/control_loops/position_sensor_sim.cc
@@ -1,8 +1,8 @@
-#include "bot3/control_loops/position_sensor_sim.h"
+#include "y2015_bot3/control_loops/position_sensor_sim.h"
 
 #include <cmath>
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 void PositionSensorSimulator::Initialize(double start_position,
@@ -25,4 +25,4 @@
 }
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
diff --git a/bot3/control_loops/position_sensor_sim.h b/y2015_bot3/control_loops/position_sensor_sim.h
similarity index 84%
rename from bot3/control_loops/position_sensor_sim.h
rename to y2015_bot3/control_loops/position_sensor_sim.h
index f025010..f4bf56c 100644
--- a/bot3/control_loops/position_sensor_sim.h
+++ b/y2015_bot3/control_loops/position_sensor_sim.h
@@ -1,9 +1,9 @@
-#ifndef BOT3_CONTROL_LOOPS_POSITION_SENSOR_SIM_H_
-#define BOT3_CONTROL_LOOPS_POSITION_SENSOR_SIM_H_
+#ifndef Y2015_BOT3_CONTROL_LOOPS_POSITION_SENSOR_SIM_H_
+#define Y2015_BOT3_CONTROL_LOOPS_POSITION_SENSOR_SIM_H_
 
-#include "bot3/control_loops/elevator/elevator.q.h"
+#include "y2015_bot3/control_loops/elevator/elevator.q.h"
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace control_loops {
 
 // NOTE: All encoder values in this class are assumed to be in
@@ -42,6 +42,6 @@
 };
 
 }  // namespace control_loops
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-#endif /* BOT3_CONTROL_LOOPS_POSITION_SENSOR_SIM_H_ */
+#endif  // Y2015_BOT3_CONTROL_LOOPS_POSITION_SENSOR_SIM_H_
diff --git a/bot3/control_loops/python/controls.py b/y2015_bot3/control_loops/python/controls.py
similarity index 100%
rename from bot3/control_loops/python/controls.py
rename to y2015_bot3/control_loops/python/controls.py
diff --git a/bot3/control_loops/python/drivetrain.py b/y2015_bot3/control_loops/python/drivetrain.py
similarity index 99%
rename from bot3/control_loops/python/drivetrain.py
rename to y2015_bot3/control_loops/python/drivetrain.py
index 45c3387..9742167 100755
--- a/bot3/control_loops/python/drivetrain.py
+++ b/y2015_bot3/control_loops/python/drivetrain.py
@@ -233,7 +233,7 @@
     dog_loop_writer = control_loop.ControlLoopWriter(
         "Drivetrain", [drivetrain_low_low, drivetrain_low_high,
                        drivetrain_high_low, drivetrain_high_high],
-        namespaces=['bot3', 'control_loops'])
+        namespaces=['y2015_bot3', 'control_loops'])
     if argv[1][-3:] == '.cc':
       dog_loop_writer.Write(argv[2], argv[1])
     else:
diff --git a/bot3/control_loops/python/elevator3.py b/y2015_bot3/control_loops/python/elevator3.py
similarity index 98%
rename from bot3/control_loops/python/elevator3.py
rename to y2015_bot3/control_loops/python/elevator3.py
index bb5e924..853b6b3 100755
--- a/bot3/control_loops/python/elevator3.py
+++ b/y2015_bot3/control_loops/python/elevator3.py
@@ -265,7 +265,7 @@
     design_mass = 4*totemass + loaded_mass
     elevator = Elevator("Elevator", mass=design_mass)
     loop_writer = control_loop.ControlLoopWriter("Elevator", [elevator],
-                                                 namespaces=['bot3', 'control_loops'])
+                                                 namespaces=['y2015_bot3', 'control_loops'])
     if argv[1][-3:] == '.cc':
       loop_writer.Write(argv[2], argv[1])
     else:
@@ -273,7 +273,7 @@
 
     integral_elevator = IntegralElevator("IntegralElevator", mass=design_mass)
     integral_loop_writer = control_loop.ControlLoopWriter("IntegralElevator", [integral_elevator],
-                                                          namespaces=['bot3', 'control_loops'])
+                                                          namespaces=['y2015_bot3', 'control_loops'])
     if argv[3][-3:] == '.cc':
       integral_loop_writer.Write(argv[4], argv[3])
     else:
diff --git a/bot3/control_loops/python/polydrivetrain.py b/y2015_bot3/control_loops/python/polydrivetrain.py
similarity index 99%
rename from bot3/control_loops/python/polydrivetrain.py
rename to y2015_bot3/control_loops/python/polydrivetrain.py
index 8742d09..9aa4821 100755
--- a/bot3/control_loops/python/polydrivetrain.py
+++ b/y2015_bot3/control_loops/python/polydrivetrain.py
@@ -406,7 +406,7 @@
                        vdrivetrain.drivetrain_low_high,
                        vdrivetrain.drivetrain_high_low,
                        vdrivetrain.drivetrain_high_high],
-        namespaces=['bot3', 'control_loops'])
+        namespaces=['y2015_bot3', 'control_loops'])
 
     if argv[1][-3:] == '.cc':
       dog_loop_writer.Write(argv[2], argv[1])
@@ -415,7 +415,7 @@
 
     cim_writer = control_loop.ControlLoopWriter(
         "CIM", [drivetrain.CIM()],
-        namespaces=['bot3', 'control_loops'])
+        namespaces=['y2015_bot3', 'control_loops'])
 
     if argv[5][-3:] == '.cc':
       cim_writer.Write(argv[6], argv[5])
diff --git a/bot3/control_loops/python/polydrivetrain_test.py b/y2015_bot3/control_loops/python/polydrivetrain_test.py
similarity index 100%
rename from bot3/control_loops/python/polydrivetrain_test.py
rename to y2015_bot3/control_loops/python/polydrivetrain_test.py
diff --git a/bot3/control_loops/update_drivetrain.sh b/y2015_bot3/control_loops/update_drivetrain.sh
similarity index 100%
rename from bot3/control_loops/update_drivetrain.sh
rename to y2015_bot3/control_loops/update_drivetrain.sh
diff --git a/bot3/control_loops/update_elevator.sh b/y2015_bot3/control_loops/update_elevator.sh
similarity index 100%
rename from bot3/control_loops/update_elevator.sh
rename to y2015_bot3/control_loops/update_elevator.sh
diff --git a/bot3/control_loops/update_polydrivetrain.sh b/y2015_bot3/control_loops/update_polydrivetrain.sh
similarity index 100%
rename from bot3/control_loops/update_polydrivetrain.sh
rename to y2015_bot3/control_loops/update_polydrivetrain.sh
diff --git a/bot3/joystick_reader.cc b/y2015_bot3/joystick_reader.cc
similarity index 90%
rename from bot3/joystick_reader.cc
rename to y2015_bot3/joystick_reader.cc
index a4fd486..0d00e5c 100644
--- a/bot3/joystick_reader.cc
+++ b/y2015_bot3/joystick_reader.cc
@@ -12,15 +12,15 @@
 #include "aos/common/actions/actions.h"
 
 #include "frc971/queues/gyro.q.h"
-#include "bot3/autonomous/auto.q.h"
-#include "bot3/control_loops/elevator/elevator.h"
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
-#include "bot3/control_loops/elevator/elevator.q.h"
-#include "bot3/control_loops/intake/intake.q.h"
+#include "y2015_bot3/autonomous/auto.q.h"
+#include "y2015_bot3/control_loops/elevator/elevator.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/elevator/elevator.q.h"
+#include "y2015_bot3/control_loops/intake/intake.q.h"
 
-using ::bot3::control_loops::drivetrain_queue;
-using ::bot3::control_loops::elevator_queue;
-using ::bot3::control_loops::intake_queue;
+using ::y2015_bot3::control_loops::drivetrain_queue;
+using ::y2015_bot3::control_loops::elevator_queue;
+using ::y2015_bot3::control_loops::intake_queue;
 using ::frc971::sensors::gyro_reading;
 
 using ::aos::input::driver_station::ButtonLocation;
@@ -28,7 +28,7 @@
 using ::aos::input::driver_station::JoystickAxis;
 using ::aos::input::driver_station::ControlBit;
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace input {
 namespace joysticks {
 
@@ -266,17 +266,19 @@
 
     // Buttons for can grabber.
     if (data.IsPressed(kCanGrabberLift)) {
-      ::bot3::autonomous::can_grabber_control.MakeWithBuilder()
-          .can_grabber_voltage(-3).can_grabbers(false).Send();
+      ::y2015_bot3::autonomous::can_grabber_control.MakeWithBuilder()
+          .can_grabber_voltage(-3)
+          .can_grabbers(false)
+          .Send();
     } else if (data.IsPressed(kFastCanGrabberLift)) {
-      ::bot3::autonomous::can_grabber_control.MakeWithBuilder()
+      ::y2015_bot3::autonomous::can_grabber_control.MakeWithBuilder()
           .can_grabber_voltage(-12).can_grabbers(false).Send();
     } else if (data.IsPressed(kCanGrabberLower)) {
       if (grab_delay_ > 5) {
-        ::bot3::autonomous::can_grabber_control.MakeWithBuilder()
+        ::y2015_bot3::autonomous::can_grabber_control.MakeWithBuilder()
             .can_grabber_voltage(2).can_grabbers(true).Send();
       } else {
-        ::bot3::autonomous::can_grabber_control.MakeWithBuilder()
+        ::y2015_bot3::autonomous::can_grabber_control.MakeWithBuilder()
             .can_grabber_voltage(0).can_grabbers(true).Send();
       }
       ++grab_delay_;
@@ -327,12 +329,12 @@
  private:
   void StartAuto() {
     LOG(INFO, "Starting auto mode\n");
-    ::bot3::autonomous::autonomous.MakeWithBuilder().run_auto(true).Send();
+    ::y2015_bot3::autonomous::autonomous.MakeWithBuilder().run_auto(true).Send();
   }
 
   void StopAuto() {
     LOG(INFO, "Stopping auto mode\n");
-    ::bot3::autonomous::autonomous.MakeWithBuilder().run_auto(false).Send();
+    ::y2015_bot3::autonomous::autonomous.MakeWithBuilder().run_auto(false).Send();
   }
 
   bool was_running_;
@@ -374,11 +376,11 @@
 
 }  // namespace joysticks
 }  // namespace input
-}  // namespace bot3
+}  // namespace y2015_bot3
 
 int main() {
   ::aos::Init();
-  ::bot3::input::joysticks::Reader reader;
+  ::y2015_bot3::input::joysticks::Reader reader;
   reader.Run();
   ::aos::Cleanup();
 }
diff --git a/y2015_bot3/prime/BUILD b/y2015_bot3/prime/BUILD
new file mode 100644
index 0000000..7f30673
--- /dev/null
+++ b/y2015_bot3/prime/BUILD
@@ -0,0 +1,20 @@
+package(default_visibility = ['//visibility:public'])
+
+load('/aos/prime/downloader/downloader', 'aos_downloader')
+
+aos_downloader(
+  name = 'download',
+  start_srcs = [
+    '//aos:prime_start_binaries',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain',
+    '//y2015_bot3/control_loops/intake:intake',
+    '//y2015_bot3:joystick_reader',
+    '//y2015_bot3/control_loops/elevator:elevator',
+    '//y2015_bot3/autonomous:auto',
+    '//y2015_bot3/actors:binaries',
+    '//y2015_bot3/wpilib:wpilib_interface',
+  ],
+  srcs = [
+    '//aos:prime_binaries',
+  ],
+)
diff --git a/bot3/prime/build.sh b/y2015_bot3/prime/build.sh
similarity index 100%
rename from bot3/prime/build.sh
rename to y2015_bot3/prime/build.sh
diff --git a/bot3/prime/prime.gyp b/y2015_bot3/prime/prime.gyp
similarity index 100%
rename from bot3/prime/prime.gyp
rename to y2015_bot3/prime/prime.gyp
diff --git a/bot3/wpilib/BUILD b/y2015_bot3/wpilib/BUILD
similarity index 73%
rename from bot3/wpilib/BUILD
rename to y2015_bot3/wpilib/BUILD
index 5e0b057..3e7453b 100644
--- a/bot3/wpilib/BUILD
+++ b/y2015_bot3/wpilib/BUILD
@@ -10,7 +10,7 @@
     '//aos/common:stl_mutex',
     '//aos/common/logging',
     '//aos/externals:wpilib',
-    '//bot3/control_loops/drivetrain:drivetrain_queue',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_queue',
     '//aos/common/controls:control_loop',
     '//aos/common/util:log_interval',
     '//aos/common:time',
@@ -24,9 +24,9 @@
     '//frc971/wpilib:gyro_sender',
     '//frc971/control_loops:queues',
     '//frc971/wpilib:logging_queue',
-    '//bot3/autonomous:auto_queue',
-    '//bot3/control_loops/drivetrain:drivetrain_lib',
-    '//bot3/control_loops/elevator:elevator_lib',
-    '//bot3/control_loops/intake:intake_lib',
+    '//y2015_bot3/autonomous:auto_queue',
+    '//y2015_bot3/control_loops/drivetrain:drivetrain_lib',
+    '//y2015_bot3/control_loops/elevator:elevator_lib',
+    '//y2015_bot3/control_loops/intake:intake_lib',
   ],
 )
diff --git a/bot3/wpilib/wpilib.gyp b/y2015_bot3/wpilib/wpilib.gyp
similarity index 100%
rename from bot3/wpilib/wpilib.gyp
rename to y2015_bot3/wpilib/wpilib.gyp
diff --git a/bot3/wpilib/wpilib_interface.cc b/y2015_bot3/wpilib/wpilib_interface.cc
similarity index 88%
rename from bot3/wpilib/wpilib_interface.cc
rename to y2015_bot3/wpilib/wpilib_interface.cc
index e1cc670..f43fe8e 100644
--- a/bot3/wpilib/wpilib_interface.cc
+++ b/y2015_bot3/wpilib/wpilib_interface.cc
@@ -33,10 +33,10 @@
 #include "aos/common/messages/robot_state.q.h"
 
 #include "frc971/control_loops/control_loops.q.h"
-#include "bot3/control_loops/drivetrain/drivetrain.q.h"
-#include "bot3/control_loops/elevator/elevator.q.h"
-#include "bot3/control_loops/intake/intake.q.h"
-#include "bot3/autonomous/auto.q.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.q.h"
+#include "y2015_bot3/control_loops/elevator/elevator.q.h"
+#include "y2015_bot3/control_loops/intake/intake.q.h"
+#include "y2015_bot3/autonomous/auto.q.h"
 
 #include "frc971/wpilib/joystick_sender.h"
 #include "frc971/wpilib/loop_output_handler.h"
@@ -44,9 +44,9 @@
 #include "frc971/wpilib/buffered_pcm.h"
 #include "frc971/wpilib/gyro_sender.h"
 #include "frc971/wpilib/logging.q.h"
-#include "bot3/control_loops/drivetrain/drivetrain.h"
-#include "bot3/control_loops/elevator/elevator.h"
-#include "bot3/control_loops/intake/intake.h"
+#include "y2015_bot3/control_loops/drivetrain/drivetrain.h"
+#include "y2015_bot3/control_loops/elevator/elevator.h"
+#include "y2015_bot3/control_loops/intake/intake.h"
 
 
 #ifndef M_PI
@@ -54,29 +54,29 @@
 #endif
 
 using ::aos::util::SimpleLogInterval;
-using ::bot3::control_loops::drivetrain_queue;
-using ::bot3::control_loops::elevator_queue;
-using ::bot3::control_loops::intake_queue;
+using ::y2015_bot3::control_loops::drivetrain_queue;
+using ::y2015_bot3::control_loops::elevator_queue;
+using ::y2015_bot3::control_loops::intake_queue;
 using ::frc971::wpilib::BufferedPcm;
 using ::frc971::wpilib::BufferedSolenoid;
 using ::frc971::wpilib::LoopOutputHandler;
 using ::frc971::wpilib::JoystickSender;
 using ::frc971::wpilib::GyroSender;
 
-namespace bot3 {
+namespace y2015_bot3 {
 namespace wpilib {
 
 double drivetrain_translate(int32_t in) {
   return static_cast<double>(in) / (256.0 /*cpr*/ * 4.0 /*4x*/) *
-         ::bot3::control_loops::kDrivetrainEncoderRatio *
+         ::y2015_bot3::control_loops::kDrivetrainEncoderRatio *
          (4 /*wheel diameter*/ * 2.54 / 100.0 * M_PI);
 }
 
 double elevator_translate(int32_t in) {
   return static_cast<double>(in) / (512.0 /*cpr*/ * 4.0 /*4x*/) *
-         ::bot3::control_loops::kElevEncoderRatio * (2 * M_PI /*radians*/) *
-         ::bot3::control_loops::kElevChainReduction *
-         ::bot3::control_loops::kElevGearboxOutputRadianDistance;
+         ::y2015_bot3::control_loops::kElevEncoderRatio * (2 * M_PI /*radians*/) *
+         ::y2015_bot3::control_loops::kElevChainReduction *
+         ::y2015_bot3::control_loops::kElevGearboxOutputRadianDistance;
 }
 
 static const double kMaximumEncoderPulsesPerSecond =
@@ -212,9 +212,9 @@
  public:
   SolenoidWriter(const ::std::unique_ptr< ::frc971::wpilib::BufferedPcm> &pcm)
       : pcm_(pcm),
-        elevator_(".bot3.control_loops.elevator_queue.output"),
-        intake_(".bot3.control_loops.intake_queue.output"),
-        can_grabber_control_(".bot3.autonomous.can_grabber_control") {}
+        elevator_(".y2015_bot3.control_loops.elevator_queue.output"),
+        intake_(".y2015_bot3.control_loops.intake_queue.output"),
+        can_grabber_control_(".y2015_bot3.autonomous.can_grabber_control") {}
 
   void set_pressure_switch(::std::unique_ptr<DigitalInput> pressure_switch) {
     pressure_switch_ = ::std::move(pressure_switch);
@@ -312,9 +312,9 @@
   ::std::unique_ptr<DigitalInput> pressure_switch_;
   ::std::unique_ptr<Relay> compressor_relay_;
 
-  ::aos::Queue<::bot3::control_loops::ElevatorQueue::Output> elevator_;
-  ::aos::Queue<::bot3::control_loops::IntakeQueue::Output> intake_;
-  ::aos::Queue<::bot3::autonomous::CanGrabberControl> can_grabber_control_;
+  ::aos::Queue<::y2015_bot3::control_loops::ElevatorQueue::Output> elevator_;
+  ::aos::Queue<::y2015_bot3::control_loops::IntakeQueue::Output> intake_;
+  ::aos::Queue<::y2015_bot3::autonomous::CanGrabberControl> can_grabber_control_;
 
   ::std::atomic<bool> run_{true};
 };
@@ -332,11 +332,11 @@
 
  private:
   virtual void Read() override {
-    ::bot3::control_loops::drivetrain_queue.output.FetchAnother();
+    ::y2015_bot3::control_loops::drivetrain_queue.output.FetchAnother();
   }
 
   virtual void Write() override {
-    auto &queue = ::bot3::control_loops::drivetrain_queue.output;
+    auto &queue = ::y2015_bot3::control_loops::drivetrain_queue.output;
     LOG_STRUCT(DEBUG, "will output", *queue);
     left_drivetrain_talon_->Set(queue->left_voltage / 12.0);
     right_drivetrain_talon_->Set(-queue->right_voltage / 12.0);
@@ -364,11 +364,11 @@
 
  private:
   virtual void Read() override {
-    ::bot3::control_loops::elevator_queue.output.FetchAnother();
+    ::y2015_bot3::control_loops::elevator_queue.output.FetchAnother();
   }
 
   virtual void Write() override {
-    auto &queue = ::bot3::control_loops::elevator_queue.output;
+    auto &queue = ::y2015_bot3::control_loops::elevator_queue.output;
     LOG_STRUCT(DEBUG, "will output", *queue);
     elevator_talon1_->Set(queue->elevator / 12.0);
     elevator_talon2_->Set(-queue->elevator / 12.0);
@@ -396,11 +396,11 @@
 
  private:
   virtual void Read() override {
-    ::bot3::control_loops::intake_queue.output.FetchAnother();
+    ::y2015_bot3::control_loops::intake_queue.output.FetchAnother();
   }
 
   virtual void Write() override {
-    auto &queue = ::bot3::control_loops::intake_queue.output;
+    auto &queue = ::y2015_bot3::control_loops::intake_queue.output;
     LOG_STRUCT(DEBUG, "will output", *queue);
     intake_talon1_->Set(queue->intake / 12.0);
     intake_talon2_->Set(-queue->intake / 12.0);
@@ -431,11 +431,11 @@
 
  private:
   virtual void Read() override {
-    ::bot3::autonomous::can_grabber_control.FetchAnother();
+    ::y2015_bot3::autonomous::can_grabber_control.FetchAnother();
   }
 
   virtual void Write() override {
-    auto &queue = ::bot3::autonomous::can_grabber_control;
+    auto &queue = ::y2015_bot3::autonomous::can_grabber_control;
     LOG_STRUCT(DEBUG, "will output", *queue);
     can_grabber_talon1_->Set(queue->can_grabber_voltage / 12.0);
     can_grabber_talon2_->Set(-queue->can_grabber_voltage / 12.0);
@@ -551,6 +551,6 @@
 };
 
 }  // namespace wpilib
-}  // namespace bot3
+}  // namespace y2015_bot3
 
-START_ROBOT_CLASS(::bot3::wpilib::WPILibRobot);
+START_ROBOT_CLASS(::y2015_bot3::wpilib::WPILibRobot);