diff --git a/Makefile b/Makefile
index 26000dc..c667e80 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ JARNAME = bakefile.jar
 CLASSP = ./build
 MANIFESTPATH = Manifest.MF
 SOURCEDIR = ./src/
+TESTDIR = ./tests/
 
 SOURCES := $(shell find $(SOURCEDIR) -name '*.java')
 
@@ -14,21 +15,17 @@ all:
 	@make clean
 	@make compile
 	@make jar
-	@make run
 
 compile:
 	@echo "Compiling..."
 	javac -cp $(CLASSP) -d $(BUILDDIR) $(SOURCES) -Xlint:unchecked -Xlint:deprecation
 	@echo "Done."
 
-run:
-	@echo "Running..."
-	java -cp $(CLASSP):$(JARNAME) fr.monlouyan.bakefile.Main
-	@echo "Done."
-
 clean:
 	@echo "Cleaning up..."
 	@rm -rf $(BUILDDIR)* $(DOCDIR)*
+	@rm -f $(JARNAME)
+	@find $(TESTDIR) -name "$(JARNAME)" -delete
 	@echo "Done."
 
 javadoc:
@@ -39,4 +36,10 @@ javadoc:
 jar:
 	@echo "Creating jar..."
 	@jar cfm $(JARNAME) $(MANIFESTPATH) -C $(BUILDDIR) fr/monlouyan/bakefile
+	@echo "Done."
+	@make deploy-tests
+
+deploy-tests:
+	@echo "Deploying JAR to test directories..."
+	@find $(TESTDIR) -type d -exec cp $(JARNAME) {} \;
 	@echo "Done."
