diff --git a/quad/sw/modular_quad_pid/.clean_app.tcl b/quad/sw/modular_quad_pid/.clean_app.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..c30119a0aed2c7b814c135df11abec9a5e1b1c04
--- /dev/null
+++ b/quad/sw/modular_quad_pid/.clean_app.tcl
@@ -0,0 +1,3 @@
+cd ..
+sdk set_workspace .
+sdk clean_project -type app -name modular_quad_pid
diff --git a/quad/sw/modular_quad_pid/clean.sh b/quad/sw/modular_quad_pid/clean.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c122bd6249df085b47ece05c9e37a45ca05576b2
--- /dev/null
+++ b/quad/sw/modular_quad_pid/clean.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+source /remote/Xilinx/2015.4/SDK/2015.4/settings64.sh
+
+echo "Cleaning modular_quad_pid"
+
+xsct .clean_app.tcl || exit 1
diff --git a/quad/sw/modular_quad_pid/src/Copy of original lscript.ld b/quad/sw/modular_quad_pid/src/application/Copy of original lscript.ld
similarity index 100%
rename from quad/sw/modular_quad_pid/src/Copy of original lscript.ld
rename to quad/sw/modular_quad_pid/src/application/Copy of original lscript.ld
diff --git a/quad/sw/modular_quad_pid/src/PID.c b/quad/sw/modular_quad_pid/src/application/PID.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/PID.c
rename to quad/sw/modular_quad_pid/src/application/PID.c
diff --git a/quad/sw/modular_quad_pid/src/PID.h b/quad/sw/modular_quad_pid/src/application/PID.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/PID.h
rename to quad/sw/modular_quad_pid/src/application/PID.h
diff --git a/quad/sw/modular_quad_pid/src/README.txt b/quad/sw/modular_quad_pid/src/application/README.txt
similarity index 100%
rename from quad/sw/modular_quad_pid/src/README.txt
rename to quad/sw/modular_quad_pid/src/application/README.txt
diff --git a/quad/sw/modular_quad_pid/src/actuator_command_processing.c b/quad/sw/modular_quad_pid/src/application/actuator_command_processing.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/actuator_command_processing.c
rename to quad/sw/modular_quad_pid/src/application/actuator_command_processing.c
diff --git a/quad/sw/modular_quad_pid/src/actuator_command_processing.h b/quad/sw/modular_quad_pid/src/application/actuator_command_processing.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/actuator_command_processing.h
rename to quad/sw/modular_quad_pid/src/application/actuator_command_processing.h
diff --git a/quad/sw/modular_quad_pid/src/callbacks.c b/quad/sw/modular_quad_pid/src/application/callbacks.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/callbacks.c
rename to quad/sw/modular_quad_pid/src/application/callbacks.c
diff --git a/quad/sw/modular_quad_pid/src/callbacks.h b/quad/sw/modular_quad_pid/src/application/callbacks.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/callbacks.h
rename to quad/sw/modular_quad_pid/src/application/callbacks.h
diff --git a/quad/sw/modular_quad_pid/src/cb_default.h b/quad/sw/modular_quad_pid/src/application/cb_default.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/cb_default.h
rename to quad/sw/modular_quad_pid/src/application/cb_default.h
diff --git a/quad/sw/modular_quad_pid/src/application/commands.c b/quad/sw/modular_quad_pid/src/application/commands.c
new file mode 120000
index 0000000000000000000000000000000000000000..efc117542480aa1b1ee8815067055185db94ebe1
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/commands.c
@@ -0,0 +1 @@
+../../../../../groundStation/src/backend/commands.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/application/commands.h b/quad/sw/modular_quad_pid/src/application/commands.h
new file mode 120000
index 0000000000000000000000000000000000000000..35567e1f063992f656c844a0bbdfb11c081cd5ac
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/commands.h
@@ -0,0 +1 @@
+../../../../../groundStation/src/backend/commands.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/communication.c b/quad/sw/modular_quad_pid/src/application/communication.c
similarity index 99%
rename from quad/sw/modular_quad_pid/src/communication.c
rename to quad/sw/modular_quad_pid/src/application/communication.c
index 54922981a642299319903d58893a35cd64b6df2b..3ca5cfeabc13624d1c95d4980d99363adf49afd5 100644
--- a/quad/sw/modular_quad_pid/src/communication.c
+++ b/quad/sw/modular_quad_pid/src/application/communication.c
@@ -1,5 +1,4 @@
 #include "communication.h"
