diff --git a/Makefile b/Makefile
index 358568b955b09611d72e3cd0c9ffd89ae252135c..78270267f8c292d95de00faae50c3fbf0ec8bfd6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,28 +1,26 @@
-all : fact
-
-fact : run.o test.o
-			gcc -g -std=c99 -o fact run.o test.o -lpthread -I${HOME}/local/include -lcunit -L${HOME}/local/lib -lm
+fact : main.o run.o
+			gcc -g -std=c99 -o fact run.o main.o -lpthread
 			
 
+test : test.o run.o
+			gcc -g -std=c99 -o test test.o run.o -lpthread -lcunit && ./test
 
+run.o : run.c run.h
+			gcc -g -std=c99 -o run.o -c run.c -W -Wall -lpthread 
 
-run.o : run.c
-			  gcc -g -std=c99 -o run.o -c run.c -W -Wall -lpthread -lm
+main.o : main.c run.h
+			gcc -g -std=c99 -o main.o -c main.c -W -Wall -lpthread -lm
 
 
 test.o : test.c run.h
-		  gcc -g -std=c99 -o test.o -c test.c -I${HOME}/local/include -W -Wall -lcunit -lpthread -lm 
+		  gcc -g -std=c99 -o test.o -c test.c -I${HOME}/local/include -W -Wall -lcunit -lpthread  
 
 
 clean :
-	rm -rf fact *.o *.xml "actual_output.txt" 
-
-
-test : fact
-		./fact Test
+	rm -rf test fact *.o *.xml "actual_output.txt" "output.txt"
 
-cpp : run.c
-			cppcheck --enable=all run.c
+cpp : run.c test.c
+			cppcheck --enable=all run.c && cppcheck --enable=all test.c
 
 cpp_xml : run.c
 		cppcheck --enable=all --inconclusive --xml --xml-version=2 run.c 2> cppcheck.xml
diff --git a/README.md b/README.md
index 93794955b34676f449b752571f6e9bc3d1d7a3fb..c81bac848a29b44260616a57eaf31a6ec492bc28 100644
--- a/README.md
+++ b/README.md
@@ -8,15 +8,16 @@ Convertir et optimiser un programme python en langage C et retourner les diviseu
 
 ## Fichiers
 * **Makefile** : Permet l'exécution de commandes (compilation du code, exécution des tests).
-* **run.c** : Contient les fonctions du programme ainsi que le *run* pour lancer le programme.
-* **run.h** : Contient la déclaration des fonctions de base du programme. 
-* **test.c** : Contient des tests en CUnit permettant de tester le programme. 
-* **Test_file** : Dossier contenant différents input et output pour divers exemples de nombres (entiers,petits,grands).
+* **run.c** : Contient le corps du code de l'algorithme
+* **run.h** : Contient les signatures des fonctions de run.c.
+* **main.c** : Contient la fonction main du programme principal (run.c).
+* **test.c** : Contient des tests en CUnit permettant de tester les fonctions de run.c. 
+* **Test_files** : Dossier contenant différents input et output pour divers exemples de nombres (entiers,petits,grands).
 
 ## Librairies utilisées
 - Librairies standards en C
 - Librairie pthreads et semaphores: exécution des threads et des semaphores
-- Librairie Cunit: utiliser pour les tests unitaires
+- Librairie Cunit: utilisée pour les tests unitaires
 - Librairie time: calcule le temps d'exécution du programme
 
 
