diff --git a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
index a3c99b3f09cc88809c7b26b49850f5d328106748..1a70657bab72a4ee0d3c55f376622686fefcdff2 100755
--- a/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
+++ b/src/main/java/avatartranslator/toexecutable/AVATAR2CPOSIX.java
@@ -104,7 +104,12 @@ public class AVATAR2CPOSIX {
     public void saveInFiles(String path) throws FileException {
 
         TraceManager.addDev("Generating files");
-
+        if (!FileUtils.checkAndCreateAVATARDir(path))
+        	throw new FileException("ERROR: Executable code directory cannot be created.");
+        File src_dir = new File(path + GENERATED_PATH);
+        if (!src_dir.exists()) {
+        	src_dir.mkdir();
+        }
         if (mainFile != null) {
             TraceManager.addDev("Generating main files in " + path + mainFile.getName() + ".h");
             FileUtils.saveFile(path + GENERATED_PATH + mainFile.getName() + ".h", Conversion.indentString(mainFile.getHeaderCode(), 2));
diff --git a/src/main/java/common/SpecConfigTTool.java b/src/main/java/common/SpecConfigTTool.java
index 0a8a770e0cf041f2e250c4d9ce12e628ee92e14f..47c20568885d0a618d9b9493baae9a1a6efcf51c 100644
--- a/src/main/java/common/SpecConfigTTool.java
+++ b/src/main/java/common/SpecConfigTTool.java
@@ -5,14 +5,28 @@ public class SpecConfigTTool {
 	public static String SystemCCodeCompileCommand="";
 	public static String SystemCCodeExecuteCommand="";
 	public static String SystemCCodeInteractiveExecuteCommand="";
+	
 	public static String CCodeDirectory="";
 	
+	public static String ProVerifCodeDirectory="";
+	
+	public static String AVATARExecutableCodeDirectory="";
+	public static String AVATARExecutableCodeCompileCommand="";
+	public static String AVATARExecutableCodeExecuteCommand="";
+	
 	public static void loadConfiguration() {
 		SystemCCodeDirectory = ConfigurationTTool.SystemCCodeDirectory;
 		SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand;
 		SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand;
 		SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand;
+		
 		CCodeDirectory = ConfigurationTTool.CCodeDirectory;
+		
+		ProVerifCodeDirectory = ConfigurationTTool.ProVerifCodeDirectory;
+		
+		AVATARExecutableCodeDirectory = ConfigurationTTool.AVATARExecutableCodeDirectory;
+		AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand;
+		AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand;	
 	}
 
 }
diff --git a/src/main/java/myutil/FileUtils.java b/src/main/java/myutil/FileUtils.java
index 31b6698745976242eb40fe9121ca8f76abeff774..312a5ecd16d541f0d4ec2d8b1441d858b803a473 100755
--- a/src/main/java/myutil/FileUtils.java
+++ b/src/main/java/myutil/FileUtils.java
@@ -45,6 +45,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.FilenameFilter;
+import java.io.IOException;
 
 import common.ConfigurationTTool;
 
@@ -89,6 +90,13 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
 	return new File(path).isDirectory();
     }
 
+    /**
+     * Check and create the directory for c++ code generation in DIPLODOCUS
+     * @author Fabien Tessier
+     * @param s directory path
+     * @return true if there's no error, false if the directory cannot be created
+     * @throws FileException
+     */
     public static boolean checkAndCreateDir(String s) throws FileException {
     	File f = new File(s);
     	try {
@@ -99,10 +107,10 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
     			File make = new File(ConfigurationTTool.SystemCCodeDirectory + "Makefile");
     			File defs = new File(ConfigurationTTool.SystemCCodeDirectory + "Makefile.defs");
     			File src = new File(ConfigurationTTool.SystemCCodeDirectory + "src_simulator");
-    			File dir = new File(s);
-    			FileUtils.copyFileToDirectory(make, dir, false);
-    			FileUtils.copyFileToDirectory(defs, dir, false);
-    			FileUtils.copyDirectoryToDirectory(src, dir);
+    			
+    			FileUtils.copyFileToDirectory(make, f, false);
+    			FileUtils.copyFileToDirectory(defs, f, false);
+    			FileUtils.copyDirectoryToDirectory(src, f);
     		}
     		return true;
 		} catch (Exception e) {
@@ -110,6 +118,38 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
 		}
     }
     
+    /**
+     * Check and create the directory for c code generation in AVATAR
+     * @author Fabien Tessier
+     * @param s directory path
+     * @return true if there's no error, false if the directory cannot be created
+     * @throws FileException
+     */
+    public static boolean checkAndCreateAVATARDir(String s) throws FileException {
+    	File f = new File(s);
+    	try {
+    		if (!f.exists())
+    			if(!f.mkdir())
+					return false;
+    		if (!s.equals(ConfigurationTTool.AVATARExecutableCodeDirectory)) {
+    			File make = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile");
+    			File defs = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.defs");
+    			File soclib = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.forsoclib");
+    			File src = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "src");
+    		
+				FileUtils.copyFileToDirectory(make, f);
+				FileUtils.copyFileToDirectory(defs, f);
+				FileUtils.copyFileToDirectory(soclib, f);
+				FileUtils.copyDirectoryToDirectory(src, f);
+			}
+    		return true;
+    	}
+    	catch (IOException e) {
+			throw new FileException(e.getMessage());
+		}
+    	
+    }
+    
     public static boolean checkFileForSave(File file) throws FileException {
         //     boolean ok = true;
         //    String pb = "";
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index 09bb4e54d3ca53bac7ea5b26a669ad3adb7ba41a..5003a67b5e0b26ccb7b86fd5ef37f9198c1a8d01 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -2332,10 +2332,15 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
     public void setDirConfig() {
     	SpecConfigTTool.SystemCCodeDirectory = dir.getAbsolutePath() + "/c++_code/";
     	SpecConfigTTool.CCodeDirectory = dir.getAbsolutePath() + "/c_code/";
+    	SpecConfigTTool.ProVerifCodeDirectory = dir.getAbsolutePath() + "/proverif/";
+    	SpecConfigTTool.AVATARExecutableCodeDirectory = dir.getAbsolutePath() + "/AVATAR_executablecode/";
+    	
     	SpecConfigTTool.SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory);
     	SpecConfigTTool.SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory);
     	SpecConfigTTool.SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SpecConfigTTool.SystemCCodeDirectory);
     	
