diff --git a/y2014/control_loops/claw/BUILD b/y2014/control_loops/claw/BUILD
index a91462d..6f77d7a 100644
--- a/y2014/control_loops/claw/BUILD
+++ b/y2014/control_loops/claw/BUILD
@@ -25,6 +25,22 @@
   ],
 )
 
+genrule(
+  name = 'genrule_claw',
+  visibility = ['//visibility:private'],
+  cmd = '$(location //y2014/control_loops/python:claw) $(OUTS)',
+  tools = [
+    '//y2014/control_loops/python:claw',
+  ],
+  tags = [
+    'local',
+  ],
+  outs = [
+    'claw_motor_plant.h',
+    'claw_motor_plant.cc',
+  ],
+)
+
 cc_library(
   name = 'claw_lib',
   srcs = [
diff --git a/y2014/control_loops/claw/claw.cc b/y2014/control_loops/claw/claw.cc
index 7322b1e..1c93cf5 100644
--- a/y2014/control_loops/claw/claw.cc
+++ b/y2014/control_loops/claw/claw.cc
@@ -372,7 +372,7 @@
       has_bottom_claw_goal_(false),
       bottom_claw_goal_(0.0),
       bottom_claw_(this),
-      claw_(MakeClawLoop()),
+      claw_(::y2014::control_loops::claw::MakeClawLoop()),
       was_enabled_(false),
       doing_calibration_fine_tune_(false),
       capped_goal_(false),
diff --git a/y2014/control_loops/claw/claw_lib_test.cc b/y2014/control_loops/claw/claw_lib_test.cc
index 9eb173e..0bf287f 100644
--- a/y2014/control_loops/claw/claw_lib_test.cc
+++ b/y2014/control_loops/claw/claw_lib_test.cc
@@ -17,6 +17,8 @@
 namespace control_loops {
 namespace testing {
 
+using ::y2014::control_loops::claw::MakeClawPlant;
+
 typedef enum {
 	TOP_CLAW = 0,
 	BOTTOM_CLAW,
diff --git a/y2014/control_loops/claw/claw_motor_plant.cc b/y2014/control_loops/claw/claw_motor_plant.cc
deleted file mode 100644
index acba8d0..0000000
--- a/y2014/control_loops/claw/claw_motor_plant.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "y2014/control_loops/claw/claw_motor_plant.h"
-
-#include <vector>
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace frc971 {
-namespace control_loops {
-
-StateFeedbackPlantCoefficients<4, 2, 2> MakeClawPlantCoefficients() {
-  Eigen::Matrix<double, 4, 4> A;
-  A << 1.0, 0.0, 0.00909331035298, 0.0, 0.0, 1.0, -6.04514323962e-05, 0.00903285892058, 0.0, 0.0, 0.824315642255, 0.0, 0.0, 0.0, -0.0112975266368, 0.813018115618;
-  Eigen::Matrix<double, 4, 2> B;
-  B << 0.000352527133889, 0.0, -0.000352527133889, 0.000376031064118, 0.0683072794628, 0.0, -0.0683072794628, 0.0726998350615;
-  Eigen::Matrix<double, 2, 4> C;
-  C << 1, 0, 0, 0, 1, 1, 0, 0;
-  Eigen::Matrix<double, 2, 2> D;
-  D << 0, 0, 0, 0;
-  Eigen::Matrix<double, 2, 1> U_max;
-  U_max << 12.0, 12.0;
-  Eigen::Matrix<double, 2, 1> U_min;
-  U_min << -12.0, -12.0;
-  return StateFeedbackPlantCoefficients<4, 2, 2>(A, B, C, D, U_max, U_min);
-}
-
-StateFeedbackController<4, 2, 2> MakeClawController() {
-  Eigen::Matrix<double, 4, 2> L;
-  L << 1.72431564225, 2.70472958703e-16, -1.72431564225, 1.71301811562, 65.9456997026, 1.03478906105e-14, -65.9456997026, 64.4642687194;
-  Eigen::Matrix<double, 2, 4> K;
-  K << 106.138028875, 0.0, 4.20012492658, 0.0, 99.5038407367, 99.7251230882, 3.77683310096, 3.78980738032;
-  Eigen::Matrix<double, 4, 4> A_inv;
-  A_inv << 1.0, 0.0, -0.0110313451387, 0.0, 0.0, 1.0, -7.89348747778e-05, -0.0111102800135, 0.0, 0.0, 1.21312753118, 0.0, 0.0, 0.0, 0.016857361889, 1.22998489307;
-  return StateFeedbackController<4, 2, 2>(L, K, A_inv, MakeClawPlantCoefficients());
-}
-
-StateFeedbackPlant<4, 2, 2> MakeClawPlant() {
-  ::std::vector< ::std::unique_ptr<StateFeedbackPlantCoefficients<4, 2, 2>>> plants(1);
-  plants[0] = ::std::unique_ptr<StateFeedbackPlantCoefficients<4, 2, 2>>(new StateFeedbackPlantCoefficients<4, 2, 2>(MakeClawPlantCoefficients()));
-  return StateFeedbackPlant<4, 2, 2>(&plants);
-}
-
-StateFeedbackLoop<4, 2, 2> MakeClawLoop() {
-  ::std::vector< ::std::unique_ptr<StateFeedbackController<4, 2, 2>>> controllers(1);
-  controllers[0] = ::std::unique_ptr<StateFeedbackController<4, 2, 2>>(new StateFeedbackController<4, 2, 2>(MakeClawController()));
-  return StateFeedbackLoop<4, 2, 2>(&controllers);
-}
-
-}  // namespace control_loops
-}  // namespace frc971
diff --git a/y2014/control_loops/claw/claw_motor_plant.h b/y2014/control_loops/claw/claw_motor_plant.h
deleted file mode 100644
index c7de33a..0000000
--- a/y2014/control_loops/claw/claw_motor_plant.h
+++ /dev/null
@@ -1,22 +0,0 @@
-#ifndef Y2014_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
-#define Y2014_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace frc971 {
-namespace control_loops {
-static constexpr double kClawMomentOfInertiaRatio = 0.933333;
-
-
-StateFeedbackPlantCoefficients<4, 2, 2> MakeClawPlantCoefficients();
-
-StateFeedbackController<4, 2, 2> MakeClawController();
-
-StateFeedbackPlant<4, 2, 2> MakeClawPlant();
-
-StateFeedbackLoop<4, 2, 2> MakeClawLoop();
-
-}  // namespace control_loops
-}  // namespace frc971
-
-#endif  // Y2014_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
diff --git a/y2014/control_loops/python/BUILD b/y2014/control_loops/python/BUILD
index 232d128..ee99aa4 100644
--- a/y2014/control_loops/python/BUILD
+++ b/y2014/control_loops/python/BUILD
@@ -7,5 +7,27 @@
   ],
   deps = [
     '//frc971/control_loops/python:controls',
+  ],
+)
+
+py_library(
+  name = 'polydrivetrain',
+  srcs = [
+    'polydrivetrain.py',
+    'drivetrain.py',
+  ],
+  deps = [
+    '//frc971/control_loops/python:controls',
+  ],
+)
+
+py_binary(
+  name = 'claw',
+  srcs = [
+    'claw.py',
+  ],
+  deps = [
+    ':polydrivetrain',
+    '//frc971/control_loops/python:controls',
   ]
 )
diff --git a/y2014/control_loops/python/claw.py b/y2014/control_loops/python/claw.py
index b5ea6a1..f1fcae3 100755
--- a/y2014/control_loops/python/claw.py
+++ b/y2014/control_loops/python/claw.py
@@ -1,9 +1,9 @@
 #!/usr/bin/python
 
-import control_loop
-import controls
-import polytope
-import polydrivetrain
+from frc971.control_loops.python import control_loop
+from frc971.control_loops.python import controls
+from frc971.control_loops.python import polytope
+from y2014.control_loops.python import polydrivetrain
 import numpy
 import sys
 from matplotlib import pylab
@@ -478,8 +478,10 @@
   if len(argv) != 3:
     print "Expected .h file name and .cc file name for the claw."
   else:
+    namespaces = ['y2014', 'control_loops', 'claw']
     claw = Claw("Claw")
-    loop_writer = control_loop.ControlLoopWriter("Claw", [claw])
+    loop_writer = control_loop.ControlLoopWriter("Claw", [claw],
+                                                 namespaces=namespaces)
     loop_writer.AddConstant(control_loop.Constant("kClawMomentOfInertiaRatio",
       "%f", claw.J_top / claw.J_bottom))
     if argv[1][-3:] == '.cc':
diff --git a/y2014/control_loops/python/drivetrain.py b/y2014/control_loops/python/drivetrain.py
index 14a3ecb..1372c25 100755
--- a/y2014/control_loops/python/drivetrain.py
+++ b/y2014/control_loops/python/drivetrain.py
@@ -28,7 +28,7 @@
     # Torque constant
     self.Kt = self.stall_torque / self.stall_current
     # Control loop time step
-    self.dt = 0.005
+    self.dt = 0.010
 
     # State feedback matrices
     self.A_continuous = numpy.matrix(
diff --git a/y2014/control_loops/python/polydrivetrain.py b/y2014/control_loops/python/polydrivetrain.py
index a2c63fa..b066c75 100755
--- a/y2014/control_loops/python/polydrivetrain.py
+++ b/y2014/control_loops/python/polydrivetrain.py
@@ -2,10 +2,10 @@
 
 import numpy
 import sys
-import polytope
-import drivetrain
-import control_loop
-import controls
+from frc971.control_loops.python import polytope
+from y2014.control_loops.python import drivetrain
+from frc971.control_loops.python import control_loop
+from frc971.control_loops.python import controls
 from matplotlib import pylab
 
 __author__ = 'Austin Schuh (austin.linux@gmail.com)'
