diff --git a/quad/README.md b/quad/README.md
index 8f857b03bcd9bba8e4e76f3617313d0ad7dd2b2d..33deb7170d5f6cf49231ecbc98a10715f7d5cd1d 100644
--- a/quad/README.md
+++ b/quad/README.md
@@ -6,12 +6,17 @@ the quad, and the XSDK main project that runs on the Zybo.
 
 The main quad application is written as a library, and located at:
 ```
-src/quad_app/quad_app.c
+src/quad_app/   ("main" function in quad_app.c)
 ```
 
 The main XSDK project that actually runs on the Zybo is located at:
 ```
-xsdk_workspace/modular_quad_pid/main.c
+xsdk_workspace/real_quad/
+```
+
+We also have a complemetary "virtual quad" to ease testing:
+```
+src/virt_quad/
 ```
 
 ## Building
diff --git a/quad/xsdk_workspace/modular_quad_pid/.cproject b/quad/xsdk_workspace/real_quad/.cproject
similarity index 98%
rename from quad/xsdk_workspace/modular_quad_pid/.cproject
rename to quad/xsdk_workspace/real_quad/.cproject
index f17eeafddf9cc8821dcdd8ee953460b8a2f47b55..e787d278c421ad198fca83ab658206e3fca10d6c 100644
--- a/quad/xsdk_workspace/modular_quad_pid/.cproject
+++ b/quad/xsdk_workspace/real_quad/.cproject
@@ -27,7 +27,7 @@
 							<tool id="xilinx.gnu.arm.c.toolchain.compiler.debug.177835003" name="ARM gcc compiler" superClass="xilinx.gnu.arm.c.toolchain.compiler.debug">
 								<option defaultValue="gnu.c.optimization.level.none" id="xilinx.gnu.compiler.option.optimization.level.1900496019" name="Optimization Level" superClass="xilinx.gnu.compiler.option.optimization.level" value="gnu.c.optimization.level.none" valueType="enumerated"/>
 								<option id="xilinx.gnu.compiler.option.debugging.level.1207856754" name="Debug Level" superClass="xilinx.gnu.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
-								<option id="xilinx.gnu.compiler.inferred.swplatform.includes.2123463819" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes" valueType="includePath"/>
+								<option id="xilinx.gnu.compiler.inferred.swplatform.includes.2123463819" name="Software Platform Include Path" superClass="xilinx.gnu.compiler.inferred.swplatform.includes"/>
 								<option id="xilinx.gnu.compiler.symbols.defined.1696008720" name="Defined symbols (-D)" superClass="xilinx.gnu.compiler.symbols.defined"/>
 								<option id="xilinx.gnu.compiler.dircategory.includes.1211006365" name="Include Paths" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath">
 									<listOptionValue builtIn="false" value="../../system_bsp/ps7_cortexa9_0/include"/>
@@ -114,11 +114,11 @@
 								</option>
 								<option id="xilinx.gnu.compiler.dircategory.includes.1873624761" name="Include Paths" superClass="xilinx.gnu.compiler.dircategory.includes" valueType="includePath">
 									<listOptionValue builtIn="false" value="../../system_bsp/ps7_cortexa9_0/include"/>
-									<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;"/>
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/modular_quad_pid/ext/graph_blocks}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/real_quad/ext/computation_graph}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/real_quad/ext/quad_app}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/real_quad/ext/queue}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/real_quad/ext/commands}&quot;"/>
+									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/real_quad/ext/graph_blocks}&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/.gitignore b/quad/xsdk_workspace/real_quad/.gitignore
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/.gitignore
rename to quad/xsdk_workspace/real_quad/.gitignore
diff --git a/quad/xsdk_workspace/modular_quad_pid/.project b/quad/xsdk_workspace/real_quad/.project
similarity index 98%
rename from quad/xsdk_workspace/modular_quad_pid/.project
rename to quad/xsdk_workspace/real_quad/.project
index 734130fb55d695ee28de0b41cc6b8f0f4bccd05e..656e663a791cc120b54900b1a44f258822da422b 100644
--- a/quad/xsdk_workspace/modular_quad_pid/.project
+++ b/quad/xsdk_workspace/real_quad/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>modular_quad_pid</name>
+	<name>real_quad</name>
 	<comment></comment>
 	<projects>
 		<project>system_bsp</project>
@@ -53,7 +53,7 @@
 	</linkedResources>
 	<filteredResources>
 		<filter>