+    	SpecConfigTTool.AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  SpecConfigTTool.AVATARExecutableCodeDirectory);
+    	SpecConfigTTool.AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  SpecConfigTTool.AVATARExecutableCodeDirectory);
     }
     
     public void setBasicConfig() {
@@ -4247,7 +4252,7 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
             adp = (AvatarDesignPanel) tp;
 			limit=false;
 		}
-        JDialogProverifVerification jgen = new JDialogProverifVerification(frame, this, "Security verification with ProVerif", ConfigurationTTool.ProVerifVerifierHost, ConfigurationTTool.ProVerifCodeDirectory, ConfigurationTTool.ProVerifVerifierPath, adp,limit);
+        JDialogProverifVerification jgen = new JDialogProverifVerification(frame, this, "Security verification with ProVerif", ConfigurationTTool.ProVerifVerifierHost, SpecConfigTTool.ProVerifCodeDirectory, ConfigurationTTool.ProVerifVerifierPath, adp,limit);
         // jgen.setSize(500, 450);
         GraphicLib.centerOnParent(jgen, 500, 450);
         jgen.setVisible(true);
@@ -4274,7 +4279,7 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
 
     public void avatarExecutableCodeGeneration() {
         TraceManager.addDev("Avatar code generation");
-        JDialogAvatarExecutableCodeGeneration jgen = new JDialogAvatarExecutableCodeGeneration(frame, this, "Executable Code generation, compilation and execution", ConfigurationTTool.AVATARExecutableCodeHost, ConfigurationTTool.AVATARExecutableCodeDirectory,  ConfigurationTTool.AVATARExecutableCodeCompileCommand, ConfigurationTTool.AVATARExecutableCodeExecuteCommand, ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand, ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand,  ConfigurationTTool.AVATARExecutableSoclibTraceFile);
+        JDialogAvatarExecutableCodeGeneration jgen = new JDialogAvatarExecutableCodeGeneration(frame, this, "Executable Code generation, compilation and execution", ConfigurationTTool.AVATARExecutableCodeHost, SpecConfigTTool.AVATARExecutableCodeDirectory,  SpecConfigTTool.AVATARExecutableCodeCompileCommand, SpecConfigTTool.AVATARExecutableCodeExecuteCommand, ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand, ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand,  ConfigurationTTool.AVATARExecutableSoclibTraceFile);
         //   jgen.setSize(500, 450);
         GraphicLib.centerOnParent(jgen, 500, 450);
         jgen.setVisible(true);
diff --git a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java
index 0b3222f149788f59a2b66fffbf2e053418e7cd04..4525077f5425699bb1f8385a089851e336dc6267 100644
--- a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java
+++ b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java
@@ -151,15 +151,12 @@ public class JDialogAvatarExecutableCodeGeneration extends javax.swing.JFrame im
         f = _f;
         mgui = _mgui;
 
-        if (pathCode == null) {
-            pathCode = _pathCode;
-        }
 
-        if (pathCompiler == null)
-            pathCompiler = _pathCompiler;
+        pathCode = _pathCode;
+        
+        pathCompiler = _pathCompiler;
 
-        if (pathExecute == null)
-            pathExecute = _pathExecute;
+        pathExecute = _pathExecute;
 
         if (pathCompileSoclib == null) {
             pathCompileSoclib = _pathCompilerSoclib;
diff --git a/src/main/java/ui/window/JDialogProverifVerification.java b/src/main/java/ui/window/JDialogProverifVerification.java
index 7b950da9452b121f345f408e6b8375ca7175b7d9..9a1ba9621e2cfda260c6db5688ffae432b18c6d2 100644
--- a/src/main/java/ui/window/JDialogProverifVerification.java
+++ b/src/main/java/ui/window/JDialogProverifVerification.java
@@ -164,9 +164,8 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
         this.adp = adp;
         this.pvoa = null;
 		this.limit=lim;
-        if (pathCode == null) {
-            pathCode = _pathCode;
-        }
+
+        pathCode = _pathCode;
 
         if (pathExecute == null)
             pathExecute = _pathExecute;
@@ -439,6 +438,8 @@ public class JDialogProverifVerification extends JDialog implements ActionListen
             }
 
             testFile = new File(pathCode);
+            if (!testFile.exists())
+            	testFile.mkdirs();
 
             if (testFile.isDirectory()){
                 pathCode += File.separator;