-#include "hardware/hw_iface.h"
 
 #define INTC		XScuGic
 #define COMM_UART_DEVICE_ID		XPAR_PS7_UART_0_DEVICE_ID
diff --git a/quad/sw/modular_quad_pid/src/communication.h b/quad/sw/modular_quad_pid/src/application/communication.h
similarity index 90%
rename from quad/sw/modular_quad_pid/src/communication.h
rename to quad/sw/modular_quad_pid/src/application/communication.h
index df37a8cda88f6af8ea39c321d97b866bd1e3135b..f08470146480da8bdfb8973fd98a137ea31c6a1d 100644
--- a/quad/sw/modular_quad_pid/src/communication.h
+++ b/quad/sw/modular_quad_pid/src/application/communication.h
@@ -5,7 +5,7 @@
 #include "mio7_led.h"
 #include "timer.h"
 #include "commands.h"
-#include "hardware/hw_iface.h"
+#include "hw_iface.h"
 
 int initUartComms();
 void process_received(modular_structs_t *structs);
diff --git a/quad/sw/modular_quad_pid/src/application/computation_graph.c b/quad/sw/modular_quad_pid/src/application/computation_graph.c
new file mode 120000
index 0000000000000000000000000000000000000000..0920eab3594a8c3d8cf4c201305491f920d6eadc
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/computation_graph.c
@@ -0,0 +1 @@
+../../../../computation_graph/src/computation_graph.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/application/computation_graph.h b/quad/sw/modular_quad_pid/src/application/computation_graph.h
new file mode 120000
index 0000000000000000000000000000000000000000..26647919e5bb85ce6b5346780e6f1737c97b9d21
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/computation_graph.h
@@ -0,0 +1 @@
+../../../../computation_graph/src/computation_graph.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/control_algorithm.c b/quad/sw/modular_quad_pid/src/application/control_algorithm.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/control_algorithm.c
rename to quad/sw/modular_quad_pid/src/application/control_algorithm.c
diff --git a/quad/sw/modular_quad_pid/src/control_algorithm.h b/quad/sw/modular_quad_pid/src/application/control_algorithm.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/control_algorithm.h
rename to quad/sw/modular_quad_pid/src/application/control_algorithm.h
diff --git a/quad/sw/modular_quad_pid/src/controllers.c b/quad/sw/modular_quad_pid/src/application/controllers.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/controllers.c
rename to quad/sw/modular_quad_pid/src/application/controllers.c
diff --git a/quad/sw/modular_quad_pid/src/controllers.h b/quad/sw/modular_quad_pid/src/application/controllers.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/controllers.h
rename to quad/sw/modular_quad_pid/src/application/controllers.h
diff --git a/quad/sw/modular_quad_pid/src/conversion.c b/quad/sw/modular_quad_pid/src/application/conversion.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/conversion.c
rename to quad/sw/modular_quad_pid/src/application/conversion.c
diff --git a/quad/sw/modular_quad_pid/src/conversion.h b/quad/sw/modular_quad_pid/src/application/conversion.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/conversion.h
rename to quad/sw/modular_quad_pid/src/application/conversion.h
diff --git a/quad/sw/modular_quad_pid/src/gam.h b/quad/sw/modular_quad_pid/src/application/gam.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/gam.h
rename to quad/sw/modular_quad_pid/src/application/gam.h
diff --git a/quad/sw/modular_quad_pid/src/application/graph_blocks/node_add.c b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_add.c
new file mode 120000
index 0000000000000000000000000000000000000000..81c86c24e0180b81af76ce1e508af4f85cecd9bd
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_add.c
@@ -0,0 +1 @@
+../../../../../computation_graph/src/graph_blocks/node_add.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/application/graph_blocks/node_add.h b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_add.h
new file mode 120000
index 0000000000000000000000000000000000000000..06a06206102e016cece424f16b3e395d8a34447b
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_add.h
@@ -0,0 +1 @@
+../../../../../computation_graph/src/graph_blocks/node_add.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_bounds.c b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_bounds.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/graph_blocks/node_bounds.c
rename to quad/sw/modular_quad_pid/src/application/graph_blocks/node_bounds.c
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_bounds.h b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_bounds.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/graph_blocks/node_bounds.h
rename to quad/sw/modular_quad_pid/src/application/graph_blocks/node_bounds.h
diff --git a/quad/sw/modular_quad_pid/src/application/graph_blocks/node_constant.c b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_constant.c
new file mode 120000
index 0000000000000000000000000000000000000000..a257485842f28f984b06e8b6be57d85aad18f70c
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_constant.c
@@ -0,0 +1 @@
+../../../../../computation_graph/src/graph_blocks/node_constant.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/application/graph_blocks/node_constant.h b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_constant.h
new file mode 120000
index 0000000000000000000000000000000000000000..49fe8948a35094352a0efa7d013e7faca0dedd81
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_constant.h
@@ -0,0 +1 @@
+../../../../../computation_graph/src/graph_blocks/node_constant.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_mixer.c b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_mixer.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/graph_blocks/node_mixer.c
rename to quad/sw/modular_quad_pid/src/application/graph_blocks/node_mixer.c
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_mixer.h b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_mixer.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/graph_blocks/node_mixer.h
rename to quad/sw/modular_quad_pid/src/application/graph_blocks/node_mixer.h
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_pid.c b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_pid.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/graph_blocks/node_pid.c
rename to quad/sw/modular_quad_pid/src/application/graph_blocks/node_pid.c
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_pid.h b/quad/sw/modular_quad_pid/src/application/graph_blocks/node_pid.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/graph_blocks/node_pid.h
rename to quad/sw/modular_quad_pid/src/application/graph_blocks/node_pid.h
diff --git a/quad/sw/modular_quad_pid/src/hardware/hw_iface.h b/quad/sw/modular_quad_pid/src/application/hw_iface.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/hardware/hw_iface.h
rename to quad/sw/modular_quad_pid/src/application/hw_iface.h
diff --git a/quad/sw/modular_quad_pid/src/iic_utils.c b/quad/sw/modular_quad_pid/src/application/iic_utils.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/iic_utils.c
rename to quad/sw/modular_quad_pid/src/application/iic_utils.c
diff --git a/quad/sw/modular_quad_pid/src/iic_utils.h b/quad/sw/modular_quad_pid/src/application/iic_utils.h
similarity index 99%
rename from quad/sw/modular_quad_pid/src/iic_utils.h
rename to quad/sw/modular_quad_pid/src/application/iic_utils.h
index 41673799a1aa5b056825f03ce4d24ed79b71042c..8d2b54596746eb87169f1eaa54a5ada540928b8a 100644
--- a/quad/sw/modular_quad_pid/src/iic_utils.h
+++ b/quad/sw/modular_quad_pid/src/application/iic_utils.h
@@ -18,7 +18,7 @@
 #include "xbasic_types.h"
 #include "xiicps.h"
 #include "type_def.h"
