diff --git a/parser.c b/parser.c
index dfe573360cb7109b04b082704a10b6b7b72fa803..a819c741f719a406b23a0901709835461f8766ad 100644
--- a/parser.c
+++ b/parser.c
@@ -32,7 +32,7 @@ cons_cell* parse(char* input, int size) {
 		
 		char buff_first[500];
 		strncpy(buff_first, input, first_space_idx);
-		cons_cell* car_cons = parse(buff_first, first_space_idx);
+		cons_cell* car_cons = create_cons_cell_w_atom(buff_first, NULL);
 		char buff_other[500];
 		int next_char = first_space_idx;
 	    while (input[next_char] == ' ' && input[next_char] != NULL) {
@@ -41,7 +41,8 @@ cons_cell* parse(char* input, int size) {
 
 		strncpy(buff_other, input[next_char], size - next_char);
 		cons_cell* cdr_cons = parse(buff_other, size-next_char);
-		return create_cons_cell(car_cons, cdr_cons);
+		car_cons->cdr = cdr_cons;
+		return car_cons;
 	}
 }