diff --git a/Makefile b/Makefile
index f22ad6edf53a5438438a10ff3434edad9cda49c7..37e475baed42efc809fd5560badf64f3d4a90da5 100644
--- a/Makefile
+++ b/Makefile
@@ -2,19 +2,21 @@ BINARY=passbook
 
 SRC=src
 BIN=bin
+INCLUDE=$(SRC)/include
 
-VULNS=vuln-1 vuln-2 vuln-3 vuln-4 vuln-5
+VERSIONS=original vuln-1 vuln-2 vuln-3 vuln-4 vuln-5
 
-VBINARIES=$(BINARY) $(VULNS:%=${BINARY}-%)
+VBINARIES=$(VERSIONS:%=%/$(BINARY))
+BIN_TARGETS=$(VBINARIES:%=%-san) $(VBINARIES:%=%-fuzz) $(VBINARIES:%=%-cov)
 
-BIN_TARGETS=$(VBINARIES) $(VBINARIES:%=%-san) $(VBINARIES:%=%-fuzz) $(VBINARIES:%=%-cov)
+BIN_DIRS=$(BIN) $(VERSIONS:%=$(BIN)/%)
 
 TARGETS=$(BIN_TARGETS:%=$(BIN)/%)
 
-HEADERS=$(wildcard $(SRC)/*.h)
+HEADERS=$(wildcard $(INCLUDE)/*.h)
 
 # allow the user to provide additional CFLAGS by doing e.g. CFLAGS=blah make
-CFLAGS += -W -Wall -Wpedantic -Wno-language-extension-token -g
+CFLAGS += -W -Wall -Wpedantic -Wno-language-extension-token -g -I$(INCLUDE)
 
 # allow the user to override what clang we use by doing e.g. CLANG=blah make
 CLANG ?= clang-6.0
@@ -25,9 +27,9 @@ FUZZ_FLAGS ?= -DPASSBOOK_LIBFUZZER -fsanitize=fuzzer,address -fno-omit-frame-poi
 NO_STRICT_OVERFLOW_CFLAGS ?= -fwrapv -fno-strict-overflow -Wstrict-overflow
 COV_FLAGS ?= -fprofile-instr-generate -fcoverage-mapping -DPASSBOOK_FUZZ
 
-default: $(BIN) $(TARGETS)
+default: $(BIN_DIRS) $(TARGETS)
 
-$(BIN):
+$(BIN_DIRS):
 	mkdir -p $@
 
 .PHONY: default
diff --git a/src/debug.h b/src/include/debug.h
similarity index 100%
rename from src/debug.h
rename to src/include/debug.h
diff --git a/src/passbook.c b/src/original/passbook.c
similarity index 100%
rename from src/passbook.c
rename to src/original/passbook.c
diff --git a/src/passbook-vuln-1.c b/src/vuln-1/passbook.c
similarity index 100%
rename from src/passbook-vuln-1.c
rename to src/vuln-1/passbook.c
diff --git a/src/passbook-vuln-2.c b/src/vuln-2/passbook.c
similarity index 100%
rename from src/passbook-vuln-2.c
rename to src/vuln-2/passbook.c
diff --git a/src/passbook-vuln-3.c b/src/vuln-3/passbook.c
similarity index 100%
rename from src/passbook-vuln-3.c
rename to src/vuln-3/passbook.c
diff --git a/src/passbook-vuln-4.c b/src/vuln-4/passbook.c
similarity index 100%
rename from src/passbook-vuln-4.c
rename to src/vuln-4/passbook.c
diff --git a/src/passbook-vuln-5.c b/src/vuln-5/passbook.c
similarity index 100%
rename from src/passbook-vuln-5.c
rename to src/vuln-5/passbook.c