diff --git a/Development/Software/Controller API/Controller API.vcxproj b/Development/Software/Controller API/Controller API.vcxproj
index cbbfb7a196f637f0e68ce7c7749424b3d849104a..0647b5a2e745d5bd0e951f5aac5df99ec7acaa8f 100644
--- a/Development/Software/Controller API/Controller API.vcxproj	
+++ b/Development/Software/Controller API/Controller API.vcxproj	
@@ -18,7 +18,6 @@
     <ClCompile Include="Sources\MessagePassing\Mailbox.cpp" />
     <ClCompile Include="Sources\MessagePassing\Message.cpp" />
     <ClCompile Include="Sources\Sensor\Joystick.cpp" />
-    <ClCompile Include="Sources\Sensor\MPU9250.cpp" />
     <ClCompile Include="Sources\Server.cpp" />
     <ClCompile Include="Sources\Service\Service.cpp" />
     <ClCompile Include="Sources\Source.cpp" />
@@ -32,7 +31,6 @@
     <ClInclude Include="Headers\Service\GyroService.h" />
     <ClInclude Include="Headers\Sensor\Joystick.h" />
     <ClInclude Include="Headers\MessagePassing\Mailbox.h" />
-    <ClInclude Include="Headers\Sensor\MPU9250.h" />
     <ClInclude Include="Headers\Server.h" />
     <ClInclude Include="Headers\Service\Service.h" />
     <ClInclude Include="Headers\System\Thread.h" />
diff --git a/Development/Software/Controller API/Controller API.vcxproj.filters b/Development/Software/Controller API/Controller API.vcxproj.filters
index 25ead8173dd5731f04e0dbfb36f8b0cf7f224e3c..6293c371b2ed107602edba39f4182972c28ad500 100644
--- a/Development/Software/Controller API/Controller API.vcxproj.filters	
+++ b/Development/Software/Controller API/Controller API.vcxproj.filters	
@@ -60,9 +60,6 @@
     <ClCompile Include="Sources\Sensor\Joystick.cpp">
       <Filter>Source Files\Sensors</Filter>
     </ClCompile>
-    <ClCompile Include="Sources\Sensor\MPU9250.cpp">
-      <Filter>Source Files\Sensors</Filter>
-    </ClCompile>
     <ClCompile Include="Sources\Service\Service.cpp">
       <Filter>Source Files\Services</Filter>
     </ClCompile>
@@ -92,9 +89,6 @@
     <ClInclude Include="Headers\Sensor\Joystick.h">
       <Filter>Header Files\Sensors</Filter>
     </ClInclude>
-    <ClInclude Include="Headers\Sensor\MPU9250.h">
-      <Filter>Header Files\Sensors</Filter>
-    </ClInclude>
     <ClInclude Include="Headers\Service\Service.h">
       <Filter>Header Files\Services</Filter>
     </ClInclude>
diff --git a/Development/Software/Default Controller/Default Controller.vcxproj b/Development/Software/Default Controller/Default Controller.vcxproj
index edb48573a9b90e1ef7e44aa4bfce75d1c87d1a60..67274e0e1db15f74451696134aafd3308b583d06 100644
--- a/Development/Software/Default Controller/Default Controller.vcxproj	
+++ b/Development/Software/Default Controller/Default Controller.vcxproj	
@@ -15,8 +15,14 @@
     <Text Include="README.txt" />
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="buttonInterrupt.cpp" />
+    <ClCompile Include="MPU9250.cpp" />
     <ClCompile Include="Source.cpp" />
   </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="buttonInterrupt.h" />
+    <ClInclude Include="MPU9250.h" />
+  </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{AC5B185E-4C05-4379-9A89-FF1D1CDA7775}</ProjectGuid>
     <RootNamespace>DefaultController</RootNamespace>
diff --git a/Development/Software/Default Controller/Default Controller.vcxproj.filters b/Development/Software/Default Controller/Default Controller.vcxproj.filters
index a17ea4ba9e09edf5ca8159d882a75796441efd23..54bd7720adde760ebe4fde3e6a9d13f0a16b311c 100644
--- a/Development/Software/Default Controller/Default Controller.vcxproj.filters	
+++ b/Development/Software/Default Controller/Default Controller.vcxproj.filters	
@@ -26,5 +26,19 @@
     <ClCompile Include="Source.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="buttonInterrupt.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="MPU9250.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="MPU9250.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="buttonInterrupt.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/Development/Software/Controller API/Sources/Sensor/MPU9250.cpp b/Development/Software/Default Controller/MPU9250.cpp
