diff --git a/ci-build.sh b/ci-build.sh
index f2ee59eb3b1ecf1ff64936b8e32e215800177266..5b7ac989fe13ff8797d142124bda419aea73d0d2 100644
--- a/ci-build.sh
+++ b/ci-build.sh
@@ -3,4 +3,5 @@
 set -e
 
 # Quad Libraries and Boot image
-cd quad && make boot
+(cd quad && make)
+(cd groundStation && make) 
diff --git a/common/common.txt b/common/common.txt
deleted file mode 100644
index 3a20094073732be5f5bed0035644f2193a85cdbc..0000000000000000000000000000000000000000
--- a/common/common.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-The common files are:
- - setcontrol.h
- - setcontrol.c
diff --git a/common/examples_c b/common/examples_c
deleted file mode 100644
index 036ddeb3c0443a88d42568cbcce6250f7e20ca83..0000000000000000000000000000000000000000
--- a/common/examples_c
+++ /dev/null
@@ -1,77 +0,0 @@
-#include "packet.h"
-#include "setcontrol.h"
-#include "commands.h"
-
-#include <sys/types.h>
-
-
-/* This example is close to how the ground station will handle things. It
- * shouldn't be too hard to adapt it to work on the quad side.
- */
-
-static int next_msg_id = 0;
-
-int SendSetControl()
-{
-	struct metadata m;
-	struct controller_message cm;
-
-	cm.id = ROLL_ID;        /* Roll controller */
-	cm.value_id = KI_ID;    /* I coefficient */
-	cm.value = 42.00f;      /* An appropriate value */
-
-	uint8_t data[64];
-	m.msg_id = next_msg_id++;
-	/* Fills in the rest of the metadata automatically */
-	if (EncodeSetcontrol(&m, data, 64, &cm) < 0) {
-		return -1;
-	}
-
-	uint8_t packet[128];
-	ssize_t length;
-	if ((length = EncodePacket(packet, 128, &m, data)) < 0) {
-		return -1;
-	}
-
-	/* Now you can send the packet
-	 * sendThePacket(packet, length);
-	 */
-
-	return 0;
-}
-
-
-/* Process incoming packets */
-int receive_packet(uint8_t * packet, size_t length)
-{
-	struct metadata m;
-	uint8_t data[128];
-
-	/* Will fail if checksum is bad, etc */
-	if (DecodePacket(&m, data, 128, packet, length) < 0) {
-		return -1;
-	}
-
-	/* Let's pretend that the callbacks have signature
-	 * void cb(
-	 *     const struct metadata * m,
-	 *     const uint8_t * data);
-	 *
-	 * Call the callback.
-	 */
-	(*MessageTypes[m.msg_type].functionPtr)(&m, data);
-
-	return 0;
-}
-
-/* An example of a setcontrol callback. Arguments
- * aren't important, as long as we have access
- * to the packet bytes and the length
- */
-void cb_setcontrol(const struct metadata *m, const uint8_t *data)
-{
-	struct controller_message cm;
-	DecodeSetcontrol(&cm, m, data);
-
-	/* cm now has populated controller ID, value ID, and value */
-}
diff --git a/groundStation/Makefile b/groundStation/Makefile
index 47356c05daf7937efa6ab309e4b5e583c3df8d91..f0d6737fbe1159f47ffd25a55f839f40cf2e6e04 100644
--- a/groundStation/Makefile
+++ b/groundStation/Makefile
@@ -6,15 +6,10 @@ GXX=g++
 CFLAGS= -Wall -pedantic -Wextra -Werror -std=gnu99 -g -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-but-set-variable
 CXXFLAGS= -Wall -pedantic -Wextra -Werror -Wno-reorder -Wno-unused-variable -std=c++0x -g
 INCLUDES = $(foreach dir, $(INCDIR), -I$(dir))
-INCDIR=inc src/vrpn src/vrpn/quat src/vrpn/build $(COMSRCDIR) $(BESRCDIR) $(CLISRCDIR) $(FESRCDIR)
-LIBS= -lpthread -lbluetooth -lvrpn -lquat -Lsrc/vrpn/build -Lsrc/vrpn/build/quat 
+INCDIR=../quad/inc src/vrpn src/vrpn/quat src/vrpn/build $(BESRCDIR) $(CLISRCDIR) $(FESRCDIR)
+LIBS= -lpthread -lbluetooth -lvrpn -lquat -Lsrc/vrpn/build -Lsrc/vrpn/build/quat -lcomputation_graph -L../quad/lib -lcommands
 OBJDIR=obj
 