-#include "hardware/hw_iface.h"
+#include "hw_iface.h"
 
 // System configuration registers
 // (Please see Appendix B: System Level Control Registers in the Zybo TRM)
diff --git a/quad/sw/modular_quad_pid/src/initialize_components.c b/quad/sw/modular_quad_pid/src/application/initialize_components.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/initialize_components.c
rename to quad/sw/modular_quad_pid/src/application/initialize_components.c
diff --git a/quad/sw/modular_quad_pid/src/initialize_components.h b/quad/sw/modular_quad_pid/src/application/initialize_components.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/initialize_components.h
rename to quad/sw/modular_quad_pid/src/application/initialize_components.h
diff --git a/quad/sw/modular_quad_pid/src/log_data.c b/quad/sw/modular_quad_pid/src/application/log_data.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/log_data.c
rename to quad/sw/modular_quad_pid/src/application/log_data.c
diff --git a/quad/sw/modular_quad_pid/src/log_data.h b/quad/sw/modular_quad_pid/src/application/log_data.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/log_data.h
rename to quad/sw/modular_quad_pid/src/application/log_data.h
diff --git a/quad/sw/modular_quad_pid/src/application/lscript.ld b/quad/sw/modular_quad_pid/src/application/lscript.ld
new file mode 100644
index 0000000000000000000000000000000000000000..a9e7524bb4b15ca61a3d8c76f6a001e3b4c86e9f
--- /dev/null
+++ b/quad/sw/modular_quad_pid/src/application/lscript.ld
@@ -0,0 +1,284 @@
+/*******************************************************************/
+/*                                                                 */
+/* This file is automatically generated by linker script generator.*/
+/*                                                                 */
+/* Version: Xilinx EDK 14.7 EDK_P.20131013                                */
+/*                                                                 */
+/* Copyright (c) 2010 Xilinx, Inc.  All rights reserved.           */
+/*                                                                 */
+/* Description : Cortex-A9 Linker Script                          */
+/*                                                                 */
+/*******************************************************************/
+
+_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x100000;
+_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x6400000;
+
+_ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024;
+_SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048;
+_FIQ_STACK_SIZE = DEFINED(_FIQ_STACK_SIZE) ? _FIQ_STACK_SIZE : 1024;
+_UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024;
+
+/* Define Memories in the system */
+
+MEMORY
+{
+   ps7_ddr_0_S_AXI_BASEADDR : ORIGIN = 0x00100000, LENGTH = 0x1FF00000
+   ps7_ram_0_S_AXI_BASEADDR : ORIGIN = 0x00000000, LENGTH = 0x00030000
+   ps7_ram_1_S_AXI_BASEADDR : ORIGIN = 0xFFFF0000, LENGTH = 0x0000FE00
+}
+
+/* Specify the default entry point to the program */
+
+ENTRY(_vector_table)
+
+/* Define the sections, and where they are mapped in memory */
+
+SECTIONS
+{
+.text : {
+   *(.vectors)
+   *(.boot)
+   *(.text)
+   *(.text.*)
+   *(.gnu.linkonce.t.*)
+   *(.plt)
+   *(.gnu_warning)
+   *(.gcc_execpt_table)
+   *(.glue_7)
+   *(.glue_7t)
+   *(.vfp11_veneer)
+   *(.ARM.extab)
+   *(.gnu.linkonce.armextab.*)
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.init : {
+   KEEP (*(.init))
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.fini : {
+   KEEP (*(.fini))
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.rodata : {
+   __rodata_start = .;
+   *(.rodata)
+   *(.rodata.*)
+   *(.gnu.linkonce.r.*)
+   __rodata_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.rodata1 : {
+   __rodata1_start = .;
+   *(.rodata1)
+   *(.rodata1.*)
+   __rodata1_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.sdata2 : {
+   __sdata2_start = .;
+   *(.sdata2)
+   *(.sdata2.*)
+   *(.gnu.linkonce.s2.*)
+   __sdata2_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.sbss2 : {
+   __sbss2_start = .;
+   *(.sbss2)
+   *(.sbss2.*)
+   *(.gnu.linkonce.sb2.*)
+   __sbss2_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.data : {
+   __data_start = .;
+   *(.data)
+   *(.data.*)
+   *(.gnu.linkonce.d.*)
+   *(.jcr)
+   *(.got)
+   *(.got.plt)
+   __data_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.data1 : {
+   __data1_start = .;
+   *(.data1)
+   *(.data1.*)
+   __data1_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.got : {
+   *(.got)
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.ctors : {
+   __CTOR_LIST__ = .;
+   ___CTORS_LIST___ = .;
+   KEEP (*crtbegin.o(.ctors))
+   KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors))
+   KEEP (*(SORT(.ctors.*)))
+   KEEP (*(.ctors))
+   __CTOR_END__ = .;
+   ___CTORS_END___ = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.dtors : {
+   __DTOR_LIST__ = .;
+   ___DTORS_LIST___ = .;
+   KEEP (*crtbegin.o(.dtors))
+   KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors))
+   KEEP (*(SORT(.dtors.*)))
+   KEEP (*(.dtors))
+   __DTOR_END__ = .;
+   ___DTORS_END___ = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.fixup : {
+   __fixup_start = .;
+   *(.fixup)
+   __fixup_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.eh_frame : {
+   *(.eh_frame)
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.eh_framehdr : {
+   __eh_framehdr_start = .;
+   *(.eh_framehdr)
+   __eh_framehdr_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.gcc_except_table : {
+   *(.gcc_except_table)
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.mmu_tbl (ALIGN(16384)) : {
+   __mmu_tbl_start = .;
+   *(.mmu_tbl)
+   __mmu_tbl_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.ARM.exidx : {
+   __exidx_start = .;
+   *(.ARM.exidx*)
+   *(.gnu.linkonce.armexidix.*.*)
+   __exidx_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.preinit_array : {
+   __preinit_array_start = .;
+   KEEP (*(SORT(.preinit_array.*)))
+   KEEP (*(.preinit_array))
+   __preinit_array_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.init_array : {
+   __init_array_start = .;
+   KEEP (*(SORT(.init_array.*)))
+   KEEP (*(.init_array))
+   __init_array_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.fini_array : {
+   __fini_array_start = .;
+   KEEP (*(SORT(.fini_array.*)))
+   KEEP (*(.fini_array))
+   __fini_array_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.ARM.attributes : {
+   __ARM.attributes_start = .;
+   *(.ARM.attributes)
+   __ARM.attributes_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.sdata : {
+   __sdata_start = .;
+   *(.sdata)
+   *(.sdata.*)
+   *(.gnu.linkonce.s.*)
+   __sdata_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.sbss (NOLOAD) : {
+   __sbss_start = .;
+   *(.sbss)
+   *(.sbss.*)
+   *(.gnu.linkonce.sb.*)
+   __sbss_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.tdata : {
+   __tdata_start = .;
+   *(.tdata)
+   *(.tdata.*)
+   *(.gnu.linkonce.td.*)
+   __tdata_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.tbss : {
+   __tbss_start = .;
+   *(.tbss)
+   *(.tbss.*)
+   *(.gnu.linkonce.tb.*)
+   __tbss_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.bss (NOLOAD) : {
+   __bss_start = .;
+   *(.bss)
+   *(.bss.*)
+   *(.gnu.linkonce.b.*)
+   *(COMMON)
+   __bss_end = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 );
+
+_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 );
+
+/* Generate Stack and Heap definitions */
+
+.heap (NOLOAD) : {
+   . = ALIGN(16);
+   _heap = .;
+   HeapBase = .;
+   _heap_start = .;
+   . += _HEAP_SIZE;
+   _heap_end = .;
+   HeapLimit = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+.stack (NOLOAD) : {
+   . = ALIGN(16);
+   _stack_end = .;
+   . += _STACK_SIZE;
+   _stack = .;
+   __stack = _stack;
+   . = ALIGN(16);
+   _irq_stack_end = .;
+   . += _STACK_SIZE;
+   __irq_stack = .;
+   _supervisor_stack_end = .;
+   . += _SUPERVISOR_STACK_SIZE;
+   . = ALIGN(16);
+   __supervisor_stack = .;
+   _abort_stack_end = .;
+   . += _ABORT_STACK_SIZE;
+   . = ALIGN(16);
+   __abort_stack = .;
+   _fiq_stack_end = .;
+   . += _FIQ_STACK_SIZE;
+   . = ALIGN(16);
+   __fiq_stack = .;
+   _undef_stack_end = .;
+   . += _UNDEF_STACK_SIZE;
+   . = ALIGN(16);
+   __undef_stack = .;
+} > ps7_ddr_0_S_AXI_BASEADDR
+
+_end = .;
+}
+
diff --git a/quad/sw/modular_quad_pid/src/main.c b/quad/sw/modular_quad_pid/src/application/main.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/main.c
rename to quad/sw/modular_quad_pid/src/application/main.c
diff --git a/quad/sw/modular_quad_pid/src/mio7_led.c b/quad/sw/modular_quad_pid/src/application/mio7_led.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/mio7_led.c
rename to quad/sw/modular_quad_pid/src/application/mio7_led.c
diff --git a/quad/sw/modular_quad_pid/src/mio7_led.h b/quad/sw/modular_quad_pid/src/application/mio7_led.h
similarity index 95%
rename from quad/sw/modular_quad_pid/src/mio7_led.h
rename to quad/sw/modular_quad_pid/src/application/mio7_led.h
index 157a04691d1eac08c1a18f6b1b167eb8e7e531fb..5dd9dc50f1a48cf5b350443255718864d6cac57e 100644
--- a/quad/sw/modular_quad_pid/src/mio7_led.h
+++ b/quad/sw/modular_quad_pid/src/application/mio7_led.h
@@ -10,7 +10,7 @@
  
 #include <stdio.h>
 #include "sleep.h"
-#include "hardware/hw_iface.h"
+#include "hw_iface.h"
 
 /**
  * @brief 
diff --git a/quad/sw/modular_quad_pid/src/new_PID.h b/quad/sw/modular_quad_pid/src/application/new_PID.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/new_PID.h
rename to quad/sw/modular_quad_pid/src/application/new_PID.h
diff --git a/quad/sw/modular_quad_pid/src/new_log_data.c b/quad/sw/modular_quad_pid/src/application/new_log_data.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/new_log_data.c
rename to quad/sw/modular_quad_pid/src/application/new_log_data.c
diff --git a/quad/sw/modular_quad_pid/src/new_log_data.h b/quad/sw/modular_quad_pid/src/application/new_log_data.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/new_log_data.h
rename to quad/sw/modular_quad_pid/src/application/new_log_data.h
diff --git a/quad/sw/modular_quad_pid/src/old_log_data.h b/quad/sw/modular_quad_pid/src/application/old_log_data.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/old_log_data.h
rename to quad/sw/modular_quad_pid/src/application/old_log_data.h
diff --git a/quad/sw/modular_quad_pid/src/packet_processing.c b/quad/sw/modular_quad_pid/src/application/packet_processing.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/packet_processing.c
rename to quad/sw/modular_quad_pid/src/application/packet_processing.c
diff --git a/quad/sw/modular_quad_pid/src/packet_processing.h b/quad/sw/modular_quad_pid/src/application/packet_processing.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/packet_processing.h
rename to quad/sw/modular_quad_pid/src/application/packet_processing.h
diff --git a/quad/sw/modular_quad_pid/src/platform.c b/quad/sw/modular_quad_pid/src/application/platform.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/platform.c
rename to quad/sw/modular_quad_pid/src/application/platform.c
diff --git a/quad/sw/modular_quad_pid/src/platform.h b/quad/sw/modular_quad_pid/src/application/platform.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/platform.h
rename to quad/sw/modular_quad_pid/src/application/platform.h
diff --git a/quad/sw/modular_quad_pid/src/platform_config.h b/quad/sw/modular_quad_pid/src/application/platform_config.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/platform_config.h
rename to quad/sw/modular_quad_pid/src/application/platform_config.h
diff --git a/quad/sw/modular_quad_pid/src/quadposition.h b/quad/sw/modular_quad_pid/src/application/quadposition.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/quadposition.h
rename to quad/sw/modular_quad_pid/src/application/quadposition.h
diff --git a/quad/sw/modular_quad_pid/src/send_actuator_commands.c b/quad/sw/modular_quad_pid/src/application/send_actuator_commands.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/send_actuator_commands.c
rename to quad/sw/modular_quad_pid/src/application/send_actuator_commands.c
diff --git a/quad/sw/modular_quad_pid/src/send_actuator_commands.h b/quad/sw/modular_quad_pid/src/application/send_actuator_commands.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/send_actuator_commands.h
rename to quad/sw/modular_quad_pid/src/application/send_actuator_commands.h
diff --git a/quad/sw/modular_quad_pid/src/sensor.c b/quad/sw/modular_quad_pid/src/application/sensor.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/sensor.c
rename to quad/sw/modular_quad_pid/src/application/sensor.c
diff --git a/quad/sw/modular_quad_pid/src/sensor.h b/quad/sw/modular_quad_pid/src/application/sensor.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/sensor.h
rename to quad/sw/modular_quad_pid/src/application/sensor.h
diff --git a/quad/sw/modular_quad_pid/src/sensor_processing.c b/quad/sw/modular_quad_pid/src/application/sensor_processing.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/sensor_processing.c
rename to quad/sw/modular_quad_pid/src/application/sensor_processing.c
diff --git a/quad/sw/modular_quad_pid/src/sensor_processing.h b/quad/sw/modular_quad_pid/src/application/sensor_processing.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/sensor_processing.h
rename to quad/sw/modular_quad_pid/src/application/sensor_processing.h
diff --git a/quad/sw/modular_quad_pid/src/timer.c b/quad/sw/modular_quad_pid/src/application/timer.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/timer.c
rename to quad/sw/modular_quad_pid/src/application/timer.c
diff --git a/quad/sw/modular_quad_pid/src/timer.h b/quad/sw/modular_quad_pid/src/application/timer.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/timer.h
rename to quad/sw/modular_quad_pid/src/application/timer.h
diff --git a/quad/sw/modular_quad_pid/src/type_def.h b/quad/sw/modular_quad_pid/src/application/type_def.h
similarity index 99%
rename from quad/sw/modular_quad_pid/src/type_def.h
rename to quad/sw/modular_quad_pid/src/application/type_def.h
index 2a9de7fb605fd45166a561e9709d1d02f3cd4a43..5263c31254deca9c6d01bc80841b0a2c81937fba 100644
--- a/quad/sw/modular_quad_pid/src/type_def.h
+++ b/quad/sw/modular_quad_pid/src/application/type_def.h
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #include "commands.h"
 #include "computation_graph.h"
-#include "hardware/hw_iface.h"
+#include "hw_iface.h"
 
 typedef unsigned char u8;
 typedef unsigned short u16;
diff --git a/quad/sw/modular_quad_pid/src/update_gui.c b/quad/sw/modular_quad_pid/src/application/update_gui.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/update_gui.c
rename to quad/sw/modular_quad_pid/src/application/update_gui.c
diff --git a/quad/sw/modular_quad_pid/src/update_gui.h b/quad/sw/modular_quad_pid/src/application/update_gui.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/update_gui.h
rename to quad/sw/modular_quad_pid/src/application/update_gui.h
diff --git a/quad/sw/modular_quad_pid/src/user_input.c b/quad/sw/modular_quad_pid/src/application/user_input.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/user_input.c
rename to quad/sw/modular_quad_pid/src/application/user_input.c
diff --git a/quad/sw/modular_quad_pid/src/user_input.h b/quad/sw/modular_quad_pid/src/application/user_input.h
similarity index 100%
rename from quad/sw/modular_quad_pid/src/user_input.h
rename to quad/sw/modular_quad_pid/src/application/user_input.h
diff --git a/quad/sw/modular_quad_pid/src/util.c b/quad/sw/modular_quad_pid/src/application/util.c
similarity index 100%
rename from quad/sw/modular_quad_pid/src/util.c
rename to quad/sw/modular_quad_pid/src/application/util.c
diff --git a/quad/sw/modular_quad_pid/src/util.h b/quad/sw/modular_quad_pid/src/application/util.h
similarity index 93%
rename from quad/sw/modular_quad_pid/src/util.h
rename to quad/sw/modular_quad_pid/src/application/util.h
index 0039877597432006e1bf5874bba5944f261fcf54..540c15f9aab069bd316e2b7b17e91a37afb525e4 100644
--- a/quad/sw/modular_quad_pid/src/util.h
+++ b/quad/sw/modular_quad_pid/src/application/util.h
@@ -10,7 +10,7 @@
 #include "log_data.h"
 #include <sleep.h>
 #include "controllers.h"
-#include "hardware/hw_iface.h"
+#include "hw_iface.h"
 
 void read_rec_all(struct PWMInputDriver *pwm_input, u32 *mixer);
 int read_kill(int gear);
diff --git a/quad/sw/modular_quad_pid/src/commands.c b/quad/sw/modular_quad_pid/src/commands.c
deleted file mode 120000
index e03a0ea45faafddf983aed9e6bb2eae3b2902ac3..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/commands.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../../groundStation/src/backend/commands.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/commands.h b/quad/sw/modular_quad_pid/src/commands.h
deleted file mode 120000
index b0ff517e5fdb2363f2afda70b29e57aee9fdc663..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/commands.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../../groundStation/src/backend/commands.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/computation_graph.c b/quad/sw/modular_quad_pid/src/computation_graph.c
deleted file mode 120000
index c9f4c52019cf7cf8763b84aa9954a943f37ba2a1..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/computation_graph.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../computation_graph/src/computation_graph.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/computation_graph.h b/quad/sw/modular_quad_pid/src/computation_graph.h
deleted file mode 120000
index eb8fe7bfea6e123f35220c668690d99d290daa72..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/computation_graph.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../computation_graph/src/computation_graph.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_add.c b/quad/sw/modular_quad_pid/src/graph_blocks/node_add.c
deleted file mode 120000
index d7025e0c28ea1028022b77e23924a7734ee55e00..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/graph_blocks/node_add.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../../computation_graph/src/graph_blocks/node_add.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_add.h b/quad/sw/modular_quad_pid/src/graph_blocks/node_add.h
deleted file mode 120000
index 4f4b0ea11eb74e5c45426122afb754f13b098266..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/graph_blocks/node_add.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../../computation_graph/src/graph_blocks/node_add.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_constant.c b/quad/sw/modular_quad_pid/src/graph_blocks/node_constant.c
deleted file mode 120000
index 5091326ebef1cc7c79bc07820f2069960704809d..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/graph_blocks/node_constant.c
+++ /dev/null
@@ -1 +0,0 @@
-../../../../computation_graph/src/graph_blocks/node_constant.c
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/graph_blocks/node_constant.h b/quad/sw/modular_quad_pid/src/graph_blocks/node_constant.h
deleted file mode 120000
index d751234bdd8d5b88435e8c5f49c35bc15e55bbf0..0000000000000000000000000000000000000000
--- a/quad/sw/modular_quad_pid/src/graph_blocks/node_constant.h
+++ /dev/null
@@ -1 +0,0 @@
-../../../../computation_graph/src/graph_blocks/node_constant.h
\ No newline at end of file
diff --git a/quad/sw/modular_quad_pid/src/hardware/hw_impl_zybo.h b/quad/sw/modular_quad_pid/src/hardware/hw_impl_zybo.h
index eb50756d47ee6f041ca51b82ddc37f780cbaa7f9..4128f9339f9600b5f377e14274737808f7d011b0 100644
--- a/quad/sw/modular_quad_pid/src/hardware/hw_impl_zybo.h
+++ b/quad/sw/modular_quad_pid/src/hardware/hw_impl_zybo.h
@@ -1,7 +1,7 @@
 #ifndef HW_IMPL_ZYBO
 #define HW_IMPL_ZYBO
 
-#include "hw_iface.h"
+#include "../application/hw_iface.h"
 
 #include <sleep.h>
 #include <stdlib.h>