diff --git a/src/main/java/common/SpecConfigTTool.java b/src/main/java/common/SpecConfigTTool.java
index 47c20568885d0a618d9b9493baae9a1a6efcf51c..464cebd6789ee0dfefdb7b0855583c2db17e31ca 100644
--- a/src/main/java/common/SpecConfigTTool.java
+++ b/src/main/java/common/SpecConfigTTool.java
@@ -1,5 +1,9 @@
 package common;
 
+import java.io.File;
+
+import myutil.MalformedConfigurationException;
+
 public class SpecConfigTTool {
 	public static String SystemCCodeDirectory="";
 	public static String SystemCCodeCompileCommand="";
@@ -14,6 +18,13 @@ public class SpecConfigTTool {
 	public static String AVATARExecutableCodeCompileCommand="";
 	public static String AVATARExecutableCodeExecuteCommand="";
 	
+	public static String AVATARMPSoCCodeDirectory="";
+	public static String AVATARMPSoCCompileCommand="";
+	public static String AVATARExecutableSoclibCodeCompileCommand="";
+	public static String AVATARExecutableSoclibCodeExecuteCommand="";
+	public static String AVATARExecutableSoclibCodeTraceCommand="";
+	public static String TMLCodeDirectory="";
+	
 	public static void loadConfiguration() {
 		SystemCCodeDirectory = ConfigurationTTool.SystemCCodeDirectory;
 		SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand;
@@ -26,7 +37,43 @@ public class SpecConfigTTool {
 		
 		AVATARExecutableCodeDirectory = ConfigurationTTool.AVATARExecutableCodeDirectory;
 		AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand;
-		AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand;	
+		AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand;
+		
+		AVATARMPSoCCodeDirectory = ConfigurationTTool.AVATARMPSoCCodeDirectory;
+		AVATARMPSoCCompileCommand = ConfigurationTTool.AVATARMPSoCCompileCommand;
+		AVATARExecutableSoclibCodeCompileCommand = ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand;
+		AVATARExecutableSoclibCodeExecuteCommand = ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand;
+		AVATARExecutableSoclibCodeTraceCommand = ConfigurationTTool.AVATARExecutableSoclibCodeTraceCommand;
+		
+		TMLCodeDirectory = ConfigurationTTool.TMLCodeDirectory;
 	}
-
+	
+	public static void setDirConfig(File dir) {
+    	SystemCCodeDirectory = dir.getAbsolutePath() + "/c++_code/";
+    	CCodeDirectory = dir.getAbsolutePath() + "/c_code/";
+    	ProVerifCodeDirectory = dir.getAbsolutePath() + "/proverif/";
+    	AVATARExecutableCodeDirectory = dir.getAbsolutePath() + "/AVATAR_executablecode/";
+    	AVATARMPSoCCodeDirectory = dir.getAbsolutePath() + "/MPSoC/";
+    	TMLCodeDirectory = dir.getAbsolutePath() + "/tmlcode/";
+    	
+    	SystemCCodeCompileCommand = ConfigurationTTool.SystemCCodeCompileCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
+    	SystemCCodeExecuteCommand = ConfigurationTTool.SystemCCodeExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
+    	SystemCCodeInteractiveExecuteCommand = ConfigurationTTool.SystemCCodeInteractiveExecuteCommand.replace(ConfigurationTTool.SystemCCodeDirectory, SystemCCodeDirectory);
+    	
+    	AVATARExecutableCodeExecuteCommand = ConfigurationTTool.AVATARExecutableCodeExecuteCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  AVATARExecutableCodeDirectory);
+    	AVATARExecutableCodeCompileCommand = ConfigurationTTool.AVATARExecutableCodeCompileCommand.replace(ConfigurationTTool.AVATARExecutableCodeDirectory,  AVATARExecutableCodeDirectory);
+    
+    	AVATARMPSoCCompileCommand = ConfigurationTTool.AVATARMPSoCCompileCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+    	AVATARExecutableSoclibCodeCompileCommand = ConfigurationTTool.AVATARExecutableSoclibCodeCompileCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+    	AVATARExecutableSoclibCodeExecuteCommand = ConfigurationTTool.AVATARExecutableSoclibCodeExecuteCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+    	AVATARExecutableSoclibCodeTraceCommand = ConfigurationTTool.AVATARExecutableSoclibCodeTraceCommand.replace(ConfigurationTTool.AVATARMPSoCCodeDirectory, AVATARMPSoCCompileCommand);
+    }
+	
+	public static void setBasicConfig(boolean systemcOn) {
+    	try {
+			ConfigurationTTool.loadConfiguration("./launch_configurations/config.xml", systemcOn);
+		} catch (MalformedConfigurationException e) {
+			System.out.println("Couldn't load configuration from file: config.xml");
+		}
+    }
 }
diff --git a/src/main/java/myutil/FileUtils.java b/src/main/java/myutil/FileUtils.java
index 312a5ecd16d541f0d4ec2d8b1441d858b803a473..6c6363fa9f6fad3efa00f2aad43b18a3f5d1416f 100755
--- a/src/main/java/myutil/FileUtils.java
+++ b/src/main/java/myutil/FileUtils.java
@@ -136,11 +136,13 @@ public class FileUtils extends org.apache.commons.io.FileUtils{
     			File defs = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.defs");
     			File soclib = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "Makefile.forsoclib");
     			File src = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "src");