-# Common Objects
-COMSRCDIR=../common
-COMSOURCES := $(wildcard $(COMSRCDIR)/*.c )
-COMOBJECTS = $(COMSOURCES:$(COMSRCDIR)/%.c=$(OBJDIR)/%.o)
-
 # Backend Specific Variables
 BEBINARY=BackEnd
 BESRCDIR=src/backend
@@ -36,10 +31,13 @@ FECSOURCES := $(wildcard $(FESRCDIR)/*.c )
 FECOBJECTS = $(FECSOURCES:$(FESRCDIR)/%.c=$(OBJDIR)/%.o)
 
 
-OBJECTS= $(COMOBJECTS) $(CLIOBJECTS) $(BECOBJECTS) $(BECPPOBJECTS) $(FECOBJECTS)
+OBJECTS=$(CLIOBJECTS) $(BECOBJECTS) $(BECPPOBJECTS) $(FECOBJECTS)
 
 # Default target
-all: logs objdir backend cli $(SYMLINKS)
+all: quad logs objdir backend cli $(SYMLINKS)
+
+quad:
+	$(MAKE) -C ../quad
 
 $(SYMLINKS): $(CLIBINARY)
 	$(foreach symlink, $(SYMLINKS), ln -s $(CLIBINARY) $(symlink);)
@@ -53,12 +51,9 @@ $(CLIOBJECTS) : $(OBJDIR)/%.o : $(CLISRCDIR)/%.c
 	$(GCC)  $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS)
 
 
-backend: $(COMOBJECTS) $(BECPPOBJECTS) $(BECOBJECTS)
+backend: $(BECPPOBJECTS) $(BECOBJECTS)
 	$(GXX) $(CXXFLAGS) $^ -o $(BEBINARY) $(INCLUDES) $(LIBS)
 
-$(COMOBJECTS) : $(OBJDIR)/%.o : $(COMSRCDIR)/%.c
-	$(GCC)  $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS)
-
 $(FECOBJECTS) : $(OBJDIR)/%.o : $(FESRCDIR)/%.c
 	$(GCC)  $(CFLAGS) -c $^ -o $@ $(INCLUDES) $(LIBS)
 
diff --git a/groundStation/src/backend/backend.c b/groundStation/src/backend/backend.c
index 382a525c099b1a06c861986bb7ea5fa759b63262..f025c009da060244c223012b1e253575344884f7 100644
--- a/groundStation/src/backend/backend.c
+++ b/groundStation/src/backend/backend.c
@@ -29,7 +29,7 @@
 #include <netinet/tcp.h>
 
 //user created includes
-#include "../../../common/commands.h"
+#include "commands.h"
 #include "vrpn_tracker.hpp"
 #include "type_def.h"
 #include "packet.h"
@@ -82,7 +82,8 @@ static void quad_recv();
 static int wasDisconnected(int fd);
 /* handle controller responses from quad to frontend */
 static void handleResponse(struct metadata *m, uint8_t * data);
-
+/* Create new dynamic logfile name */
+char * create_log_name(char * buffer, size_t max);
 
 /* Thread-safe wrappers */
 pthread_mutex_t quadSocketMutex;
@@ -113,6 +114,8 @@ fd_set rfds_master;
 int max_fd = 0;
 
 static FILE * quadlog_file;
+static int quadlog_file_open;
+static char user_specified_log_name[256] = "";
 
 pthread_mutex_t quadResponseMutex, cliInputMutex ;
 unsigned char *commandBuf;
@@ -131,8 +134,6 @@ int main(int argc, char **argv)
 {
 	int activity;
 	FD_ZERO(&rfds_master);
-	char log_file[256] = "logs/";
-
 	/* 
 	 * Create backend listening socket
 	 */
@@ -203,30 +204,15 @@ int main(int argc, char **argv)
 
 	if(argc >= 2)
 	{
-		strncat(log_file, argv[1], strlen(argv[1]));
-	} else {
-		time_t rawtime;
-		char timestr [30];
-		time(&rawtime);
-		sprintf(timestr,"%s",ctime(&rawtime));
-		// Lets convert space to _ in
-		char *p = timestr;
-		size_t i = 0;
-		while(i < strlen(timestr))
-		{ 
-		    if (*p == ' ')
-		          *p = '_';
-			i++;
-			p++;
-		}
-		// timestr has a weird char at the end of it.
-		// we will not include it in our file name
-		strncat(log_file, timestr, strlen(timestr) -1 );
-		strcat(log_file, ".txt");
+		strncat(user_specified_log_name, argv[1], strlen(argv[1]));
 	}
 
+	char log_file[256];
+	create_log_name(log_file, 256);
+
 	printf("Creating log file '%s'...\n",log_file);
 	quadlog_file = fopen(log_file, "a");
+	quadlog_file_open = 1;
 
 	// Tell the quad we are ready to send it vrpn data
 	sendStartPacket();
@@ -765,13 +751,13 @@ static void quad_recv() {
 		return;
 	}
 	respBufLen += respLen;
-
-	// printf("packetFromQuad = '");
-	// for(int i = 0; i < (int)respBufLen; ++i) {
-	// 	printf(" %.2x ", respBuf[i]);
-	// }
-	// printf("'\n");
-
+/*
+	printf("packetFromQuad = '");
+	for(int i = 0; i < (int)respBufLen; ++i) {
+		printf(" %.2x ", respBuf[i]);
+	}
+	printf("'\n");
+*/
 	while(respBufLen){
 		datalen = DecodePacket(&m, data, CMD_MAX_LENGTH, respBuf, respBufLen);
 		if (datalen == -1) {
@@ -811,6 +797,13 @@ static void quad_recv() {
 
 		switch (m.msg_type) {
 			case LOG_ID:
+				if (!quadlog_file_open) {
+					char log_file[256];
+					create_log_name(log_file, 256);
+					printf("New log file created: '%s'\n", log_file);
+					quadlog_file = fopen(log_file, "a");
+					quadlog_file_open = 1;
+				}	
 				/* something like this */
 				printf("(Quad) : Log found\n");
 				fwrite((char *) data, sizeof(char), m.data_len, quadlog_file);
@@ -823,6 +816,13 @@ static void quad_recv() {
 			case RESPADDNODE_ID:
 				handleResponse(&m, data);
 				break;
+			case LOG_END_ID:
+				if (quadlog_file_open) {
+					fclose(quadlog_file);
+					quadlog_file_open = 0;	
+				}
+				printf("(Quad) : Log End found\n");
+				break;
 			default:
 				printf("(Backend): message type %d ignored from quad\n", m.msg_type);
 		}
@@ -907,3 +907,25 @@ void findTimeDiff(int respID) {
 	timeval_subtract(&result, &tend, &timeArr[respID%MAX_HASH_SIZE]);
 	printf("(BackEnd): Elapsed time = %ld ms\n", result.tv_usec/1000);
 }
+
+char * create_log_name(char * buffer, size_t max) {
+	static const char * prefix = "logs";
+	static size_t num_logs = 0;
+	static const char * format_string =  "%Y-%m-%e_%-l:%M";
+
+	time_t curr_time;
+	char c_time_string[256];
+	struct tm * tmp;
+
+	curr_time = time(NULL);
+	tmp = localtime(&curr_time);
+	strftime(c_time_string, 256, format_string, tmp);
+
+	if(strcmp(user_specified_log_name, "") == 0) {
+		sprintf(buffer, "%s/%s_%lu.txt", prefix, c_time_string, num_logs++);	
+	} else {
+		sprintf(buffer, "%s/%s_%lu.txt", prefix, user_specified_log_name, num_logs++);
+	}
+	
+	return buffer;
+}
diff --git a/groundStation/src/backend/config.h b/groundStation/src/backend/config.h
index 9bb8e09831faeabe25abc39e676a4c07452cb800..38bf5611a009380597fd44732d995bb65535e75a 100644
--- a/groundStation/src/backend/config.h
+++ b/groundStation/src/backend/config.h
@@ -2,7 +2,7 @@
 #define __CONFIG_H
 
 
-#define DEFAULT_SOCKET "/var/run/ucart.socket"
+#define DEFAULT_SOCKET "./ucart.socket"
 #define SOCKET_ENV "UCART_SOCKET"
 #define NOQUAD_ENV "UCART_NO_QUAD"
 #define NOVRPN_ENV "UCART_NO_VRPN"
diff --git a/groundStation/src/backend/nodes.c b/groundStation/src/backend/nodes.c
index 4db73c6f408202cdbd7066607e72db8f6b97d65e..119fac877d2182d321602c136328e7accaa418e7 100644
--- a/groundStation/src/backend/nodes.c
+++ b/groundStation/src/backend/nodes.c
@@ -2,7 +2,7 @@
 #include <inttypes.h>
 
 #include "nodes.h"
-#include "../../../common/commands.h"
+#include "commands.h"
 #include "bitwise.h"
 
 
diff --git a/groundStation/src/backend/output.c b/groundStation/src/backend/output.c
index f293f3ec7c84e78d96b5b26bd229f5735c71dc8a..d72f04bcddf5a0f8645f1ad061fa6346fe3c458e 100644
--- a/groundStation/src/backend/output.c
+++ b/groundStation/src/backend/output.c
@@ -2,7 +2,7 @@
 #include <inttypes.h>
 
 #include "output.h"
-#include "../../../common/commands.h"
+#include "commands.h"
 #include "bitwise.h"
 
 
diff --git a/groundStation/src/backend/param.c b/groundStation/src/backend/param.c
index 15b049dbaa3ac9b858415dbc7248a2ff0daecff2..8912b65f96d2a1506f8e62b4c4588cc71466f5d0 100644
--- a/groundStation/src/backend/param.c
+++ b/groundStation/src/backend/param.c
@@ -2,7 +2,7 @@
 #include <inttypes.h>
 
 #include "param.h"
-#include "../../../common/commands.h"
+#include "commands.h"
 #include "bitwise.h"
 
 enum GetparamData {
diff --git a/groundStation/src/backend/source.c b/groundStation/src/backend/source.c
index ab319d251a5ef53145027ead1ac62bf53285a5be..683a3011f0974898dd15ab71258380e0ee15e206 100644
--- a/groundStation/src/backend/source.c
+++ b/groundStation/src/backend/source.c
@@ -2,7 +2,7 @@
 #include <inttypes.h>
 
 #include "source.h"
-#include "../../../common/commands.h"
+#include "commands.h"
 #include "bitwise.h"
 
 
diff --git a/groundStation/src/backend/update.c b/groundStation/src/backend/update.c
index 1f51f0be78c78b4671f2066124e15c90b96d3621..db546e05a3891ff0f9f52bc2ecdfc658012ed65b 100644
--- a/groundStation/src/backend/update.c
+++ b/groundStation/src/backend/update.c
@@ -1,5 +1,5 @@
 #include "update.h"
-#include "../../../common/commands.h"
+#include "commands.h"
 #include "bitwise.h"
 
 #include <sys/types.h>
diff --git a/groundStation/src/cli/cli_nodes.c b/groundStation/src/cli/cli_nodes.c
index ff067dd574ae9c24f92be019dd750d70cad09083..79d0633fbcc6b86edbe2c62680e801200c642854 100644
--- a/groundStation/src/cli/cli_nodes.c
+++ b/groundStation/src/cli/cli_nodes.c
@@ -27,7 +27,6 @@ int cli_getnodes(struct backend_conn * conn, int argc, char ** argv) {
 
 	node_data = malloc(sizeof(*node_data) * num_nodes);
 
-
 	if (frontend_getnodes(conn, node_data, &num_nodes)) {
 		free(node_data);
 		return 1;
diff --git a/quad/.gitignore b/quad/.gitignore
index 43d04fb118c3ab8c1ea06f84c8a8b11598990756..92bd47f407dc5d75d40fff7c329cb9ba87f3df11 100644
--- a/quad/.gitignore
+++ b/quad/.gitignore
@@ -5,3 +5,4 @@ lib/
 lib-zybo/
 TAGS
 out/
+bin/
\ No newline at end of file
diff --git a/quad/Makefile b/quad/Makefile
index b52debe6ed0b95703c8f9c8143ead5d48a62f1e7..d04ffe0e3d8af5a9842809be690f7ab85d30e134 100644
--- a/quad/Makefile
+++ b/quad/Makefile
@@ -1,21 +1,26 @@
 INCDIR = inc
 LIBDIR = lib
 OUTDIR = out
+EXEDIR = bin
 WS = $(CURDIR)/xsdk_workspace
 
 BOOT = $(OUTDIR)/BOOT.bin
 
 .PHONY: all libs zybo boot test clean deep-clean
 
-all: libs
+all: libs bins
 
 libs:
 	$(MAKE) -C src/test
 	$(MAKE) -C src/queue
 	$(MAKE) -C src/computation_graph
 	$(MAKE) -C src/graph_blocks
+	$(MAKE) -C src/commands
 	$(MAKE) -C src/quad_app
 
+bins:
+	$(MAKE) -C src/virt_quad
+
 zybo:
 	bash scripts/build_zybo.sh
 
@@ -27,7 +32,7 @@ test:
 	$(MAKE) -C src/quad_app test
 
 clean:
-	rm -rf $(INCDIR) $(LIBDIR) $(OUTDIR)
+	rm -rf $(INCDIR) $(LIBDIR) $(OUTDIR) $(EXEDIR)
 
 deep-clean:
 	make clean
@@ -35,6 +40,7 @@ deep-clean:
 	$(MAKE) -C src/queue clean
 	$(MAKE) -C src/computation_graph clean
 	$(MAKE) -C src/graph_blocks clean
+	$(MAKE) -C src/commands clean
 	$(MAKE) -C src/quad_app clean
 	bash scripts/clean_xsdk_workspace.sh
 
diff --git a/quad/executable.mk b/quad/executable.mk
new file mode 100644
index 0000000000000000000000000000000000000000..d17244a837c5c785fcf53ffb3f547d110d0be88a
--- /dev/null
+++ b/quad/executable.mk
@@ -0,0 +1,43 @@
+GCC = gcc
+
+INCDIR = $(TOP)/inc
+OBJDIR = obj
+EXEDIR = $(TOP)/bin
+LIBDIR = $(TOP)/lib
+
+SOURCES = $(wildcard *.c)
+HEADERS = $(wildcard *.h)
+INCLUDES = $(addprefix $(INCDIR)/, $(HEADERS))
+OBJECTS = $(patsubst %.c, $(OBJDIR)/%.o, $(SOURCES))
+
+TARGET = $(EXEDIR)/$(NAME)
+
+.PHONY: default run clean
+
+################
+## User Targets
+################
+
+default: $(TARGET)
+
+run: $(TARGET)
+	$(EXEDIR)/$(NAME)
+
+clean:
+	rm -rf $(TARGET) $(OBJDIR)
+
+####################
+## Internal Targets
+####################
+
+$(TARGET): $(OBJECTS) | $(EXEDIR)
+	$(GCC) -g -o $(TARGET) $^ -I$(INCDIR) -L$(LIBDIR) $(REQLIBS)
+
+$(OBJDIR)/%.o : %.c | $(OBJDIR) $(INCDIR)
+	$(GCC) -c -g -o $@ $< -I$(INCDIR)
+
+$(OBJDIR):
+	mkdir $(OBJDIR)
+
+$(EXEDIR):
+	mkdir $(EXEDIR)
diff --git a/quad/src/commands/Makefile b/quad/src/commands/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8cc8ffee3eb119613ad65707e4bcc03f9dea80a1
--- /dev/null
+++ b/quad/src/commands/Makefile
@@ -0,0 +1,6 @@
+TOP=../..
+
+NAME = commands
+REQLIBS = -ltest
+
+include $(TOP)/library.mk
diff --git a/quad/src/quad_app/cb_default.h b/quad/src/commands/cb_default.h
similarity index 75%
rename from quad/src/quad_app/cb_default.h
rename to quad/src/commands/cb_default.h
index aa308108b499e2cb8f4e723a59b81b02abe6d29c..5581c442c29af074806052203d4e18e76d263d5c 100644
--- a/quad/src/quad_app/cb_default.h
+++ b/quad/src/commands/cb_default.h
@@ -1,11 +1,10 @@
 #include "commands.h"
-#include "type_def.h"
 
 /* The cb_default used on the groundStation. This file MUST NOT BE INCLUDED
  * by anything except for commands.c */
 
 /* cb_default used by portable commands.c */
-int cb_default(modular_structs_t *structs)
+int cb_default(struct modular_structs *structs)
 {
 	    return 0;
 }
diff --git a/common/commands.c b/quad/src/commands/commands.c
similarity index 100%
rename from common/commands.c
rename to quad/src/commands/commands.c
diff --git a/common/commands.h b/quad/src/commands/commands.h
similarity index 89%
rename from common/commands.h
rename to quad/src/commands/commands.h
index d4b0f2e2c8da6093809535b3dbaa00c57998fc34..2d41d2e6294c74757518e51b8157df6351765667 100644
--- a/common/commands.h
+++ b/quad/src/commands/commands.h
@@ -5,8 +5,6 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "callbacks.h"
-
 #define MAX_CMD_TEXT_LENGTH 100
 
 enum Message{
@@ -41,7 +39,7 @@ enum MessageTypeID{
 	UPDATE_ID,            // 03
 	BEGINUPDATE_ID,       // 04
 	LOG_ID,               // 05
-	RESPONSE_ID,          // 06
+	LOG_END_ID,           // 06 - Responding with controller parameters. Example: PID constants
 	SETPARAM_ID,          // 07 - Setting node parameters.
 	GETPARAM_ID,          // 08 - Getting node parameters.
 	RESPPARAM_ID,         // 09 - Responding with node parameters.
@@ -54,10 +52,13 @@ enum MessageTypeID{
 	RESPNODES_ID,         // 16 - Responding with node IDs from current comp_graph
 	ADDNODE_ID,			  // 17 - Add a node of specified type_id
 	RESPADDNODE_ID,		  // 18 - Responding with the block_id of the newly added node
-	LOG_END_ID,           // 19 - Responding with controller parameters. Example: PID constants
-	MAX_TYPE_ID           // 20 - Just used to keep track of the size. Must remain at the end
+	MAX_TYPE_ID           // 19 - Just used to keep track of the size. Must remain at the end
 };
 
+struct modular_structs;
+struct metadata;
+typedef int (command_cb)(struct modular_structs *, struct metadata *, unsigned char *, unsigned short);
+
 /*
  * Message type struct used to keep track of the callback function
  * pointers located in commands.c
diff --git a/quad/src/quad_app/Makefile b/quad/src/quad_app/Makefile
index acc4524879795593aff79e6bb2ccdc0b7f97ace0..ffe41ddcba74e67aad0dacc4b28ff9788d1034d2 100644
--- a/quad/src/quad_app/Makefile
+++ b/quad/src/quad_app/Makefile
@@ -1,6 +1,7 @@
 TOP=../..
 
 NAME = quad_app
-REQLIBS = -ltest -lcomputation_graph -lm -lqueue -lgraph_blocks
+REQLIBS = -ltest -lcomputation_graph -lm -lqueue -lgraph_blocks -lcommands
+REQLIBS = -ltest -lcomputation_graph -lm -lqueue -lcommands
 
 include $(TOP)/library.mk
diff --git a/quad/src/quad_app/callbacks.h b/quad/src/quad_app/callbacks.h
index 80d0bbc43a5634cf176d084292ddae0376599773..3a13626dbd13e8c3d5bba48cf6c4675069e96394 100644
--- a/quad/src/quad_app/callbacks.h
+++ b/quad/src/quad_app/callbacks.h
@@ -4,8 +4,6 @@
 /* Grab some stupid stuff from legacy code */
 struct modular_structs;
 struct metadata;
-
-/* Make commands.c happy */
 typedef int (command_cb)(struct modular_structs *, struct metadata *, unsigned char *, unsigned short);
 
 #endif
diff --git a/quad/src/quad_app/commands.c b/quad/src/quad_app/commands.c
deleted file mode 120000
index e9bada254a300676bc4a563b5d1183e02125693f..0000000000000000000000000000000000000000
--- a/quad/src/quad_app/commands.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../groundStation/src/backend/common/commands.c
\ No newline at end of file
diff --git a/quad/src/quad_app/commands.h b/quad/src/quad_app/commands.h
deleted file mode 120000
index 92d6b32d4641fd6b8ea711d7141b7b03d484b72a..0000000000000000000000000000000000000000
--- a/quad/src/quad_app/commands.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../groundStation/src/backend/common/commands.h
\ No newline at end of file
diff --git a/quad/src/virt_quad/Makefile b/quad/src/virt_quad/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..47cebc494626a024de63f93c15480f5e4c3ff5a4
--- /dev/null
+++ b/quad/src/virt_quad/Makefile
@@ -0,0 +1,6 @@
+TOP=../..
+
+NAME = virt_quad
+REQLIBS = -lquad_app -lcomputation_graph -lm -lcommands
+
+include $(TOP)/executable.mk
diff --git a/quad/src/virt_quad/hw_impl_unix.c b/quad/src/virt_quad/hw_impl_unix.c
new file mode 100644
index 0000000000000000000000000000000000000000..fea231c35e963f5321b35665e4c3c2feac961383
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix.c
@@ -0,0 +1,70 @@
+#include "hw_impl_unix.h"
+
+struct UARTDriver create_unix_uart() {
+  struct UARTDriver uart;
+  uart.state = NULL;
+  uart.reset = unix_uart_reset;
+  uart.write = unix_uart_write;
+  uart.read = unix_uart_read;
+  return uart;
+}
+
+struct PWMOutputDriver create_unix_pwm_outputs() {
+  struct PWMOutputDriver pwm_outputs;
+  pwm_outputs.state = NULL;
+  pwm_outputs.reset = unix_pwm_output_reset;
+  pwm_outputs.write = unix_pwm_output_write;
+  return pwm_outputs;
+}
+
+struct PWMInputDriver create_unix_pwm_inputs() {
+  struct PWMInputDriver pwm_inputs;
+  pwm_inputs.state = NULL;
+  pwm_inputs.reset = unix_pwm_input_reset;
+  pwm_inputs.read = unix_pwm_input_read;
+  return pwm_inputs;
+}
+
+struct I2CDriver create_unix_i2c() {
+  struct I2CDriver i2c;
+  i2c.state = NULL;
+  i2c.reset = unix_i2c_reset;
+  i2c.write = unix_i2c_write;
+  i2c.read = unix_i2c_read;
+  return i2c;
+}
+
+struct TimerDriver create_unix_global_timer() {
+  struct TimerDriver global_timer;
+  global_timer.state = NULL;
+  global_timer.reset = unix_global_timer_reset;
+  global_timer.restart = unix_global_timer_restart;
+  global_timer.read = unix_global_timer_read;
+  return global_timer;
+}
+
+struct TimerDriver create_unix_axi_timer() {
+  struct TimerDriver axi_timer;
+  axi_timer.state = NULL;
+  axi_timer.reset = unix_axi_timer_reset;
+  axi_timer.restart = unix_axi_timer_restart;
+  axi_timer.read = unix_axi_timer_read;
+  return axi_timer;
+}
+
+struct LEDDriver create_unix_mio7_led() {
+  struct LEDDriver mio7_led;
+  mio7_led.state = NULL;
+  mio7_led.reset = unix_mio7_led_reset;
+  mio7_led.turn_on = unix_mio7_led_turn_on;
+  mio7_led.turn_off = unix_mio7_led_turn_off;
+  return mio7_led;
+}
+
+struct SystemDriver create_unix_system() {
+  struct SystemDriver sys;
+  sys.state = NULL;
+  sys.reset = unix_system_reset;
+  sys.sleep = unix_system_sleep;
+  return sys;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix.h b/quad/src/virt_quad/hw_impl_unix.h
new file mode 100644
index 0000000000000000000000000000000000000000..c7e3659dffcfb0b1094c26f41ffe3b4d792962b8
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix.h
@@ -0,0 +1,61 @@
+#ifndef HW_IMPL_UNIX
+#define HW_IMPL_UNIX
+
+#include "hw_iface.h"
+#include "type_def.h"
+
+#include <sys/time.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <time.h>
+
+int unix_uart_reset(struct UARTDriver *self);
+int unix_uart_write(struct UARTDriver *self, unsigned char c);
+int unix_uart_read(struct UARTDriver *self, unsigned char *c);
+
+int unix_pwm_output_reset(struct PWMOutputDriver *self);
+int unix_pwm_output_write(struct PWMOutputDriver *self, unsigned int channel, unsigned long pulse_width_us);
+
+int unix_pwm_input_reset(struct PWMInputDriver *self);
+int unix_pwm_input_read(struct PWMInputDriver *self, unsigned int channel, unsigned long *pulse_width_us);
+
+int unix_i2c_reset(struct I2CDriver *self);
+int unix_i2c_write(struct I2CDriver *self,
+                   unsigned short device_addr,
+                   unsigned char *data,
+                   unsigned int length);
+int unix_i2c_read(struct I2CDriver *self,
+                  unsigned short device_addr,
+                  unsigned char *buff,
+                  unsigned int length);
+
+int unix_global_timer_reset(struct TimerDriver *self);
+int unix_global_timer_restart(struct TimerDriver *self);
+int unix_global_timer_read(struct TimerDriver *self, u64 *us);
+
+int unix_axi_timer_reset(struct TimerDriver *self);
+int unix_axi_timer_restart(struct TimerDriver *self);
+int unix_axi_timer_read(struct TimerDriver *self, u64 *us);
+
+int unix_mio7_led_reset(struct LEDDriver *self);
+int unix_mio7_led_turn_on(struct LEDDriver *self);
+int unix_mio7_led_turn_off(struct LEDDriver *self);
+
+int unix_system_reset(struct SystemDriver *self);
+int unix_system_sleep(struct SystemDriver *self, unsigned long us);
+
+struct UARTDriver create_unix_uart();
+struct PWMOutputDriver create_unix_pwm_outputs();
+struct PWMInputDriver create_unix_pwm_inputs();
+struct I2CDriver create_unix_i2c();
+struct TimerDriver create_unix_global_timer();
+struct TimerDriver create_unix_axi_timer();
+struct LEDDriver create_unix_mio7_led();
+struct SystemDriver create_unix_system();
+
+int test_unix_i2c();
+int test_unix_mio7_led_and_system();
+int test_unix_pwm_inputs();
+
+#endif
diff --git a/quad/src/virt_quad/hw_impl_unix_axi_timer.c b/quad/src/virt_quad/hw_impl_unix_axi_timer.c
new file mode 100644
index 0000000000000000000000000000000000000000..73e9acc281110e6453bfba625976af852eeac351
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_axi_timer.c
@@ -0,0 +1,24 @@
+#include "hw_impl_unix.h"
+
+int unix_axi_timer_reset(struct TimerDriver *self) {
+  if (self->state == NULL) {
+    self->state = malloc(sizeof(struct timeval));
+  }
+  return 0;
+}
+
+int unix_axi_timer_restart(struct TimerDriver *self) {
+  struct timeval *start = self->state;
+  struct timezone tz;
+  gettimeofday(start, &tz);
+  return 0;
+}
+
+int unix_axi_timer_read(struct TimerDriver *self, u64 *us) {
+  struct timeval *start = self->state;
+  struct timeval end;
+  struct timezone tz;
+  gettimeofday(&end, &tz);
+  *us = end.tv_usec - start->tv_usec;
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_global_timer.c b/quad/src/virt_quad/hw_impl_unix_global_timer.c
new file mode 100644
index 0000000000000000000000000000000000000000..be752b774eb55cb17f3c481947f44b76fc2ec124
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_global_timer.c
@@ -0,0 +1,24 @@
+#include "hw_impl_unix.h"
+
+int unix_global_timer_reset(struct TimerDriver *self) {
+  if (self->state == NULL) {
+    self->state = malloc(sizeof(struct timeval));
+  }
+  return 0;
+}
+
+int unix_global_timer_restart(struct TimerDriver *self) {
+  struct timeval *start = self->state;
+  struct timezone tz;
+  gettimeofday(start, &tz);
+  return 0;
+}
+
+int unix_global_timer_read(struct TimerDriver *self, u64 *us) {
+  struct timeval *start = self->state;
+  struct timeval end;
+  struct timezone tz;
+  gettimeofday(&end, &tz);
+  *us = end.tv_usec - start->tv_usec;
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_i2c.c b/quad/src/virt_quad/hw_impl_unix_i2c.c
new file mode 100644
index 0000000000000000000000000000000000000000..09ab43c8b83b82d60dff7623a31efb1d29c3fd60
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_i2c.c
@@ -0,0 +1,19 @@
+#include "hw_impl_unix.h"
+
+int unix_i2c_reset(struct I2CDriver *self) {
+  return 0;
+}
+
+int unix_i2c_write(struct I2CDriver *self,
+                   unsigned short device_addr,
+                   unsigned char *data,
+                   unsigned int length) {
+  return 0;
+}
+
+int unix_i2c_read(struct I2CDriver *self,
+                  unsigned short device_addr,
+                  unsigned char *buff,
+                  unsigned int length) {
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_mio7_led.c b/quad/src/virt_quad/hw_impl_unix_mio7_led.c
new file mode 100644
index 0000000000000000000000000000000000000000..f96fda029e0c0a9664be8bd81e76a93af606e7ba
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_mio7_led.c
@@ -0,0 +1,23 @@
+#include "hw_impl_unix.h"
+
+int on;
+
+int unix_mio7_led_reset(struct LEDDriver *self) {
+  return 0;
+}
+
+int unix_mio7_led_turn_on(struct LEDDriver *self) {
+  if (!on) {
+    puts("LED ON");
+    on = 1;
+  }
+  return 0;
+}
+
+int unix_mio7_led_turn_off(struct LEDDriver *self) {
+  if (on) {
+    puts("LED OFF");
+    on = 0;
+  }
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_pwm_input.c b/quad/src/virt_quad/hw_impl_unix_pwm_input.c
new file mode 100644
index 0000000000000000000000000000000000000000..8881f5f3815f063fb2ce365a6b07c79d7a2eaf44
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_pwm_input.c
@@ -0,0 +1,50 @@
+#include "hw_impl_unix.h"
+
+int unix_pwm_input_reset(struct PWMInputDriver *self) {
+  return 0;
+}
+
+int unix_pwm_input_read(struct PWMInputDriver *self,
+                        unsigned int channel,
+                        unsigned long *pulse_width_us) {
+  static int inc = 0;
+  unsigned long gear;
+
+  switch (channel) {
+  case 0:
+    *pulse_width_us = 100000;
+    break;
+  case 1:
+    *pulse_width_us = 100000;
+    break;
+  case 2:
+    *pulse_width_us = 100000;
+    break;
+  case 3:
+    *pulse_width_us = 100000;
+    break;
+  case 4:
+    if (inc == 0) {
+      inc += 1;
+      puts("GEAR OFF");
+    }
+    if (inc < 20) {
+      inc += 1;
+      gear = 120000;
+    }
+    else if (inc == 20) {
+      puts("GEAR ON");
+      inc += 1;
+    }
+    else {
+      gear = 140000;
+    }
+    *pulse_width_us = gear;
+    break;
+  case 5:
+    // flap 1
+    *pulse_width_us = 192000;
+    break;
+  }
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_pwm_output.c b/quad/src/virt_quad/hw_impl_unix_pwm_output.c
new file mode 100644
index 0000000000000000000000000000000000000000..b549cd4367af0a5ebfe8a50cd7af97e94daf16bb
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_pwm_output.c
@@ -0,0 +1,12 @@
+#include "hw_impl_unix.h"
+
+int unix_pwm_output_reset(struct PWMOutputDriver *self) {
+  return 0;
+}
+
+int unix_pwm_output_write(struct PWMOutputDriver *self,
+                          unsigned int channel,
+                          unsigned long pulse_width_us) {
+  //printf("PWM OUTPUT: %d %d\n", channel, pulse_width_us);
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_system.c b/quad/src/virt_quad/hw_impl_unix_system.c
new file mode 100644
index 0000000000000000000000000000000000000000..27f1a691ee92f46f6be0e029245dfba51bfb9de0
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_system.c
@@ -0,0 +1,14 @@
+#include "hw_impl_unix.h"
+
+int unix_system_reset(struct SystemDriver *sys) {
+  return 0;
+}
+
+int unix_system_sleep(struct SystemDriver *sys, unsigned long us) {
+  struct timespec time;
+  struct timespec time2;
+  time.tv_sec = 0;
+  time.tv_nsec = us * 1000;
+  nanosleep(&time, &time2);
+  return 0;
+}
diff --git a/quad/src/virt_quad/hw_impl_unix_uart.c b/quad/src/virt_quad/hw_impl_unix_uart.c
new file mode 100644
index 0000000000000000000000000000000000000000..f4787939832cd38d781643df1c9cd9d801f311b3
--- /dev/null
+++ b/quad/src/virt_quad/hw_impl_unix_uart.c
@@ -0,0 +1,13 @@
+#include "hw_impl_unix.h"
+
+int unix_uart_reset(struct UARTDriver *self) {
+  return 0;
+}
+
+int unix_uart_write(struct UARTDriver *self, unsigned char c) {
+  return 0;
+}
+
+int unix_uart_read(struct UARTDriver *self, unsigned char *c) {
+  return 0;
+}
diff --git a/quad/src/virt_quad/main.c b/quad/src/virt_quad/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..a87b8013f5037d6a2db5badd74c7166f681e3e8c
--- /dev/null
+++ b/quad/src/virt_quad/main.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include "hw_impl_unix.h"
+#include "quad_app.h"
+
+int setup_hardware(hardware_t *hardware) {
+  hardware->i2c = create_unix_i2c();
+  hardware->pwm_inputs = create_unix_pwm_inputs();
+  hardware->pwm_outputs = create_unix_pwm_outputs();
+  hardware->uart = create_unix_uart();
+  hardware->global_timer = create_unix_global_timer();
+  hardware->axi_timer = create_unix_axi_timer();
+  hardware->mio7_led = create_unix_mio7_led();
+  hardware->sys = create_unix_system();
+  return 0;
+}
+
+int main()
+{
+  quad_main(setup_hardware);
+  return 0;
+}
diff --git a/quad/xsdk_workspace/modular_quad_pid/.cproject b/quad/xsdk_workspace/modular_quad_pid/.cproject
index b6594e32f340de9327b789312fb975bd37009524..05c03615ec7129db44a41ecc02a444864fd121e8 100644
--- a/quad/xsdk_workspace/modular_quad_pid/.cproject
+++ b/quad/xsdk_workspace/modular_quad_pid/.cproject
@@ -108,9 +108,7 @@
 							<tool id="xilinx.gnu.arm.c.toolchain.compiler.release.85270120" name="ARM gcc compiler" superClass="xilinx.gnu.arm.c.toolchain.compiler.release">
 								<option defaultValue="gnu.c.optimization.level.more" id="xilinx.gnu.compiler.option.optimization.level.515686013" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" valueType="enumerated"/>
 								<option id="xilinx.gnu.compiler.option.debugging.level.1121150517" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
-								<option id="xilinx.gnu.compiler.inferred.swplatform.includes.687694973" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath">
-									<listOptionValue builtIn="false" value="../../system_bsp/ps7_cortexa9_0/include"/>
-								</option>
+								<option id="xilinx.gnu.compiler.inferred.swplatform.includes.687694973" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath"/>
 								<option id="xilinx.gnu.compiler.symbols.defined.1562495938" name="Defined symbols (-D)" superClass="xilinx.gnu.compiler.symbols.defined" valueType="definedSymbols">
 									<listOptionValue builtIn="false" value="NDEBUG=1"/>
 								</option>
@@ -119,6 +117,7 @@
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/modular_quad_pid/ext/computation_graph}&quot;"/>
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/modular_quad_pid/ext/quad_app}&quot;"/>
 									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/modular_quad_pid/ext/queue}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/modular_quad_pid/ext/commands}&quot;"/>
 								</option>
 								<inputType id="xilinx.gnu.arm.c.compiler.input.846429887" name="C source files" superClass="xilinx.gnu.arm.c.compiler.input"/>
 							</tool>
diff --git a/quad/xsdk_workspace/modular_quad_pid/.project b/quad/xsdk_workspace/modular_quad_pid/.project
index 7ae4ca25c0f0cd671784aad1590a7cc52299f7f1..e7182be132855e2605c7959795094709746b4d04 100644
--- a/quad/xsdk_workspace/modular_quad_pid/.project
+++ b/quad/xsdk_workspace/modular_quad_pid/.project
@@ -25,6 +25,11 @@
 		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
 	</natures>
 	<linkedResources>
+		<link>
+			<name>ext/commands</name>
+			<type>2</type>
+			<location>/local/ucart/MicroCART_17-18/quad/src/commands</location>
+		</link>
 		<link>
 			<name>ext/computation_graph</name>
 			<type>2</type>
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/commands/subdir.mk b/quad/xsdk_workspace/modular_quad_pid/Release/ext/commands/subdir.mk
new file mode 100644
index 0000000000000000000000000000000000000000..9312d268a581c045387d6d68343633fad393d4a9
--- /dev/null
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/ext/commands/subdir.mk
@@ -0,0 +1,24 @@
+################################################################################
+# Automatically-generated file. Do not edit!
+################################################################################
+
+# Add inputs and outputs from these tool invocations to the build variables 
+C_SRCS += \
+/local/ucart/MicroCART_17-18/quad/src/commands/commands.c 
+
+OBJS += \
+./ext/commands/commands.o 
+
+C_DEPS += \
+./ext/commands/commands.d 
+
+
+# Each subdirectory must supply rules for building sources it contributes
+ext/commands/commands.o: /local/ucart/MicroCART_17-18/quad/src/commands/commands.c
+	@echo 'Building file: $<'
+	@echo 'Invoking: ARM gcc compiler'
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	@echo 'Finished building: $<'
+	@echo ' '
+
+
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/computation_graph/subdir.mk b/quad/xsdk_workspace/modular_quad_pid/Release/ext/computation_graph/subdir.mk
index ded259e8facfb900511409b4c0a7bbc52cb3bc30..6dce6b3f533b61f3a1a0797e31047e15e08f9814 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/ext/computation_graph/subdir.mk
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/ext/computation_graph/subdir.mk
@@ -35,49 +35,49 @@ C_DEPS += \
 ext/computation_graph/computation_graph.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/computation_graph.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/computation_graph/node_accumulator.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/node_accumulator.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/computation_graph/node_add.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/node_add.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/computation_graph/node_constant.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/node_constant.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/computation_graph/node_gain.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/node_gain.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/computation_graph/node_mult.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/node_mult.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/computation_graph/node_pow.o: /local/ucart/MicroCART_17-18/quad/src/computation_graph/node_pow.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/quad_app/subdir.mk b/quad/xsdk_workspace/modular_quad_pid/Release/ext/quad_app/subdir.mk
index e98b994aea2b9cb3a2ba124842a4cf5c74226d9e..49e9e68601913023ef671e6a92544b449bd1cb8d 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/ext/quad_app/subdir.mk
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/ext/quad_app/subdir.mk
@@ -7,7 +7,6 @@ C_SRCS += \
 /local/ucart/MicroCART_17-18/quad/src/quad_app/PID.c \
 /local/ucart/MicroCART_17-18/quad/src/quad_app/actuator_command_processing.c \
 /local/ucart/MicroCART_17-18/quad/src/quad_app/callbacks.c \
-/local/ucart/MicroCART_17-18/quad/src/quad_app/commands.c \
 /local/ucart/MicroCART_17-18/quad/src/quad_app/communication.c \
 /local/ucart/MicroCART_17-18/quad/src/quad_app/control_algorithm.c \
 /local/ucart/MicroCART_17-18/quad/src/quad_app/controllers.c \
@@ -34,7 +33,6 @@ OBJS += \
 ./ext/quad_app/PID.o \
 ./ext/quad_app/actuator_command_processing.o \
 ./ext/quad_app/callbacks.o \
-./ext/quad_app/commands.o \
 ./ext/quad_app/communication.o \
 ./ext/quad_app/control_algorithm.o \
 ./ext/quad_app/controllers.o \
@@ -61,7 +59,6 @@ C_DEPS += \
 ./ext/quad_app/PID.d \
 ./ext/quad_app/actuator_command_processing.d \
 ./ext/quad_app/callbacks.d \
-./ext/quad_app/commands.d \
 ./ext/quad_app/communication.d \
 ./ext/quad_app/control_algorithm.d \
 ./ext/quad_app/controllers.d \
@@ -89,175 +86,168 @@ C_DEPS += \
 ext/quad_app/PID.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/PID.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/actuator_command_processing.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/actuator_command_processing.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/callbacks.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/callbacks.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
-	@echo 'Finished building: $<'
-	@echo ' '
-
-ext/quad_app/commands.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/commands.c
-	@echo 'Building file: $<'
-	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/communication.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/communication.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/control_algorithm.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/control_algorithm.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/controllers.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/controllers.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/conversion.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/conversion.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/iic_utils.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/iic_utils.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/initialize_components.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/initialize_components.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/log_data.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/log_data.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/mio7_led.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/mio7_led.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/new_log_data.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/new_log_data.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/node_bounds.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/node_bounds.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/node_mixer.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/node_mixer.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/node_pid.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/node_pid.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/packet_processing.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/packet_processing.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/quad_app.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/quad_app.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/send_actuator_commands.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/send_actuator_commands.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/sensor.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/sensor.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/sensor_processing.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/sensor_processing.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/timer.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/timer.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/update_gui.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/update_gui.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/user_input.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/user_input.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
 ext/quad_app/util.o: /local/ucart/MicroCART_17-18/quad/src/quad_app/util.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/queue/subdir.mk b/quad/xsdk_workspace/modular_quad_pid/Release/ext/queue/subdir.mk
index f1f9d0801d552b2bcdec436544b890e0720c5f30..1db0d33ebe7dfaff15c3066fedf02ba4672c6320 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/ext/queue/subdir.mk
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/ext/queue/subdir.mk
@@ -17,7 +17,7 @@ C_DEPS += \
 ext/queue/queue.o: /local/ucart/MicroCART_17-18/quad/src/queue/queue.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '
 
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/makefile b/quad/xsdk_workspace/modular_quad_pid/Release/makefile
index 1541d5523584e2da44d62a4297e85fb6d6182adf..58cede132248bbb0e22fcd13434f60059e201748 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/makefile
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/makefile
@@ -12,6 +12,7 @@ RM := rm -rf
 -include ext/queue/subdir.mk
 -include ext/quad_app/subdir.mk
 -include ext/computation_graph/subdir.mk
+-include ext/commands/subdir.mk
 -include subdir.mk
 -include objects.mk
 
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/sources.mk b/quad/xsdk_workspace/modular_quad_pid/Release/sources.mk
index 2ab3ec257c3d1145b8c6781b871c0e3a9e1f6f8d..ecb64bdb4bf690ba72af5a96d30c9ad061382945 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/sources.mk
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/sources.mk
@@ -20,4 +20,5 @@ src \
 ext/queue \
 ext/quad_app \
 ext/computation_graph \
+ext/commands \
 
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/src/subdir.mk b/quad/xsdk_workspace/modular_quad_pid/Release/src/subdir.mk
index 1ea77e8c1f87203439ad7a5f60f37e2828a341cc..4b28de568c73d030492ff8b52b3fad138be18540 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/src/subdir.mk
+++ b/quad/xsdk_workspace/modular_quad_pid/Release/src/subdir.mk
@@ -53,7 +53,7 @@ C_DEPS += \
 src/%.o: ../src/%.c
 	@echo 'Building file: $<'
 	@echo 'Invoking: ARM gcc compiler'
-	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -c -fmessage-length=0 -I../../system_bsp/ps7_cortexa9_0/include -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
+	arm-xilinx-eabi-gcc -DNDEBUG=1 -Wall -O2 -I../../system_bsp/ps7_cortexa9_0/include -I"/local/ucart/MicroCART_17-18/quad/src/computation_graph" -I"/local/ucart/MicroCART_17-18/quad/src/quad_app" -I"/local/ucart/MicroCART_17-18/quad/src/queue" -I"/local/ucart/MicroCART_17-18/quad/src/commands" -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -o "$@" "$<"
 	@echo 'Finished building: $<'
 	@echo ' '