diff --git a/Makefile b/Makefile
index 376f6e9e5558436e4783bedbd3fc7ec4ed675b95..e5818a10dc1719b91e43b721b03c2e1e1ec5da77 100644
--- a/Makefile
+++ b/Makefile
@@ -1,26 +1,18 @@
-#The compiler
 CC:=gcc
-#The flags passed to the compiler
 CFLAGS:=-g -O3 -Wall -Wextra -fsanitize=address -fsanitize=leak -std=gnu11
-#The flags passed to the linker
 LDFLAGS:=-lm	
 VPATH:=utils utils/vec2 utils/gfx src
+NAME:= draw
+OBJFILES:= vec2.o utils.o field.o draw.o gfx.o
+TESTS:= draw_tests field_tests
 
-main: main.o vec2.o utils.o field.o draw.o gfx.o 
+main: main.o $(OBJFILES)
 	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -lSDL2
 
-tests: vec_tests.o vec2.o
-	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
+all : $(TESTS)
 
-field.o: field.h
-
-draw.o: draw.h
-
-vec2.o: vec2.h
-
-utils.o: utils.h
-
-gfx.o: gfx.h
+$(TESTS): %: %.o $(OBJFILES)
+	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -lSDL2
 
 clean:
-	rm -f *.o main tests
+	rm -f *.o main $(TESTS) tests
diff --git a/src/draw_tests.c b/src/draw_tests.c
new file mode 100644
index 0000000000000000000000000000000000000000..4eba0e1356e801c294ba359993e4c4c4777e40bd
--- /dev/null
+++ b/src/draw_tests.c
@@ -0,0 +1,56 @@
+#include <stdlib.h>
+#include "draw.h"
+
+int main() {
+	struct gfx_context_t* ctxt = gfx_create("main", 100, 100);
+	
+	coordinates_t src = coordinates_create(50, 50);
+	coordinates_t dst = coordinates_create(75, 50);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(72, 62);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(62, 72);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(50, 75);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(38, 72);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(28, 62);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(25, 50);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(28, 38);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(37, 28);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(50, 25);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(62, 28);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(72, 37);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	coordinates_t c = coordinates_create(50, 50);
+	int r = 25;
+	gfx_draw_circle(ctxt, c, r, COLOR_RED);
+
+	while (true) {
+        if (gfx_keypressed() == SDLK_ESCAPE)
+            break;
+
+        gfx_present(ctxt);
+    }
+
+	return EXIT_SUCCESS;
+}
diff --git a/src/field_tests.c b/src/field_tests.c
new file mode 100644
index 0000000000000000000000000000000000000000..4eba0e1356e801c294ba359993e4c4c4777e40bd
--- /dev/null
+++ b/src/field_tests.c
@@ -0,0 +1,56 @@
+#include <stdlib.h>
+#include "draw.h"
+
+int main() {
+	struct gfx_context_t* ctxt = gfx_create("main", 100, 100);
+	
+	coordinates_t src = coordinates_create(50, 50);
+	coordinates_t dst = coordinates_create(75, 50);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(72, 62);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(62, 72);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(50, 75);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(38, 72);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(28, 62);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(25, 50);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(28, 38);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(37, 28);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(50, 25);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(62, 28);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	dst = coordinates_create(72, 37);
+	gfx_draw_line(ctxt, src, dst, COLOR_WHITE);
+
+	coordinates_t c = coordinates_create(50, 50);
+	int r = 25;
+	gfx_draw_circle(ctxt, c, r, COLOR_RED);
+
+	while (true) {
+        if (gfx_keypressed() == SDLK_ESCAPE)
+            break;
+
+        gfx_present(ctxt);
+    }
+
+	return EXIT_SUCCESS;
+}