diff --git a/robot_builder/Robot2013/Subsystems/AirCompressor.cpp b/robot_builder/Robot2013/Subsystems/AirCompressor.cpp
new file mode 100644
index 0000000..55be1be
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/AirCompressor.cpp
@@ -0,0 +1,25 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "AirCompressor.h"
+#include "../Robotmap.h"
+AirCompressor::AirCompressor() : Subsystem("AirCompressor") {
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	airCompressor = RobotMap::airCompressorAirCompressor;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+    
+void AirCompressor::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//SetDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/AirCompressor.h b/robot_builder/Robot2013/Subsystems/AirCompressor.h
new file mode 100644
index 0000000..d6fe9bd
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/AirCompressor.h
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef AIR_COMPRESSOR_H
+#define AIR_COMPRESSOR_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class AirCompressor: public Subsystem {
+private:
+	// It's desirable that everything possible under private except
+	// for methods that implement subsystem capabilities
+public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	Compressor* airCompressor;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	AirCompressor();
+	void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/DriveTrain.cpp b/robot_builder/Robot2013/Subsystems/DriveTrain.cpp
new file mode 100644
index 0000000..7851de4
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/DriveTrain.cpp
@@ -0,0 +1,33 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "DriveTrain.h"
+#include "../Robotmap.h"
+DriveTrain::DriveTrain() : Subsystem("DriveTrain") {
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	leftShifter = RobotMap::driveTrainLeftShifter;
+	rightShifter = RobotMap::driveTrainRightShifter;
+	leftMotors1and2 = RobotMap::driveTrainLeftMotors1and2;
+	leftMotor3 = RobotMap::driveTrainLeftMotor3;
+	rightMotors1and2 = RobotMap::driveTrainRightMotors1and2;
+	rightMotor3 = RobotMap::driveTrainRightMotor3;
+	robotDrive = RobotMap::driveTrainRobotDrive;
+	quadratureEncoderLeft = RobotMap::driveTrainQuadratureEncoderLeft;
+	quadratureEncoderRight = RobotMap::driveTrainQuadratureEncoderRight;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+    
+void DriveTrain::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//SetDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/DriveTrain.h b/robot_builder/Robot2013/Subsystems/DriveTrain.h
new file mode 100644
index 0000000..eb8f539
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/DriveTrain.h
@@ -0,0 +1,38 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef DRIVE_TRAIN_H
+#define DRIVE_TRAIN_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class DriveTrain: public Subsystem {
+private:
+	// It's desirable that everything possible under private except
+	// for methods that implement subsystem capabilities
+public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	Solenoid* leftShifter;
+	Solenoid* rightShifter;
+	SpeedController* leftMotors1and2;
+	SpeedController* leftMotor3;
+	SpeedController* rightMotors1and2;
+	SpeedController* rightMotor3;
+	RobotDrive* robotDrive;
+	Encoder* quadratureEncoderLeft;
+	Encoder* quadratureEncoderRight;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	DriveTrain();
+	void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeePickup.cpp b/robot_builder/Robot2013/Subsystems/FrisbeePickup.cpp
new file mode 100644
index 0000000..536f2be
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeePickup.cpp
@@ -0,0 +1,25 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "FrisbeePickup.h"
+#include "../Robotmap.h"
+FrisbeePickup::FrisbeePickup() : Subsystem("FrisbeePickup") {
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	intakeandCenteringRollerMotors = RobotMap::frisbeePickupIntakeandCenteringRollerMotors;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+    
+void FrisbeePickup::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//SetDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeePickup.h b/robot_builder/Robot2013/Subsystems/FrisbeePickup.h
new file mode 100644
index 0000000..4d996fb
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeePickup.h
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef FRISBEE_PICKUP_H
+#define FRISBEE_PICKUP_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class FrisbeePickup: public Subsystem {
+private:
+	// It's desirable that everything possible under private except
+	// for methods that implement subsystem capabilities
+public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	SpeedController* intakeandCenteringRollerMotors;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	FrisbeePickup();
+	void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeeStorage.cpp b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.cpp
new file mode 100644
index 0000000..3af153c
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.cpp
@@ -0,0 +1,29 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "FrisbeeStorage.h"
+#include "../Robotmap.h"
+FrisbeeStorage::FrisbeeStorage() : Subsystem("FrisbeeStorage") {
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	frisbeeIndexerMotor = RobotMap::frisbeeStorageFrisbeeIndexerMotor;
+	frisbeeIndexerSpeedEncoder = RobotMap::frisbeeStorageFrisbeeIndexerSpeedEncoder;
+	frisbeeInputOpticalSensor = RobotMap::frisbeeStorageFrisbeeInputOpticalSensor;
+	frisbeeIndexOpticalSensor = RobotMap::frisbeeStorageFrisbeeIndexOpticalSensor;
+	frisbeeReadytoshootOpticalSensor = RobotMap::frisbeeStorageFrisbeeReadytoshootOpticalSensor;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+    
+void FrisbeeStorage::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//SetDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/FrisbeeStorage.h b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.h
new file mode 100644
index 0000000..8a4c4a8
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/FrisbeeStorage.h
@@ -0,0 +1,34 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef FRISBEE_STORAGE_H
+#define FRISBEE_STORAGE_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class FrisbeeStorage: public Subsystem {
+private:
+	// It's desirable that everything possible under private except
+	// for methods that implement subsystem capabilities
+public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	SpeedController* frisbeeIndexerMotor;
+	Encoder* frisbeeIndexerSpeedEncoder;
+	DigitalInput* frisbeeInputOpticalSensor;
+	DigitalInput* frisbeeIndexOpticalSensor;
+	DigitalInput* frisbeeReadytoshootOpticalSensor;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	FrisbeeStorage();
+	void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/PickupArm.cpp b/robot_builder/Robot2013/Subsystems/PickupArm.cpp
new file mode 100644
index 0000000..a52daa6
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/PickupArm.cpp
@@ -0,0 +1,28 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "PickupArm.h"
+#include "../Robotmap.h"
+PickupArm::PickupArm() : Subsystem("PickupArm") {
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	pickupArmMotor = RobotMap::pickupArmPickupArmMotor;
+	pickupArmEncoder = RobotMap::pickupArmPickupArmEncoder;
+	pickupArmPIDController = RobotMap::pickupArmPickupArmPIDController;
+	pickupArmHomeSensor = RobotMap::pickupArmPickupArmHomeSensor;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+    
+void PickupArm::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//SetDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/PickupArm.h b/robot_builder/Robot2013/Subsystems/PickupArm.h
new file mode 100644
index 0000000..0f91014
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/PickupArm.h
@@ -0,0 +1,33 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef PICKUP_ARM_H
+#define PICKUP_ARM_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class PickupArm: public Subsystem {
+private:
+	// It's desirable that everything possible under private except
+	// for methods that implement subsystem capabilities
+public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	SpeedController* pickupArmMotor;
+	Encoder* pickupArmEncoder;
+	PIDController* pickupArmPIDController;
+	GearTooth* pickupArmHomeSensor;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	PickupArm();
+	void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/Shooter.cpp b/robot_builder/Robot2013/Subsystems/Shooter.cpp
new file mode 100644
index 0000000..bb98a50
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/Shooter.cpp
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "Shooter.h"
+#include "../Robotmap.h"
+Shooter::Shooter() : Subsystem("Shooter") {
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	shooterTiltMotor = RobotMap::shooterShooterTiltMotor;
+	shooterTiltEncoder = RobotMap::shooterShooterTiltEncoder;
+	shooterTiltHomeSensor = RobotMap::shooterShooterTiltHomeSensor;
+	latchFrisbeeSolenoid = RobotMap::shooterLatchFrisbeeSolenoid;
+	loadFrisbeeSolenoid = RobotMap::shooterLoadFrisbeeSolenoid;
+	shootSolenoid = RobotMap::shooterShootSolenoid;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+}
+    
+void Shooter::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//SetDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
+// Put methods for controlling this subsystem
+// here. Call these from Commands.
diff --git a/robot_builder/Robot2013/Subsystems/Shooter.h b/robot_builder/Robot2013/Subsystems/Shooter.h
new file mode 100644
index 0000000..9ce68ca
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/Shooter.h
@@ -0,0 +1,35 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef SHOOTER_H
+#define SHOOTER_H
+#include "Commands/Subsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class Shooter: public Subsystem {
+private:
+	// It's desirable that everything possible under private except
+	// for methods that implement subsystem capabilities
+public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	SpeedController* shooterTiltMotor;
+	Encoder* shooterTiltEncoder;
+	GearTooth* shooterTiltHomeSensor;
+	Solenoid* latchFrisbeeSolenoid;
+	Solenoid* loadFrisbeeSolenoid;
+	Solenoid* shootSolenoid;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	Shooter();
+	void InitDefaultCommand();
+};
+#endif
diff --git a/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.cpp b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.cpp
new file mode 100644
index 0000000..f71be48
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.cpp
@@ -0,0 +1,49 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#include "ShooterWheelPIDController.h"
+#include "../Robotmap.h"
+#include "SmartDashboard/SmartDashboard.h"
+#include "LiveWindow/LiveWindow.h"
+// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=PID
+ShooterWheelPIDController::ShooterWheelPIDController() : PIDSubsystem("ShooterWheelPIDController", 1.0, 0.0, 0.0) {
+	SetAbsoluteTolerance(0.2);
+	GetPIDController()->SetContinuous(false);
+	LiveWindow::GetInstance()->AddActuator("Shooter Wheel PID Controller", "PIDSubsystem Controller", GetPIDController());
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=PID
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	shooterMotor = RobotMap::shooterWheelPIDControllerShooterMotor;
+	shooterSpeedEncoder = RobotMap::shooterWheelPIDControllerShooterSpeedEncoder;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	// Use these to get going:
+	// SetSetpoint() -  Sets where the PID controller should move the system
+	//                  to
+	// Enable() - Enables the PID controller.
+}
+double ShooterWheelPIDController::ReturnPIDInput() {
+	// Return your input value for the PID loop
+	// e.g. a sensor, like a potentiometer:
+	// yourPot->SetAverageVoltage() / kYourMaxVoltage;	
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=SOURCE
+        return shooterSpeedEncoder->PIDGet();
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=SOURCE
+}
+void ShooterWheelPIDController::UsePIDOutput(double output) {
+	// Use output to drive your system, like a motor
+	// e.g. yourMotor->Set(output);
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=OUTPUT
+	shooterMotor->PIDWrite(output);
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=OUTPUT
+}
+void ShooterWheelPIDController::InitDefaultCommand() {
+	// Set the default command for a subsystem here.
+	//setDefaultCommand(new MySpecialCommand());
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DEFAULT_COMMAND
+}
diff --git a/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.h b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.h
new file mode 100644
index 0000000..5561631
--- /dev/null
+++ b/robot_builder/Robot2013/Subsystems/ShooterWheelPIDController.h
@@ -0,0 +1,30 @@
+// RobotBuilder Version: 0.0.2
+//
+// This file was generated by RobotBuilder. It contains sections of
+// code that are automatically generated and assigned by robotbuilder.
+// These sections will be updated in the future when you export to
+// C++ from RobotBuilder. Do not put any code or make any change in
+// the blocks indicating autogenerated code or it will be lost on an
+// update. Deleting the comments indicating the section will prevent
+// it from being updated in th future.
+#ifndef SHOOTER_WHEEL_PID_CONTROLLER_H
+#define SHOOTER_WHEEL_PID_CONTROLLER_H
+#include "Commands/PIDSubsystem.h"
+#include "WPILib.h"
+/**
+ *
+ *
+ * @author ExampleAuthor
+ */
+class ShooterWheelPIDController: public PIDSubsystem {
+ public:
+	// BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	SpeedController* shooterMotor;
+	Encoder* shooterSpeedEncoder;
+    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DECLARATIONS
+	ShooterWheelPIDController();
+	double ReturnPIDInput();
+	void UsePIDOutput(double output);
+	void InitDefaultCommand();
+};
+#endif