-			<id>1489164394345</id>
+			<id>0</id>
 			<name></name>
 			<type>10</type>
 			<matcher>
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/ext/commands/subdir.mk b/quad/xsdk_workspace/real_quad/Debug/ext/commands/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/ext/commands/subdir.mk
rename to quad/xsdk_workspace/real_quad/Debug/ext/commands/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/ext/computation_graph/subdir.mk b/quad/xsdk_workspace/real_quad/Debug/ext/computation_graph/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/ext/computation_graph/subdir.mk
rename to quad/xsdk_workspace/real_quad/Debug/ext/computation_graph/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/ext/graph_blocks/subdir.mk b/quad/xsdk_workspace/real_quad/Debug/ext/graph_blocks/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/ext/graph_blocks/subdir.mk
rename to quad/xsdk_workspace/real_quad/Debug/ext/graph_blocks/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/ext/quad_app/subdir.mk b/quad/xsdk_workspace/real_quad/Debug/ext/quad_app/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/ext/quad_app/subdir.mk
rename to quad/xsdk_workspace/real_quad/Debug/ext/quad_app/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/ext/queue/subdir.mk b/quad/xsdk_workspace/real_quad/Debug/ext/queue/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/ext/queue/subdir.mk
rename to quad/xsdk_workspace/real_quad/Debug/ext/queue/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/makefile b/quad/xsdk_workspace/real_quad/Debug/makefile
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/makefile
rename to quad/xsdk_workspace/real_quad/Debug/makefile
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/objects.mk b/quad/xsdk_workspace/real_quad/Debug/objects.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/objects.mk
rename to quad/xsdk_workspace/real_quad/Debug/objects.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/sources.mk b/quad/xsdk_workspace/real_quad/Debug/sources.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/sources.mk
rename to quad/xsdk_workspace/real_quad/Debug/sources.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Debug/src/subdir.mk b/quad/xsdk_workspace/real_quad/Debug/src/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Debug/src/subdir.mk
rename to quad/xsdk_workspace/real_quad/Debug/src/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/commands/subdir.mk b/quad/xsdk_workspace/real_quad/Release/ext/commands/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/ext/commands/subdir.mk
rename to quad/xsdk_workspace/real_quad/Release/ext/commands/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/computation_graph/subdir.mk b/quad/xsdk_workspace/real_quad/Release/ext/computation_graph/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/ext/computation_graph/subdir.mk
rename to quad/xsdk_workspace/real_quad/Release/ext/computation_graph/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/graph_blocks/subdir.mk b/quad/xsdk_workspace/real_quad/Release/ext/graph_blocks/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/ext/graph_blocks/subdir.mk
rename to quad/xsdk_workspace/real_quad/Release/ext/graph_blocks/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/quad_app/subdir.mk b/quad/xsdk_workspace/real_quad/Release/ext/quad_app/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/ext/quad_app/subdir.mk
rename to quad/xsdk_workspace/real_quad/Release/ext/quad_app/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/ext/queue/subdir.mk b/quad/xsdk_workspace/real_quad/Release/ext/queue/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/ext/queue/subdir.mk
rename to quad/xsdk_workspace/real_quad/Release/ext/queue/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/makefile b/quad/xsdk_workspace/real_quad/Release/makefile
similarity index 78%
rename from quad/xsdk_workspace/modular_quad_pid/Release/makefile
rename to quad/xsdk_workspace/real_quad/Release/makefile
index 928243ba307f1025a6d169fd83c3abad121074c9..2038c020623a84db9fa6fd917bf0a8727ed2011f 100644
--- a/quad/xsdk_workspace/modular_quad_pid/Release/makefile
+++ b/quad/xsdk_workspace/real_quad/Release/makefile
@@ -30,29 +30,29 @@ endif
 
 # Add inputs and outputs from these tool invocations to the build variables 
 ELFSIZE += \
-modular_quad_pid.elf.size \
+real_quad.elf.size \
 
 
 # All Target
-all: modular_quad_pid.elf secondary-outputs
+all: real_quad.elf secondary-outputs
 
 # Tool invocations
-modular_quad_pid.elf: $(OBJS) ../src/lscript.ld $(USER_OBJS)
+real_quad.elf: $(OBJS) ../src/lscript.ld $(USER_OBJS)
 	@echo 'Building target: $@'
 	@echo 'Invoking: ARM gcc linker'
-	arm-xilinx-eabi-gcc -Wl,-T -Wl,../src/lscript.ld -L../../system_bsp/ps7_cortexa9_0/lib -o "modular_quad_pid.elf" $(OBJS) $(USER_OBJS) $(LIBS)
+	arm-xilinx-eabi-gcc -Wl,-T -Wl,../src/lscript.ld -L../../system_bsp/ps7_cortexa9_0/lib -o "real_quad.elf" $(OBJS) $(USER_OBJS) $(LIBS)
 	@echo 'Finished building target: $@'
 	@echo ' '
 
