diff --git a/src/lisp/compiler.dasc b/src/lisp/compiler.dasc
index bc5aec8..32e2713 100644
--- a/src/lisp/compiler.dasc
+++ b/src/lisp/compiler.dasc
@@ -224,6 +224,23 @@
 	return n;
 }
 
+void compile_backquote(struct environment *env, struct local *local,
+                       value_t val, dasm_State **Dst)
+{
+	if (!listp(val))
+	{
+		| mov eax, (val);
+	}
+	else
+	{
+		value_t fsym = car(val),
+			args = cdr(val);
+		int nargs = length(args);
+
+		// TODO
+	}
+}
+
 void compile_expression(struct environment *env, struct local *local,
                         value_t val, dasm_State **Dst)
 {
@@ -311,6 +328,42 @@
 
 			| run_gc;
 		}
+		else if (symstreq(fsym, "quote"))
+		{
+			if (nargs != 1)
+				err("quote should take exactly 1 argument");
+
+			// Simple!
+			| mov eax, (car(args));
+		}
+		else if (symstreq(fsym, "backquote"))
+		{
+			if (nargs != 1)
+				err("backquote should take exactly 1 argument");
+
+			compile_backquote(env, local, car(args), Dst);
+		}
+		else if (symstreq(fsym, "list"))
+		{
+			| push (nil);
+
+			for (int i = nargs - 1; i >= 0; i--)
+			{
+				compile_expression(env, local, elt(args, i), Dst);
+
+				// push the ith item
+				| push eax;
+				// cons the top two stack items
+				| mov ebx, (cons);
+				| call ebx;
+				// remove the stack items from use
+				| add esp, (2 * value_size);
+				// put the new thing on the stack
+				| push eax;
+			}
+
+			| pop eax;
+		}
 		else
 		{
 			struct function *func =
diff --git a/src/lisp/compiler.h b/src/lisp/compiler.h
index 465c9fb..1cbd92d 100644
--- a/src/lisp/compiler.h
+++ b/src/lisp/compiler.h
@@ -56,8 +56,16 @@
 
 void compile_expression(struct environment *env, struct local *local,
                         value_t val, dasm_State **Dst);
+
+/**
+ * Compile a backquoted expression
+ */
+void compile_backquote(struct environment *env, struct local *local,
+                       value_t val, dasm_State **Dst);
+
 void compile_expr_to_func(struct environment *env, char *name, value_t val,
                           dasm_State **Dst);
+
 int nextpc(struct local *local, dasm_State **Dst);
 
 // Local utilities
diff --git a/src/lisp/gc.c b/src/lisp/gc.c
index 2bdac4c..16ec471 100644
--- a/src/lisp/gc.c
+++ b/src/lisp/gc.c
@@ -20,8 +20,6 @@
 		void *pointer = (void *)(value & ~HEAP_MASK);
 		struct alloc *alloc = pointer - sizeof(struct alloc);
 
-		fprintf(stderr, "[ GC ] Marking 0x%p\n", pointer);
-
 		// Only recursively mark if this hasn't been marked yet. i.e. prevent
 		// marking circular references twice
 		if (alloc->mark != gc_mark)
@@ -63,9 +61,6 @@
 		}
 		else
 		{
-			printf("Freeing:\n");
-			printval(alloc_to_value(a), 2);
-
 			// Free and remove from allocation list
 			struct alloc *p = a->prev, *n = a->next;
 			free_aligned(a);
@@ -90,8 +85,6 @@
 
 	gc_mark++;
 
-	fprintf(stderr, "[ GC ] %d (esp 0x%p, ebp 0x%p)\n", gc_mark, esp_p, ebp_p);
-
 	// For every stack frame until the base of the stack
 	while (esp_p < gc_base)
 	{
@@ -111,8 +104,6 @@
 		esp_p += 2;
 	}
 
-	fprintf(stderr, "Marked %d\n", num_marked);
-
 	_sweep();
 }
 
diff --git a/src/lisp/lisp.c b/src/lisp/lisp.c
index 5006aa3..30b2861 100644
--- a/src/lisp/lisp.c
+++ b/src/lisp/lisp.c
@@ -309,7 +309,7 @@
 			symbol = symval("unquote");
 			break;
 		case '@':
-			symbol = symval("splice");
+			symbol = symval("unquote-splice");
 			break;
 		}
 
diff --git a/src/lisp/test.lisp b/src/lisp/test.lisp
index 3c8f9ea..ea78d4f 100644
--- a/src/lisp/test.lisp
+++ b/src/lisp/test.lisp
@@ -11,11 +11,10 @@
     (print a))
 
   ; These allocations should be freed
-  (cons 12 (cons 34 (cons 45 nil)))
+  (list 12 34 56)
+  (list "a" "b" "c" "d")
   
   ; But these should not
   (let1 (unused-but-bound (cons 5 6))
-    (let1 (val (cons 1 (cons 2 (cons 3 nil))))
+    (let1 (val '(a b c d e))
       (calls-gc val))))
-
-'(hello)
\ No newline at end of file