similarity index 97%
rename from Development/Software/Controller API/Sources/Sensor/MPU9250.cpp
rename to Development/Software/Default Controller/MPU9250.cpp
index 09a5bc260e3aece61316ddf55c60db0959646734..19f449a8314dcbb51ba0a54ba3e03b509e61cb95 100644
--- a/Development/Software/Controller API/Sources/Sensor/MPU9250.cpp	
+++ b/Development/Software/Default Controller/MPU9250.cpp	
@@ -2,7 +2,7 @@
 	@author Jonathan Krueger
 */
 
-#include
+#include "MPU9250.h"
 
 #pragma region Definitions
 #define USER_CTRL 0x6A
@@ -42,7 +42,7 @@ MPU9250::MPU9250() {
 	spi->frequency(1000000);
 
 	// set the mode
-	spi->mode(MRAA_SPI_MODE1);
+	spi->mode(SPI_MODE1);
 
 	// ensure MSB is sent first
 	spi->lsbmode(false);
diff --git a/Development/Software/Controller API/Headers/Sensor/MPU9250.h b/Development/Software/Default Controller/MPU9250.h
similarity index 100%
rename from Development/Software/Controller API/Headers/Sensor/MPU9250.h
rename to Development/Software/Default Controller/MPU9250.h
diff --git a/Development/Software/Default Controller/Makefile.txt b/Development/Software/Default Controller/Makefile.txt
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b29a82cd8df2bea03b55d77f16e08e0541934b1b 100644
--- a/Development/Software/Default Controller/Makefile.txt	
+++ b/Development/Software/Default Controller/Makefile.txt	
@@ -0,0 +1,13 @@
+all: Demo
+
+Demo: Button.o MPU.o
+g++ -o Demo Source.cpp Button.o MPU.o -l mraa
+
+Button.o: buttonInterrupt.cpp
+g++ -c -o Button.o buttonInterrupt.cpp
+
+MPU.o: MPU9250.cpp
+g++ -c -o MPU.o MPU9250.cpp
+
+clean:
+rm *.o Demo
diff --git a/Development/Software/Default Controller/Source.cpp b/Development/Software/Default Controller/Source.cpp
index ec616dfdafc0f2321c0466dec8d8930a1ccd4cf1..2e2a7140397f58bc72efa08d4693728acc6cfa7f 100644
--- a/Development/Software/Default Controller/Source.cpp	
+++ b/Development/Software/Default Controller/Source.cpp	
@@ -3,63 +3,35 @@
 #include <string>
 #include <stdint.h>
 #include <unistd.h>
-#include "mraa.hpp"
-
-using namespace mraa;
+#include "MPU9250.h"
+#include "buttonInterrupt.h"
 
 using namespace std;
 
-#pragma region Definitions
-
-#define USER_CTRL 0x6A
-#define WHO_AM_I 0x75
-#define AM_I_TRUE true
-
-#pragma endregion
-
 int main(int argc, char **argv)
 {
-	// set up the mraa library
-	mraa_init();
-
-	// set the SPI channels
-	Spi* spi = new Spi(0);
-
-	// set the frequency ( 10Mhz )
-	spi->frequency(1000000);
-
-	// set the mode
-	spi->mode(MRAA_SPI_MODE1);
-
-	// ensure MSB is sent first
-	spi->lsbmode(false);
-
-	usleep(1000000);
-
-	// This disables I2C from the start
-	spi->write_word(0x10 | USER_CTRL);
-
-	usleep(1000000);
-
-	while (AM_I_TRUE)
+	if (buttonInterrupt() == -1)
 	{
-		uint8_t result = spi->write_word(WHO_AM_I);
-
-		cout << "I should be 0x71, I am " << hex << result << endl;
-
-		usleep(1000000);
+		return -1;
 	}
 
-	while (!AM_I_TRUE)
+	MPU9250 *instance = MPU9250::instance();
+
+	while (1)
 	{
-		uint16_t gyroX = spi->write_word(0x43) | spi->write_word(0x44);
-		uint16_t gyroY = spi->write_word(0x45) | spi->write_word(0x46);
-		uint16_t gyroZ = spi->write_word(0x47) | spi->write_word(0x48);
+		float gyXh = instance->read(0x43);
+		float gyXl = instance->read(0x44);
+		float gyYh = instance->read(0x45);
+		float gyYl = instance->read(0x46);
+		float gyZh = instance->read(0x47);
+		float gyZl = instance->read(0x48);
+
+		string state = (buttonState == 0) ? ("Not Pressed") : ("Pressed");
 
-		cout << "X: " << hex << gyroX << " Y: " << hex << gyroY << " Z: " << hex << gyroZ << endl;
+		cout << "Gyro X: " << hex << gyXh << " Gyro Y: "<< hex << gyYh << " Gyro Z: " << hex << gyZh << "\t\t\tButton State: " << state << endl;
 
 		usleep(1000000);
 	}
 
-	delete spi;
+	return 0;
 }
\ No newline at end of file
diff --git a/Development/Software/Default Controller/Source1.cpp b/Development/Software/Default Controller/Source1.cpp
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/Development/Software/Default Controller/buttonInterrupt.cpp b/Development/Software/Default Controller/buttonInterrupt.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..00a4935fb4a53d3b1085c1d94ecd6586d0c7a5af
--- /dev/null
+++ b/Development/Software/Default Controller/buttonInterrupt.cpp	
@@ -0,0 +1,32 @@
+#include "buttonInterrupt.h"
+
+void pressed(void* args) {
+	buttonState = 1;
+}
+
+void released(void* args) {
+	buttonState = 0;
+}
+
+int buttonInterrupt() {
+
+	//initialize mraa
+    mraa_init();
+
+    //create mraa context
+    mraa_gpio_context context;
+
+    //set context to GPIO 15 (J20:7)
+    context = mraa_gpio_init(15);
+
+    if (context == NULL) {
+        return -1;
+    }
+
+    mraa_gpio_dir(context, MRAA_GPIO_IN);
+
+	mraa_gpio_isr(context, MRAA_GPIO_EDGE_FALLING, &pressed, NULL);
+	mraa_gpio_isr(context, MRAA_GPIO_EDGE_RISING, &released, NULL);
+
+    return 0;
+}
diff --git a/Development/Software/Default Controller/buttonInterrupt.h b/Development/Software/Default Controller/buttonInterrupt.h
new file mode 100644
index 0000000000000000000000000000000000000000..e48d887594b82eddf8e3822a090c1c7dd5c08055
--- /dev/null
+++ b/Development/Software/Default Controller/buttonInterrupt.h	
@@ -0,0 +1,13 @@
+/*
+* buttonInterrupt.c
+*
+*  Created on: Feb 10, 2016
+*      Author: Nik
+*/
+#include <stdio.h>
+#include <stdlib.h>
+#include "mraa.h"
+
+static volatile int buttonState = 0;
+
+int buttonInterrupt();
\ No newline at end of file
diff --git a/Development/Software/buttonInterrupt.c b/Development/Software/buttonInterrupt.c
deleted file mode 100644
index 4cc463b44705ec0e5337b2f665a58e4bfc963767..0000000000000000000000000000000000000000
--- a/Development/Software/buttonInterrupt.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * buttonInterrupt.c
- *
- *  Created on: Feb 10, 2016
- *      Author: Nik
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <mraa.h>
-
-static volatile int counter = 1;
-
-void interrupt(void* args) {
-    fprintf(stdout, "%d\n", counter);
-    counter++;
-}
-
-int buttonInterrupt() {
-
-	//initialize mraa
-    mraa_init();
-
-    //create mraa context
-    mraa_gpio_context context;
-
-    //set context to GPIO 15 (J20:7)
-    context = mraa_gpio_init(15);
-
-    if (context == NULL) {
-        return -1;
-    } else {
-    	fprintf(stdout, "GPIO Initialized\n");
-    }
-
-    mraa_gpio_dir(context, MRAA_GPIO_IN);
-
-    mraa_gpio_edge_t edge = MRAA_GPIO_EDGE_FALLING;
-
-    mraa_gpio_isr(context, edge, &interrupt, NULL);
-
-   // mraa_result_t result = mraa_gpio_isr_exit(context);
-
-   // return result;
-
-    return 0;
-}