\ No newline at end of file
diff --git a/src/fr/monlouyan/bakefile/BakeEngine.java b/src/fr/monlouyan/bakefile/BakeEngine.java
index dc3b1ca..7751a62 100644
--- a/src/fr/monlouyan/bakefile/BakeEngine.java
+++ b/src/fr/monlouyan/bakefile/BakeEngine.java
@@ -12,7 +12,7 @@ public class BakeEngine {
     public BakeEngine(BakeCLI cli) {
         this.cli = cli;
         this.parser = new BakefileParser("Bakefile");
-        this.resolver = new DependencyResolver();
+        this.resolver = new DependencyResolver(cli.isDebug());
         this.executor = new CommandExecutor(cli.isDebug());
     }
     
diff --git a/src/fr/monlouyan/bakefile/BakefileParser.java b/src/fr/monlouyan/bakefile/BakefileParser.java
index ab8a228..07cae52 100644
--- a/src/fr/monlouyan/bakefile/BakefileParser.java
+++ b/src/fr/monlouyan/bakefile/BakefileParser.java
@@ -3,39 +3,71 @@ package fr.monlouyan.bakefile;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class BakefileParser {
     private String filename;
     
+    /**
+     * Regex pour détecter les targets et leurs dépendances.
+     * Format : "nom : dépendance1 dépendance2"
+     */
+    private static final Pattern TARGET_PATTERN = Pattern.compile("^(\\S+)\\s*:\\s*(.*)$");
+
+    /**
+     * Regex pour détecter les lignes de commande associées à une target.
+     * Format : "    gcc -o program program.c" (ligne indentée)
+     */
+    private static final Pattern COMMAND_PATTERN = Pattern.compile("^\\s+(.+)$");
+
     public BakefileParser(String filename) {
         this.filename = filename;
     }
-    
+
     public List<Target> parse() {
         List<Target> targets = new ArrayList<>();
         if (!Files.exists(Paths.get(filename))) {
             System.out.println("*** No targets specified and no makefile found.  Stop.");
             System.exit(1);
         }
-        
+
         try {
             List<String> lines = Files.readAllLines(Paths.get(filename));
+            String currentTarget = null;
+            List<String> dependencies = new ArrayList<>();
+            List<String> commands = new ArrayList<>();
+
             for (String line : lines) {
-                if (line.contains(":")) {
-                    String[] parts = line.split(":");
-                    String name = parts[0].trim();
-                    String[] deps = parts[1].trim().split(" ");
-                    System.out.println("Target found: " + name + " with dependencies " + Arrays.toString(deps));
-                    targets.add(new Target(name, Arrays.asList(deps), "gcc -o " + name + " " + name + ".c"));
+                Matcher targetMatcher = TARGET_PATTERN.matcher(line);
+                Matcher commandMatcher = COMMAND_PATTERN.matcher(line);
+
+                if (targetMatcher.matches()) {
+                    // Sauvegarde de la précédente target si elle existe
+                    if (currentTarget != null) {
+                        targets.add(new Target(currentTarget, dependencies, String.join(" && ", commands)));
+                    }
+
+                    // Nouvelle target détectée
+                    currentTarget = targetMatcher.group(1);
+                    dependencies = new ArrayList<>(Arrays.asList(targetMatcher.group(2).trim().split("\\s+")));
+                    commands = new ArrayList<>();
+
+                } else if (commandMatcher.matches()) {
+                    // Ligne de commande associée à la dernière target trouvée
+                    commands.add(commandMatcher.group(1));
                 }
             }
+
+            // Ajout de la dernière target après la boucle
+            if (currentTarget != null) {
+                targets.add(new Target(currentTarget, dependencies, String.join(" && ", commands)));
+            }
+
         } catch (IOException e) {
             e.printStackTrace();
         }
         return targets;
-    }    
-    
-}
\ No newline at end of file
+    }
+}
diff --git a/src/fr/monlouyan/bakefile/CommandExecutor.java b/src/fr/monlouyan/bakefile/CommandExecutor.java
index 5341282..dd37dfc 100644
--- a/src/fr/monlouyan/bakefile/CommandExecutor.java
+++ b/src/fr/monlouyan/bakefile/CommandExecutor.java
@@ -10,9 +10,12 @@ public class CommandExecutor {
     }
     
     public void execute(Target target) {
-        if (!target.needsUpdate()) return;
+        if (!target.needsUpdate()){
+            System.out.println("bake: '" + target.getName() + "' is up to date.");
+            return;
+        };
         try {
-            System.out.println("Executing: " + target.getCommand());
+            System.out.println(target.getCommand());
             ProcessBuilder pb = new ProcessBuilder("sh", "-c", target.getCommand());
             Process process = pb.start();
             int exitCode = process.waitFor();
diff --git a/src/fr/monlouyan/bakefile/DependencyResolver.java b/src/fr/monlouyan/bakefile/DependencyResolver.java
index 2dfd0ab..133d492 100644
--- a/src/fr/monlouyan/bakefile/DependencyResolver.java
+++ b/src/fr/monlouyan/bakefile/DependencyResolver.java
@@ -4,10 +4,19 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class DependencyResolver {
+    private boolean debug;
+
+    public DependencyResolver(boolean debug) {
+        this.debug = debug;
+    }
+
     public List<Target> resolve(List<Target> allTargets, List<String> requestedTargets) {
         List<Target> targetsToBuild = new ArrayList<>();
         for (Target target : allTargets) {
             if (requestedTargets.isEmpty() || requestedTargets.contains(target.getName())) {
+                if (debug){
+                    System.out.println("Target " + target.getName() + " is requested");
+                }
                 targetsToBuild.add(target);
             }
         }
diff --git a/src/fr/monlouyan/bakefile/Main.java b/src/fr/monlouyan/bakefile/Main.java
index 8e571f7..9bc4c09 100755
--- a/src/fr/monlouyan/bakefile/Main.java
+++ b/src/fr/monlouyan/bakefile/Main.java
@@ -16,7 +16,6 @@ public class Main{
      * @return void
      */
     public static void main(String[] args){
-        System.out.println("Bakefile v1.0");
         BakeCLI cli = new BakeCLI(args);
         BakeEngine engine = new BakeEngine(cli);
         engine.run();
diff --git a/tests/test-02-existe-deja/Bakefile b/tests/test-02-existe-deja/Bakefile
index 4e0e544..d698de6 100644
--- a/tests/test-02-existe-deja/Bakefile
+++ b/tests/test-02-existe-deja/Bakefile
@@ -1,2 +1,2 @@
 main: main.c
-    gcc -o main main.c
\ No newline at end of file
+	gcc -o main main.c
diff --git a/tests/test-02-existe-deja/main b/tests/test-02-existe-deja/main
index 47ca4d5..a65d3dd 100755
Binary files a/tests/test-02-existe-deja/main and b/tests/test-02-existe-deja/main differ
diff --git a/tests/test-02-existe-deja/main.c b/tests/test-02-existe-deja/main.c
index 145de7a..dee38e7 100644
--- a/tests/test-02-existe-deja/main.c
+++ b/tests/test-02-existe-deja/main.c
@@ -2,5 +2,6 @@
 
 int main(void) {
     printf("Ceci est un programme de test du Bakefile !\n");
+    printf("test\n");
     return 0;
 }