-modular_quad_pid.elf.size: modular_quad_pid.elf
+real_quad.elf.size: real_quad.elf
 	@echo 'Invoking: ARM Print Size'
-	arm-xilinx-eabi-size modular_quad_pid.elf  |tee "modular_quad_pid.elf.size"
+	arm-xilinx-eabi-size real_quad.elf  |tee "real_quad.elf.size"
 	@echo 'Finished building: $@'
 	@echo ' '
 
 # Other Targets
 clean:
-	-$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES)$(ELFSIZE)$(S_UPPER_DEPS) modular_quad_pid.elf
+	-$(RM) $(OBJS)$(C_DEPS)$(EXECUTABLES)$(ELFSIZE)$(S_UPPER_DEPS) real_quad.elf
 	-@echo ' '
 
 secondary-outputs: $(ELFSIZE)
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/objects.mk b/quad/xsdk_workspace/real_quad/Release/objects.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/objects.mk
rename to quad/xsdk_workspace/real_quad/Release/objects.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/sources.mk b/quad/xsdk_workspace/real_quad/Release/sources.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/sources.mk
rename to quad/xsdk_workspace/real_quad/Release/sources.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/Release/src/subdir.mk b/quad/xsdk_workspace/real_quad/Release/src/subdir.mk
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/Release/src/subdir.mk
rename to quad/xsdk_workspace/real_quad/Release/src/subdir.mk
diff --git a/quad/xsdk_workspace/modular_quad_pid/ext/__CAUTION__.md b/quad/xsdk_workspace/real_quad/ext/__CAUTION__.md
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/ext/__CAUTION__.md
rename to quad/xsdk_workspace/real_quad/ext/__CAUTION__.md
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.h b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo.h
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo.h
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo.h
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_axi_timer.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_axi_timer.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_axi_timer.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_axi_timer.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_global_timer.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_global_timer.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_global_timer.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_global_timer.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_i2c.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_i2c.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_mio7_led.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_mio7_led.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_mio7_led.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_mio7_led.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_input.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_pwm_input.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_input.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_pwm_input.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_output.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_pwm_output.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_pwm_output.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_pwm_output.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_system.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_system.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_system.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_system.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_uart.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_uart.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_uart.c
rename to quad/xsdk_workspace/real_quad/src/hw_impl_zybo_uart.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/lscript.ld b/quad/xsdk_workspace/real_quad/src/lscript.ld
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/lscript.ld
rename to quad/xsdk_workspace/real_quad/src/lscript.ld
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/main.c b/quad/xsdk_workspace/real_quad/src/main.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/main.c
rename to quad/xsdk_workspace/real_quad/src/main.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/platform.c b/quad/xsdk_workspace/real_quad/src/platform.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/platform.c
rename to quad/xsdk_workspace/real_quad/src/platform.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/platform.h b/quad/xsdk_workspace/real_quad/src/platform.h
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/platform.h
rename to quad/xsdk_workspace/real_quad/src/platform.h
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/platform_config.h b/quad/xsdk_workspace/real_quad/src/platform_config.h
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/src/platform_config.h
rename to quad/xsdk_workspace/real_quad/src/platform_config.h
diff --git a/quad/xsdk_workspace/modular_quad_pid/test/.gitignore b/quad/xsdk_workspace/real_quad/test/.gitignore
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/test/.gitignore
rename to quad/xsdk_workspace/real_quad/test/.gitignore
diff --git a/quad/xsdk_workspace/modular_quad_pid/test/Makefile b/quad/xsdk_workspace/real_quad/test/Makefile
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/test/Makefile
rename to quad/xsdk_workspace/real_quad/test/Makefile
diff --git a/quad/xsdk_workspace/modular_quad_pid/test/test_uart_buff.c b/quad/xsdk_workspace/real_quad/test/test_uart_buff.c
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/test/test_uart_buff.c
rename to quad/xsdk_workspace/real_quad/test/test_uart_buff.c
diff --git a/quad/xsdk_workspace/modular_quad_pid/test/xil_types.h b/quad/xsdk_workspace/real_quad/test/xil_types.h
similarity index 100%
rename from quad/xsdk_workspace/modular_quad_pid/test/xil_types.h
rename to quad/xsdk_workspace/real_quad/test/xil_types.h