diff --git a/main.c b/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..cec85aa886034747425b2d3e74e60813968d52d3
--- /dev/null
+++ b/main.c
@@ -0,0 +1,24 @@
+#include "run.h"
+
+int main(int argc, char *argv[]){
+
+        if (argc == 5 && strcmp("-N",argv[1])==0){
+            int err = run(argv[3],argv[4],atoi(argv[2]));
+            if (err == -1){return EXIT_FAILURE;}
+             
+        }
+        else
+        {
+            if (argc == 3){
+                
+                int err = run(argv[1],argv[2],4);
+                if (err == -1){return EXIT_FAILURE;}
+            }
+            else{
+                printf("Invalid type of number of arguments, please try again with the right format\n");
+                return EXIT_FAILURE;
+            }
+        }
+        return EXIT_SUCCESS;
+    
+}
\ No newline at end of file
diff --git a/run.c b/run.c
index 82ccb234c82f4123c4a294da82137c19e20ffaf1..1521f5028c4f6e4ddc5107eda8abd45197ea92f9 100755
--- a/run.c
+++ b/run.c
@@ -32,7 +32,6 @@ queue_t *get_from_buffer_2(struct buffer_cw *buf){ // trouver un element
 
     struct queue *result;
     result = buf->tab[buf->tail]; //donne une valeur a result
-    //free(buf->tab[buf->tail]);
     buf->tab[buf->tail] = NULL;
     buf->len--; //diminue l'espace occupé par le buffer
     buf->tail = (buf->tail + 1)%buf->size;
diff --git a/run.h b/run.h
index 9f07197a976bbb2c62339da4410d43c7bbdec269..03363e435979bb3d100f0e475fbe3c3806ecf36d 100644
--- a/run.h
+++ b/run.h
@@ -4,7 +4,6 @@
 #include <unistd.h>
 #include <pthread.h>
 #include <semaphore.h>
-#include <math.h>
 #include <pthread.h>
 #include <semaphore.h>
 
diff --git a/test.c b/test.c
index 54df28794fd151afaf05396f03ec44b160583b4d..598087a6c4d9e5015a7b49a1583a712e85f81b0e 100644
--- a/test.c
+++ b/test.c
@@ -183,65 +183,40 @@ int setup(void){
         return 0;
     }
 
-int main(int argc, char *argv[]){
+int main(){
 
-    if (argc == 2 && strcmp(argv[1],"Test")==0){
-
-        if (CUE_SUCCESS != CU_initialize_registry())
-        {
-            return CU_get_error();
-        }
-
-
-        CU_pSuite pSuite = NULL;
+    if (CUE_SUCCESS != CU_initialize_registry())
+    {
+        return CU_get_error();
+    }
 
-        pSuite = CU_add_suite("ma_suite",setup,teardown);
 
-        if (NULL == pSuite)
-        {
-            CU_cleanup_registry();
-            return CU_get_error();
-        }
+    CU_pSuite pSuite = NULL;
 
-        if (NULL == CU_add_test(pSuite,"test_is_div",test_is_div) ||
-            NULL == CU_add_test(pSuite, "test_is_prime",test_is_prime) ||
-            NULL == CU_add_test(pSuite, "test_is_not_prime",test_is_not_prime) || 
-            NULL == CU_add_test(pSuite,"empty_file_test",empty_file_test) ||
-            NULL == CU_add_test(pSuite,"short_file_test",short_file_test) ||
-            NULL == CU_add_test(pSuite,"file_test : N = 4",file_test_N_4) ||
-            NULL == CU_add_test(pSuite,"file_test N = 1",file_test_N_1))
-        {
-            CU_cleanup_registry();
-            return CU_get_error();
-        }
+    pSuite = CU_add_suite("ma_suite",setup,teardown);
 
-        
-        CU_basic_run_tests();
-        CU_automated_run_tests();
-        CU_basic_show_failures(CU_get_failure_list());
+    if (NULL == pSuite)
+    {
+        CU_cleanup_registry();
+        return CU_get_error();
     }
-    else
+
+    if (NULL == CU_add_test(pSuite,"test_is_div",test_is_div) ||
+        NULL == CU_add_test(pSuite, "test_is_prime",test_is_prime) ||
+        NULL == CU_add_test(pSuite, "test_is_not_prime",test_is_not_prime) || 
+        NULL == CU_add_test(pSuite,"empty_file_test",empty_file_test) ||
+        NULL == CU_add_test(pSuite,"short_file_test",short_file_test) ||
+        NULL == CU_add_test(pSuite,"file_test : N = 4",file_test_N_4) ||
+        NULL == CU_add_test(pSuite,"file_test N = 1",file_test_N_1))
     {
-        if (argc == 5 && strcmp("-N",argv[1])==0){
-            int err = run(argv[3],argv[4],atoi(argv[2]));
-            if (err == -1){return EXIT_FAILURE;}
-            
-            
-        }
-        else
-        {
-            if (argc == 3){
-                
-                int err = run(argv[1],argv[2],4);
-                if (err == -1){return EXIT_FAILURE;}
-            }
-            else{
-                printf("Invalid type of number of arguments, please try again with the right format\n");
-                return EXIT_FAILURE;
-            }
-        }
-        return EXIT_SUCCESS;
+        CU_cleanup_registry();
+        return CU_get_error();
     }
-    return EXIT_SUCCESS;
+
     
-}
\ No newline at end of file
+    CU_basic_run_tests();
+    CU_automated_run_tests();
+    CU_basic_show_failures(CU_get_failure_list());
+
+    return EXIT_SUCCESS;
+}