diff --git a/build.txt b/build.txt
index 4a807ed922fedcea1113d042406bc0908c8986a1..0f0df832f27e62585503435b68ac1135eb778b34 100644
--- a/build.txt
+++ b/build.txt
@@ -1,5 +1 @@
-<<<<<<< HEAD
-12360
-=======
-12357
->>>>>>> parent of 23b85be... update on build version: build.txt
+12362
\ No newline at end of file
diff --git a/executablecode/Makefile.src b/executablecode/Makefile.src
index 318ad1aba0dc6c25adff59226637339f0066ad94..fa78915f9679b5cabeae6bffa822fe34d4b875bb 100755
--- a/executablecode/Makefile.src
+++ b/executablecode/Makefile.src
@@ -1 +1 @@
-SRCS = generated_src/main.c generated_src/AlarmActuator.c generated_src/PressureSensor.c generated_src/PressureController.c generated_src/AlarmManager.c generated_src/MainController.c generated_src/Timer__alarmTimer__AlarmManager.c 
\ No newline at end of file
+SRCS = generated_src/main.c generated_src/Wallet.c generated_src/CoffeeMachine.c generated_src/TeaButton.c generated_src/CoffeeButton.c 
\ No newline at end of file
diff --git a/src/main/java/common/ConfigurationTTool.java b/src/main/java/common/ConfigurationTTool.java
index bf9193d5c653e8ec28673776c93ca04b38494a9f..b53531d257c1aba657d5dc296560d17b70bf6362 100755
--- a/src/main/java/common/ConfigurationTTool.java
+++ b/src/main/java/common/ConfigurationTTool.java
@@ -150,6 +150,7 @@ public class ConfigurationTTool {
     //public static String AttackOntologyWebsite = "";
 
     // PLUGINS
+    public static String[] PLUGIN_PKG = new String[0];
     public static String PLUGIN_PATH = "";
     public static String[] PLUGIN = new String[0];
     //public static String PLUGIN_JAVA_CODE_GENERATOR = "";
@@ -467,13 +468,14 @@ public class ConfigurationTTool {
 
 	// Plugins
 	sb.append("\nPlugins:\n");
+	//sb.append("Plugin path: " + PLUGIN_PKG + "\n");
 	sb.append("Plugin path: " + PLUGIN_PATH + "\n");
 	/*sb.append("Plugin for java code generation: " + PLUGIN_JAVA_CODE_GENERATOR + "\n");
 	for (int i=0; i<PLUGIN_GRAPHICAL_COMPONENT.length; i++) {
 	    sb.append("Plugin for graphical component: " + PLUGIN_GRAPHICAL_COMPONENT[i] + "\n");
 	    }*/
 	for (int i=0; i<PLUGIN.length; i++) {
-	    sb.append("Plugin: " + PLUGIN[i] + "\n");
+	    sb.append("Plugin: " + PLUGIN[i] + " package:" + PLUGIN_PKG[i] + "\n");
 	}
 
 	// URL
@@ -1500,10 +1502,12 @@ public class ConfigurationTTool {
 
     private static void Plugin(NodeList nl) throws MalformedConfigurationException {
 	PLUGIN = new String[nl.getLength()];
+	PLUGIN_PKG = new String[nl.getLength()];
         try {
 	    for (int i=0; i<nl.getLength(); i++) {
 		Element elt = (Element)(nl.item(i));
-		PLUGIN[i] = elt.getAttribute("data");
+		PLUGIN[i] = elt.getAttribute("file");
+		PLUGIN_PKG[i] = elt.getAttribute("package");
 	    }
         } catch (Exception e) {
             throw new MalformedConfigurationException(e.getMessage());
diff --git a/src/main/java/myutil/Plugin.java b/src/main/java/myutil/Plugin.java
index 06905f10d1a2bc4b74ae7a48f1429384146d1bb6..f57b22779a22ae87d8bc8fb414b79ebc7697c534 100755
--- a/src/main/java/myutil/Plugin.java
+++ b/src/main/java/myutil/Plugin.java
@@ -58,6 +58,7 @@ import javax.swing.*;
 public class Plugin {
     private String path;
     private String name;
+    private String packageName;
     private File file;
     private HashMap<String, Class> listOfClasses;
     private Class classAvatarCodeGenerator;
@@ -65,9 +66,10 @@ public class Plugin {
     private Class classGraphicalComponent;
     
 
-    public Plugin(String _path, String _name) {
+    public Plugin(String _path, String _name, String _packageName) {
 	path = _path;
         name = _name;
+	packageName = _packageName.trim();
         listOfClasses = new HashMap<String, Class>();
     }
 
@@ -161,8 +163,13 @@ public class Plugin {
                 TraceManager.addDev("Loading plugin=" + path + java.io.File.separator + name);
                 URL[] urls = new URL[] { file.toURI().toURL() };
                 ClassLoader loader = new URLClassLoader(urls);
-                //TraceManager.addDev("Loader created");
-                c = loader.loadClass(_className);
+                //TraceManager.addDev("getClass() Loader created");
+		if ((packageName == null) || (packageName.length() == 0)) {
+		    c = loader.loadClass( _className );
+		} else {
+		    c = loader.loadClass( packageName + "." + _className);
+		}
+                //TraceManager.addDev("getClass() class loaded");
                 if (c == null) {
                     return null;
                 }
@@ -171,7 +178,9 @@ public class Plugin {
             }
 
         } catch (Exception e) {
-	    //TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className);
+            TraceManager.addDev( "getClass()\n" );
+            e.printStackTrace( System.out );
+    	    //TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className);
 	    return null;
         }
 
@@ -184,11 +193,17 @@ public class Plugin {
         try {
             if (c == null) {
                 file = new File(path + java.io.File.separator + name);
-                TraceManager.addDev("Loading plugin=" + path + java.io.File.separator + name);
+                //TraceManager.addDev("Loading plugin=" + path + java.io.File.separator + name);
                 URL[] urls = new URL[] { file.toURI().toURL() };
                 ClassLoader loader = new URLClassLoader(urls);
                 //TraceManager.addDev("Loader created");
-                c = loader.loadClass(_className);
+		if ((packageName == null) || (packageName.length() == 0)) {
+		    c = loader.loadClass( _className );
+		} else {
+		    c = loader.loadClass( packageName + "." + _className);
+		}
+ 
+                //TraceManager.addDev( "Class loaded" );
                 if (c == null) {
                     return null;
                 }
@@ -197,7 +212,8 @@ public class Plugin {
 
             return c.getMethod(_methodName);
         } catch (Exception e) {
-	    //TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className + " and method " + _methodName);
+            //e.printStackTrace( System.out );
+	        TraceManager.addDev("Exception when using plugin " + name + " with className=" + _className + " and method " + _methodName);
 	    return null;
         }
 
diff --git a/src/main/java/myutil/PluginManager.java b/src/main/java/myutil/PluginManager.java
index 240ac7a2e73af5e199bda7c00bc4f2b0cc81879d..791a1fb521a76132886d0c71e0008cf0c1c0514a 100755
--- a/src/main/java/myutil/PluginManager.java
+++ b/src/main/java/myutil/PluginManager.java
@@ -58,15 +58,19 @@ public class PluginManager  {
     public static String PLUGIN_PATH = "";
     
     public ArrayList<Plugin> plugins;
+    public ArrayList<Plugin> pluginPackages;
 
     public PluginManager() {
 	plugins = new ArrayList<Plugin>();
+	pluginPackages = new ArrayList<Plugin>();
     }
 
-    public void preparePlugins(String path, String[] plugins) {
+    public void preparePlugins(String path, String[] plugins, String[] packages) {
 	PLUGIN_PATH = path;
+	int cpt = 0;
 	for(String s: plugins) {
-	    createPlugin(s);
+	    createPlugin(s, packages[cpt]);
+	    cpt ++;
 	}
     }
 
@@ -107,14 +111,14 @@ public class PluginManager  {
 	plugins.add(_plugin);
     }
 
-    public Plugin getPluginOrCreate(String _name) {
+    /*public Plugin getPluginOrCreate(String _name) {
 	Plugin plug = getPlugin(_name);
 	if (plug != null) {
 	    return plug;
 	}
 
 	return createPlugin(_name);
-    }
+	}*/
 
     public Plugin getPlugin(String _name) {
 	for(Plugin plugin: plugins) {
@@ -125,8 +129,8 @@ public class PluginManager  {
 	return null;
     }
 
-    public Plugin createPlugin(String _name) {
-	Plugin plugin = new Plugin(PLUGIN_PATH, _name);
+    public Plugin createPlugin(String _name, String packageName) {
+	Plugin plugin = new Plugin(PLUGIN_PATH, _name, packageName);
 	addPlugin(plugin);
 	return plugin;
     }
@@ -148,9 +152,10 @@ public class PluginManager  {
 	}
     }
     
-    public String executeString(String _pluginName, String _className, String _methodName) {
+    /*public String executeString(String _pluginName, String _className, String _methodName) {
 	Plugin plugin = getPlugin(_pluginName);
 	if (plugin == null) {
+	    // We must find the package of this plugin
 	    plugin = createPlugin(_pluginName);
 	    if (plugin == null) {
 		return null;
@@ -160,7 +165,7 @@ public class PluginManager  {
 	return plugin.executeRetStringMethod(_className, _methodName);
 
 	
-    }
+	}*/
 
 
 
diff --git a/src/main/java/ui/util/DefaultText.java b/src/main/java/ui/util/DefaultText.java
index 723b2e9a1f19eeae0ae5ff7bde642c71f977e508..b73da8680c981f84ed7fe6de68a23d992d724d8f 100755
--- a/src/main/java/ui/util/DefaultText.java
+++ b/src/main/java/ui/util/DefaultText.java
@@ -51,8 +51,8 @@ package ui.util;
  */
 public class DefaultText  {
 
-    public static String BUILD = "12359";
-    public static String DATE = "2017/09/10 02:01:25 CET";
+    public static String BUILD = "12361";
+    public static String DATE = "2017/09/22 17:01:42 CET";
     
     public static StringBuffer sbAbout = makeAbout();
     
diff --git a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java
index 4700b0ebd3a0fb9eb844c6e4f875c78f48d6e5a3..0b3222f149788f59a2b66fffbf2e053418e7cd04 100644
--- a/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java
+++ b/src/main/java/ui/window/JDialogAvatarExecutableCodeGeneration.java
@@ -195,6 +195,11 @@ public class JDialogAvatarExecutableCodeGeneration extends javax.swing.JFrame im
 
     protected void initComponents() {
 
+
+	if (PluginManager.pluginManager.getPluginAvatarCodeGenerator() != null) {
+	    codes[0]  = "AVATAR CPOSIX (with Plugin)";
+	}
+
         Container c = getContentPane();
         setFont(new Font("Helvetica", Font.PLAIN, 14));
         c.setLayout(new BorderLayout());
@@ -603,7 +608,12 @@ public class JDialogAvatarExecutableCodeGeneration extends javax.swing.JFrame im
                     if (avspec == null) {
                         jta.append("Error: No AVATAR specification\n");
                     } else {
+			if (PluginManager.pluginManager.getPluginAvatarCodeGenerator() != null) {
+			    TraceManager.addDev("Using customize Avatar code generator");
+			}
+			
                         AVATAR2CPOSIX avatartocposix = new AVATAR2CPOSIX(avspec, PluginManager.pluginManager.getPluginAvatarCodeGenerator());
+			
                         avatartocposix.includeUserCode(putUserCode.isSelected());
                         avatartocposix.setTimeUnit(selectedUnit);
                         avatartocposix.generateCPOSIX(debugmode.isSelected(), tracemode.isSelected());
diff --git a/src/main/java/ui/window/JDialogCommPatternMapping.java b/src/main/java/ui/window/JDialogCommPatternMapping.java
index f3f546d297dbc883f354c5ebc70e9fb1a0d8b202..98a5eb9a049cf046d4fe9af624a8e68f0cdb2256 100644
--- a/src/main/java/ui/window/JDialogCommPatternMapping.java
+++ b/src/main/java/ui/window/JDialogCommPatternMapping.java
@@ -690,6 +690,7 @@ public class JDialogCommPatternMapping extends JDialog /* implements ActionListe
 		
 		if( cpMEC.equals( "VOID" ) || cpMEC.equals( "" ) )	{
 			cpMECsCB.setSelectedIndex( 0 );
+            cpMEC = CPMEC.MemoryCopy;
 		}
 		else	{
 			cpMECsCB.setSelectedIndex( new Vector<String>( Arrays.asList( CPMEC.CP_TYPES ) ).indexOf( cpMEC ) );
@@ -1457,6 +1458,9 @@ public class JDialogCommPatternMapping extends JDialog /* implements ActionListe
 		cancelled = false;
 		name = nameOfCP.getText();
 		cpMEC = (String)cpMECsCB.getSelectedItem();
+		if( cpMEC.equals( "VOID" ) || cpMEC.equals( "" ) )	{
+            cpMEC = CPMEC.MemoryCopy;
+        }
 		transferType1 = Arrays.asList( CPMEC.TRANSFER_TYPES ).indexOf(transferTypeCB1.getSelectedItem());
 		transferType2 = Arrays.asList( CPMEC.TRANSFER_TYPES ).indexOf(transferTypeCB2.getSelectedItem());
 		
diff --git a/ttool/src/main/java/Main.java b/ttool/src/main/java/Main.java
index f7cd002d139cf88506f004fdcfbbf253b882fe63..f1ca30980f9284c3b22f5a04424fe9b5d4580ffb 100755
--- a/ttool/src/main/java/Main.java
+++ b/ttool/src/main/java/Main.java
@@ -307,7 +307,7 @@ public class Main implements ActionListener {
             splashFrame.setMessage("Preparing plugins");
         }
 	PluginManager.pluginManager = new PluginManager();
-	PluginManager.pluginManager.preparePlugins(ConfigurationTTool.PLUGIN_PATH, ConfigurationTTool.PLUGIN);
+	PluginManager.pluginManager.preparePlugins(ConfigurationTTool.PLUGIN_PATH, ConfigurationTTool.PLUGIN, ConfigurationTTool.PLUGIN_PKG);
 
         if (ConfigurationTTool.LauncherPort.length() > 0) {
             try {