+    			//File topcell = new File(ConfigurationTTool.AVATARExecutableCodeDirectory + "generated_topcell");
     		
 				FileUtils.copyFileToDirectory(make, f);
 				FileUtils.copyFileToDirectory(defs, f);
 				FileUtils.copyFileToDirectory(soclib, f);
 				FileUtils.copyDirectoryToDirectory(src, f);
+				//FileUtils.copyDirectoryToDirectory(topcell, f);
 			}
     		return true;
     	}
diff --git a/src/main/java/tmltranslator/TMLMappingTextSpecification.java b/src/main/java/tmltranslator/TMLMappingTextSpecification.java
index 283e9492d320b5e3e459b6cc633c3bcbeca41fa1..8a3db1c5b61ed256fb7a931cb5e53ac59eab7739 100755
--- a/src/main/java/tmltranslator/TMLMappingTextSpecification.java
+++ b/src/main/java/tmltranslator/TMLMappingTextSpecification.java
@@ -48,6 +48,7 @@ import myutil.FileUtils;
 import myutil.TraceManager;
 
 import java.io.BufferedReader;
+import java.io.File;
 import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
@@ -87,6 +88,10 @@ public class TMLMappingTextSpecification<E> {
 
     public void saveFile(String path, String filename) throws FileException {
 
+    	File dir = new File(path);
+    	if (!dir.exists())
+    		dir.mkdir();
+    	
         if (tmlmtxt != null) {
             tmlmtxt.saveFile(path, filename + ".tml");
         }
diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java
index 28f5319e48ad0fa64aecb085217c6375d2273e86..1a14a6c10d889cbd309ae8bd93d57433db48a229 100755
--- a/src/main/java/ui/GTURTLEModeling.java
+++ b/src/main/java/ui/GTURTLEModeling.java
@@ -504,7 +504,7 @@ public class GTURTLEModeling {
             spec.toTextFormat( tmap );    //TMLMapping
             try {
                 //TraceManager.addDev( "*** " + ConfigurationTTool.TMLCodeDirectory + File.separator );
-                spec.saveFile( ConfigurationTTool.TMLCodeDirectory + File.separator, "spec" );
+                spec.saveFile( SpecConfigTTool.TMLCodeDirectory, "spec" );
             }
             catch( Exception e ) {
                 TraceManager.addError( "Files could not be saved: " + e.getMessage() );
diff --git a/src/main/java/ui/MainGUI.java b/src/main/java/ui/MainGUI.java
index 5003a67b5e0b26ccb7b86fd5ef37f9198c1a8d01..8995b931009566c5929f9f700f565bfc73312c82 100644
--- a/src/main/java/ui/MainGUI.java
+++ b/src/main/java/ui/MainGUI.java
@@ -2329,37 +2329,20 @@ 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() {
-    	try {
-			ConfigurationTTool.loadConfiguration("./launch_configurations/config.xml", systemcOn);
-		} catch (MalformedConfigurationException e) {
-			System.out.println("Couldn't load configuration from file: config.xml");
-		}
-    }
+    
+    
+    
     public void openProjectFromFile(File _f) {
     	if (FileUtils.getExtension(_f).equals("ttool")) {
     		dir = _f;
-    		setDirConfig();
+    		SpecConfigTTool.setDirConfig(dir);
     		String filename = dir.getAbsolutePath() + "/" + dir.getName().replaceAll(".ttool", ".xml");
     		file = new File(filename);
     	}
     	else {
     		dir = null;
-    		setBasicConfig();
+    		SpecConfigTTool.setBasicConfig(systemcOn);
     		file = _f;
     	}
         
@@ -2450,11 +2433,11 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
             			last = i;
             	}
             	dir = new File(ConfigurationTTool.LastOpenFile.substring(0, last));
-            	this.setDirConfig();
+            	SpecConfigTTool.setDirConfig(dir);
             }
             else {
             	dir = null;
-            	this.setBasicConfig();
+            	SpecConfigTTool.setBasicConfig(systemcOn);
             }
             // close current modeling
             closeTurtleModeling();
@@ -2669,7 +2652,7 @@ public  class MainGUI implements ActionListener, WindowListener, KeyListener, Pe
         	dir = jfc.getSelectedFile();
         	dir = FileUtils.addFileExtensionIfMissing(dir, "ttool");
         	dir.mkdir();
-        	setDirConfig();
+        	SpecConfigTTool.setDirConfig(dir);
         	String newname = FileUtils.removeFileExtension(dir.getName());
             file = new File(dir, newname);
             file = FileUtils.addFileExtensionIfMissing(file, TFileFilter.getExtension());