diff --git a/y2014/control_loops/python/BUILD b/y2014/control_loops/python/BUILD
index 21406e3..f900152 100644
--- a/y2014/control_loops/python/BUILD
+++ b/y2014/control_loops/python/BUILD
@@ -6,6 +6,8 @@
     'drivetrain.py',
   ],
   deps = [
+    '//external:python-gflags',
+    '//external:python-glog',
     '//frc971/control_loops/python:controls',
   ],
 )
@@ -18,6 +20,8 @@
   ],
   deps = [
     '//frc971/control_loops/python:controls',
+    '//external:python-gflags',
+    '//external:python-glog',
   ],
 )
 
diff --git a/y2014/control_loops/python/drivetrain.py b/y2014/control_loops/python/drivetrain.py
index 8b17853..43d5a19 100755
--- a/y2014/control_loops/python/drivetrain.py
+++ b/y2014/control_loops/python/drivetrain.py
@@ -7,6 +7,12 @@
 import argparse
 from matplotlib import pylab
 
+import gflags
+import glog
+
+FLAGS = gflags.FLAGS
+
+gflags.DEFINE_bool('plot', False, 'If true, plot the loop response.')
 
 class CIM(control_loop.ControlLoop):
   def __init__(self):
@@ -142,9 +148,9 @@
                            [0.0, (1.0 / (12.0 ** 2.0))]])
     self.K = controls.dlqr(self.A, self.B, self.Q, self.R)
 
-    print "DT K", name
-    print self.K
-    print numpy.linalg.eig(self.A - self.B * self.K)[0]
+    glog.debug('DT K %s', name)
+    glog.debug(str(self.K))
+    glog.debug(str(numpy.linalg.eig(self.A - self.B * self.K)[0]))
 
     self.hlp = 0.3
     self.llp = 0.4
@@ -215,14 +221,7 @@
 
 
 def main(argv):
-  parser = argparse.ArgumentParser(description='Calculate drivetrain.')
-  parser.add_argument('--plot', action='store_true', default=False, help='If true, plot')
-  parser.add_argument('drivetrainh')
-  parser.add_argument('drivetraincc')
-  parser.add_argument('kalman_drivetrainh')
-  parser.add_argument('kalman_drivetraincc')
-
-  args = parser.parse_args(argv[1:])
+  argv = FLAGS(argv)
 
   # Simulate the response of the system to a step input.
   drivetrain = Drivetrain()
@@ -233,7 +232,7 @@
     simulated_left.append(drivetrain.X[0, 0])
     simulated_right.append(drivetrain.X[2, 0])
 
-  if args.plot:
+  if FLAGS.plot:
     pylab.plot(range(100), simulated_left)
     pylab.plot(range(100), simulated_right)
     pylab.show()
@@ -251,7 +250,7 @@
     close_loop_left.append(drivetrain.X[0, 0])
     close_loop_right.append(drivetrain.X[2, 0])
 
-  if args.plot:
+  if FLAGS.plot:
     pylab.plot(range(100), close_loop_left)
     pylab.plot(range(100), close_loop_right)
     pylab.show()
@@ -269,7 +268,7 @@
     close_loop_left.append(drivetrain.X[0, 0])
     close_loop_right.append(drivetrain.X[2, 0])
 
-  if args.plot:
+  if FLAGS.plot:
     pylab.plot(range(100), close_loop_left)
     pylab.plot(range(100), close_loop_right)
     pylab.show()
@@ -287,7 +286,7 @@
     close_loop_left.append(drivetrain.X[0, 0])
     close_loop_right.append(drivetrain.X[2, 0])
 
-  if args.plot:
+  if FLAGS.plot:
     pylab.plot(range(100), close_loop_left)
     pylab.plot(range(100), close_loop_right)
     pylab.show()
@@ -344,13 +343,13 @@
     dog_loop_writer.AddConstant(control_loop.Constant("kT", "%f",
           drivetrain_low_low.Kt))
 
-    dog_loop_writer.Write(args.drivetrainh, args.drivetraincc)
+    dog_loop_writer.Write(argv[1], argv[2])
 
     kf_loop_writer = control_loop.ControlLoopWriter(
         "KFDrivetrain", [kf_drivetrain_low_low, kf_drivetrain_low_high,
-                       kf_drivetrain_high_low, kf_drivetrain_high_high],
+                         kf_drivetrain_high_low, kf_drivetrain_high_high],
         namespaces = namespaces)
-    kf_loop_writer.Write(args.kalman_drivetrainh, args.kalman_drivetraincc)
+    kf_loop_writer.Write(argv[3], argv[4])
 
 if __name__ == '__main__':
   sys.exit(main(sys.argv))
