diff --git a/executablecode/Makefile.src b/executablecode/Makefile.src
index 088957cb277268d352937def1004e415399a44fb..28b9acb23f0af46aef4caec4f72c265800a703d3 100755
--- a/executablecode/Makefile.src
+++ b/executablecode/Makefile.src
@@ -1 +1 @@
-SRCS = generated_src/main.c generated_src/Periodic.c 
\ No newline at end of file
+SRCS = generated_src/main.c generated_src/ObserverProp1.c generated_src/RemotelyControlledMicrowave.c generated_src/RemoteControl.c generated_src/MicroWaveOven.c generated_src/Bell.c generated_src/ControlPanel.c generated_src/Controller.c generated_src/Magnetron.c generated_src/Door.c generated_src/WirelessInterface.c 
\ No newline at end of file
diff --git a/src/avatartranslator/toexecutable/AVATAR2CPOSIX.java b/src/avatartranslator/toexecutable/AVATAR2CPOSIX.java
index 1ac5562a8dbb15ad05d32758a7cd4e205631dda5..5dd97e95f066674d394ff882cc3c22a94a646326 100755
--- a/src/avatartranslator/toexecutable/AVATAR2CPOSIX.java
+++ b/src/avatartranslator/toexecutable/AVATAR2CPOSIX.java
@@ -135,7 +135,9 @@ public class AVATAR2CPOSIX {
 		
 		
 		if (avspec.hasApplicationCode()) {
+			mainFile.appendToBeforeMainCode("/* User code */\n");
 			mainFile.appendToBeforeMainCode(avspec.getApplicationCode());
+			mainFile.appendToBeforeMainCode("\n/* End of User code */\n\n");
 		}
 		
 		makeMainMutex();
diff --git a/src/ui/AvatarDesignPanelTranslator.java b/src/ui/AvatarDesignPanelTranslator.java
index fcbc3da5e3480878cb3378931b8d5139c78e7fce..ca2163f572179e8166c4f39c17debbce97be6161 100644
--- a/src/ui/AvatarDesignPanelTranslator.java
+++ b/src/ui/AvatarDesignPanelTranslator.java
@@ -98,6 +98,14 @@ public class AvatarDesignPanelTranslator {
 		
 		blocks.addAll(_blocks);
 		AvatarSpecification as = new AvatarSpecification("avatarspecification", adp);
+		
+		if (adp != null) {
+			AvatarBDPanel abdp = adp.getAvatarBDPanel();
+			if (abdp != null) {
+				as.addApplicationCode(abdp.getMainCode());
+			}
+		}
+		
 		createBlocks(as, blocks);
 		createRelationsBetweenBlocks(as, blocks);
 		makeBlockStateMachines(as);
diff --git a/src/ui/GTURTLEModeling.java b/src/ui/GTURTLEModeling.java
index baa23d93780e036eb990315132c260f15814be35..be1a13de1db5b02e85cfad8f4607a0167d01b5ff 100755
--- a/src/ui/GTURTLEModeling.java
+++ b/src/ui/GTURTLEModeling.java
@@ -3960,6 +3960,11 @@ public class GTURTLEModeling {
 		if (tdp instanceof TMLArchiDiagramPanel) {
 			((TMLArchiDiagramPanel)tdp).loadExtraParameters(elt);
 		}
+		
+		
+		if (tdp instanceof AvatarBDPanel) {
+			((AvatarBDPanel)tdp).loadExtraParameters(elt);
+		}
 
 		//TraceManager.addDev("Element" + elt.toString());
 		// Loads components of the class diagram
diff --git a/src/ui/avatarbd/AvatarBDBlock.java b/src/ui/avatarbd/AvatarBDBlock.java
index 9776497159208d3722e3f7df62bcd9a1a2dd3575..f0946a57356e5f708de2fce36afa8d783c6bf1c9 100644
--- a/src/ui/avatarbd/AvatarBDBlock.java
+++ b/src/ui/avatarbd/AvatarBDBlock.java
@@ -497,9 +497,14 @@ public class AvatarBDBlock extends TGCScalableWithInternalComponent implements S
 			}
 		}
 		
-		JDialogAvatarBlock jdab = new JDialogAvatarBlock(myAttributes, myMethods, mySignals, null, frame, "Setting attributes of " + value, "Attribute", tab, globalCode, true);
+		String mainCode = null;
+		TDiagramPanel ttdp = getTDiagramPanel();
+		if (ttdp instanceof AvatarBDPanel) {
+			mainCode = ((AvatarBDPanel)(ttdp)).getMainCode();
+		}
+		JDialogAvatarBlock jdab = new JDialogAvatarBlock(myAttributes, myMethods, mySignals, null, frame, "Setting attributes of " + value, "Attribute", tab, globalCode, true, mainCode);
         setJDialogOptions(jdab);
-        jdab.setSize(650, 375);
+        jdab.setSize(650, 575);
         GraphicLib.centerOnParent(jdab);
         jdab.setVisible(true); // blocked until dialog has been closed
         //makeValue();
@@ -509,6 +514,10 @@ public class AvatarBDBlock extends TGCScalableWithInternalComponent implements S
         
         if (!jdab.hasBeenCancelled()) {
         	globalCode = jdab.getGlobalCode();
+        	String tmp = jdab.getMainCode();
+        	if (tmp != null) {
+        		((AvatarBDPanel)(ttdp)).setMainCode(tmp);
+        	}
         }
         
 		((AvatarBDPanel)tdp).updateAllSignalsOnConnectors();
diff --git a/src/ui/avatarbd/AvatarBDDataType.java b/src/ui/avatarbd/AvatarBDDataType.java
index f2c236f8a9d352536458b6ebbc9241a15d3cb376..b464e0e82d542be0ff98bd557d4dafb77c05c4fe 100644
--- a/src/ui/avatarbd/AvatarBDDataType.java
+++ b/src/ui/avatarbd/AvatarBDDataType.java
@@ -330,9 +330,9 @@ public class AvatarBDDataType extends TGCScalableWithInternalComponent  {
 		
 		// And so -> attributes!
 		
-		JDialogAvatarBlock jdab = new JDialogAvatarBlock(myAttributes, null, null, null, frame, "Setting attributes of " + value, "Attribute", 0, null, false);
+		JDialogAvatarBlock jdab = new JDialogAvatarBlock(myAttributes, null, null, null, frame, "Setting attributes of " + value, "Attribute", 0, null, false, null);
         setJDialogOptions(jdab);
-        jdab.setSize(650, 375);
+        jdab.setSize(650, 575);
         GraphicLib.centerOnParent(jdab);
         jdab.setVisible(true); // blocked until dialog has been closed
         //makeValue();
diff --git a/src/ui/avatarbd/AvatarBDPanel.java b/src/ui/avatarbd/AvatarBDPanel.java
index 32db963bd62ad2b6f2c88f25ffd657238c2ae870..bf131b64f70d79086a11718ce1c61c1b6e59029b 100644
--- a/src/ui/avatarbd/AvatarBDPanel.java
+++ b/src/ui/avatarbd/AvatarBDPanel.java
@@ -56,14 +56,31 @@ import java.util.*;
 import myutil.*;
 
 public class AvatarBDPanel extends TDiagramPanel {
+	
+	private static final String DEFAULT_MAIN = "void __user_init() {\n}\n\n";
+	
+	private String mainCode;
+	
     
     public  AvatarBDPanel(MainGUI mgui, TToolBar _ttb) {
         super(mgui, _ttb);
+        mainCode = DEFAULT_MAIN;
         /*TDiagramMouseManager tdmm = new TDiagramMouseManager(this);
         addMouseListener(tdmm);
         addMouseMotionListener(tdmm);*/
     }
     
+    public void setMainCode(String s) {
+    	if (s == null) {
+    		s = "";
+    	}
+    	mainCode = s;
+    }
+    
+    public String getMainCode() {
+    	return mainCode;
+    }
+    
     public boolean actionOnDoubleClick(TGComponent tgc) {
         //System.out.println("Action");
         if (tgc instanceof AvatarBDBlock) {
@@ -117,7 +134,7 @@ public class AvatarBDPanel extends TDiagramPanel {
     }
     
     public String getXMLHead() {
-        return "<AVATARBlockDiagramPanel name=\"" + name + "\"" + sizeParam() + displayParam() +" >";
+        return "<AVATARBlockDiagramPanel name=\"" + name + "\"" + sizeParam()  +" >\n" + displayParam();
     }
     
     public String getXMLTail() {
@@ -186,300 +203,49 @@ public class AvatarBDPanel extends TDiagramPanel {
     
     public String displayParam() {
         String s = "";
-        /*if (channelsVisible) {
-            s += " channels=\"true\"";
-        } else {
-            s += " channels=\"false\"";
-        }
-        if (eventsVisible) {
-            s += " events=\"true\"";
-        } else {
-            s += " events=\"false\"";
-        }
-        if (requestsVisible) {
-            s += " requests=\"true\"";
-        } else {
-            s += " requests=\"false\"";
-        }*/
-        
-        return s;
-    }
-    
-    /*public boolean isConnectedToTasks(TMLCompositionOperator co) {
-        if ((getTask1ToWhichIamConnected(co) != null) && (getTask2ToWhichIamConnected(co) != null)) {
-            return true;
-        }
-        return false;
-    }
-    
-    public TMLTaskInterface getTask1ToWhichIamConnected(TMLCompositionOperator co) {
-        TGConnectorTMLAssociationNav tgctmlan = getTGConnectorAssociationOf(co);
-        TGComponent tgc;
-        //System.out.println("tmlan t1?");
-        if (tgctmlan != null) {
-            //System.out.println("tmlan found t1");
-            tgc = getTopComponentToWhichBelongs(tgctmlan.getTGConnectingPointP1());
-            if ((tgc != null) && (tgc instanceof TMLTaskInterface)) {
-                return (TMLTaskInterface) tgc;
-            }
-        }
-        return null;
-    }
-    
-    public TMLTaskInterface getTask2ToWhichIamConnected(TMLCompositionOperator co) {
-        TGConnectorTMLAssociationNav tgctmlan = getTGConnectorAssociationOf(co);
-        TGComponent tgc;
-        //System.out.println("tmlan t2?");
-        if (tgctmlan != null) {
-            //System.out.println("tmlan found t2");
-            tgc = getTopComponentToWhichBelongs(tgctmlan.getTGConnectingPointP2());
-            if ((tgc != null) && (tgc instanceof TMLTaskInterface)) {
-                return (TMLTaskInterface) tgc;
-            }
-        }
-        return null;
-    }
-    
-    public TGConnectorTMLAssociationNav getTGConnectorAssociationOf(TMLCompositionOperator tcd) {
-        int i;
-        TGConnectingPoint p1, p2;
-        TGConnector tgco;
-        TGConnectorTMLCompositionOperator tgcoco;
-        TGComponent tgc;
-        
-        for(i=0; i<tcd.getNbConnectingPoint(); i++) {
-            //System.out.println("titi");
-            p1 = tcd.tgconnectingPointAtIndex(i);
-            tgco = getConnectorConnectedTo(p1);
-            if (tgco != null) {
-                //System.out.println("Found tgco");
-            }
-            if ((tgco != null) && (tgco instanceof TGConnectorTMLCompositionOperator)){
-                //System.out.println("toto");
-                tgcoco = (TGConnectorTMLCompositionOperator)tgco;
-                if (p1 == tgcoco.getTGConnectingPointP1()) {
-                    p2 = tgcoco.getTGConnectingPointP2();
-                } else {
-                    p2 = tgcoco.getTGConnectingPointP1();
-                }
-                
-                // p2 now contains the connecting point of a association
-                tgc = getComponentToWhichBelongs(p2);
-                if ((tgc != null) && (!p2.isFree()) && (tgc instanceof TGConnectorTMLAssociationNav)) {
-                     //System.out.println("tutu");
-                    return (TGConnectorTMLAssociationNav)tgc;
-                }
-            }
-        }
-        return null;
-    }
-    
-    public boolean connectedToVisible(TGConnectorTMLAssociationNav tgconav) {
-        TGConnectorTMLCompositionOperator tgcoco = tgconav.getTGConnectorTMLCompositionOperator();
-        if (tgcoco == null) {
-            return true;
-        }
-        return connectedToVisible(tgcoco);
-    }
-    
-    public boolean connectedToVisible(TGConnectorTMLCompositionOperator tgcoco) {
-        TGConnectingPoint p2 = tgcoco.getTGConnectingPointP2();
-        TGComponent tgc = getComponentToWhichBelongs(p2);
-        if (tgc instanceof TMLCompositionOperator) {
-            return ((TMLCompositionOperator)tgc).isToggledVisible();
-        }
-        return false;
-    }
-    
-    /*public void makePostLoadingProcessing() throws MalformedModelingException {
-        TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
+        String [] tmp =  Conversion.wrapText(mainCode);
         
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TCDTObject) {
-                ((TCDTObject)tgc).postLoadingProcessing();
-            }
+        for(int i=0; i<tmp.length; i++) {
+        	s += "<MainCode value=\"" + GTURTLEModeling.transformString(tmp[i]) + "\"/>\n";
         }
+       
+        return s;
     }
     
-    public TCDTData findTData(String name) {
-        TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
-        
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TCDTData) {
-                if (tgc.getValue().equals(name)) {
-                    return (TCDTData)tgc;
-                }
-            }
-        }
-        
-        return null;
-    }
-    
-    public TCDTClass getTCDTClass(String name) {
-        TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
-        
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TCDTClass) {
-                if (((TCDTClass)tgc).getClassName().equals(name)) {
-                    return (TCDTClass)tgc;
-                }
-            }
-        }
-        
-        return null;
-    }
-    
-    public boolean areAllVisible() {
-        return channelsVisible && eventsVisible && requestsVisible;
-    }
-    
-    public boolean areChannelsVisible() {
-        return channelsVisible;
-    }
-    
-    public boolean areEventsVisible() {
-        return eventsVisible;
-    }
-    
-    public boolean areRequestsVisible() {
-        return requestsVisible;
-    }
-    
-    public void setChannelsVisible(boolean b) {
-        channelsVisible = b;
-    }
     
-    public void setEventsVisible(boolean b) {
-        eventsVisible = b;
-    }
-    
-    public void setRequestsVisible(boolean b) {
-        requestsVisible = b;
-    }*/
+  
     
     public void loadExtraParameters(Element elt) {
         String s;
-        //System.out.println("Extra parameter");
-        /*try {
-            s = elt.getAttribute("channels");
-            //System.out.println("S=" + s);
-            if (s.compareTo("false") ==0) {
-                setChannelsVisible(false);
-            } else {
-                setChannelsVisible(true);
-            }
-            s = elt.getAttribute("events");
-            if (s.compareTo("false") ==0) {
-                setEventsVisible(false);
-            } else {
-                setEventsVisible(true);
-            }
-            s = elt.getAttribute("requests");
-            if (s.compareTo("false") ==0) {
-                setRequestsVisible(false);
-            } else {
-                setRequestsVisible(true);
-            }
-            
-        } catch (Exception e) {
-            // Model was saved in an older version of TTool
-            //System.out.println("older format");
-            setChannelsVisible(true);
-            setEventsVisible(true);
-            setRequestsVisible(true);
-        }*/
-    }
-	
-	/*public ArrayList<String> getAllTMLTaskNames(String _topname) {
-		TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
-		ArrayList<String> list = new ArrayList<String>();
+       
+        NodeList nl = elt.getElementsByTagName("MainCode");
+        TraceManager.addDev("Extra parameter of block diagram nbOfElements: " + nl.getLength());
+        Node n;
         
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TMLTaskOperator) {
-				list.add(_topname + "::" + ((TMLTaskOperator)tgc).getTaskName());
-            }
-        }
-		
-		return list;
-	}
-	
-	public ArrayList<String> getAllTMLCommunicationNames(String _topname) {
-		TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
-		ArrayList<String> list = new ArrayList<String>();
-		String name = "";
-		String type = "";
         
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TMLCompositionOperator) {
-				if (tgc instanceof TMLEventOperator) {
-					name = ((TMLEventOperator)tgc).getEventName();
-					type = "Event";
-				}
-				if (tgc instanceof TMLChannelOperator) {
-					name = ((TMLChannelOperator)tgc).getChannelName();
-					type = "Channel";
-				}
-				if (tgc instanceof TMLRequestOperator) {
-					name = ((TMLRequestOperator)tgc).getRequestName();
-					type = "Request";
-				}
-				
-				list.add(_topname + "::" + name + " (" + type + ")");
-            }
-        }
-		
-		return list;
-	}
-	
-	public ArrayList<String> getAllNonMappedTMLTaskNames(String _topName, TMLArchiDiagramPanel _tadp, boolean ref, String _name) {
-		TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
-		ArrayList<String> list = new ArrayList<String>();
-		String name;
         
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TMLTaskOperator) {
-				name = ((TMLTaskOperator)tgc).getTaskName();
-				if (ref && name.equals(_name)) {
-					list.add(_topName + "::" + name);
-				} else {
-					if (!_tadp.isMapped(_topName,  name)) {
-							list.add(_topName + "::" + name);
-					}
-				}
-            }
+        try {
+        	if (nl.getLength()>0) {
+        		mainCode = "";
+        	}
+        	for(int i=0; i<nl.getLength(); i++) {
+        		n = nl.item(i);
+        		if (n.getNodeType() == Node.ELEMENT_NODE) {
+        			s = ((Element)n).getAttribute("value");
+        			TraceManager.addDev("Found value=" + s);
+        			if (s != null) {
+        				mainCode += s + "\n";
+        			}
+        		}
+        	
+        	}
+        } catch (Exception e) {
+            // Model was saved in an older version of TTool
+            TraceManager.addDev("Exception when loading parameter of block diagram:" + e.getMessage());
+            
         }
-		
-		return list;
-	}
+    }
 	
-	public TMLTaskOperator getTaskByName(String _name) {
-		TGComponent tgc;
-        Iterator iterator = componentList.listIterator();
-		ArrayList<String> list = new ArrayList<String>();
-        
-        while(iterator.hasNext()) {
-            tgc = (TGComponent)(iterator.next());
-            if (tgc instanceof TMLTaskOperator) {
-				if (((TMLTaskOperator)tgc).getTaskName().equals(_name)) {
-					return ((TMLTaskOperator)tgc);
-				}
-            }
-        }
-		
-		return null;
-	}*/
 	
 	public void updateAllSignalsOnConnectors() {
 		TGComponent tgc;
diff --git a/src/ui/window/JDialogAvatarBlock.java b/src/ui/window/JDialogAvatarBlock.java
index 696cc4297e25c9096826ce96146a859508c7f5ba..14b4628b88afe6726938793a109ba176c59bcfe7 100755
--- a/src/ui/window/JDialogAvatarBlock.java
+++ b/src/ui/window/JDialogAvatarBlock.java
@@ -67,6 +67,8 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
     protected String [] globalCode;
     protected JTextArea jtaGlobalCode;
     protected boolean hasGlobalCode;
+    protected String mainCode;
+    protected JTextArea jtaMainCode;
     
     private JPanel panel1, panel2;
     
@@ -114,13 +116,14 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
     private JButton cancelButton;
     
     /** Creates new form  */
-    public JDialogAvatarBlock(Vector _attributes, Vector _methods, Vector _signals, Vector _forbidden, Frame f, String title, String attrib, int _tab, String []_globalCode, boolean _hasGlobalCode) {
+    public JDialogAvatarBlock(Vector _attributes, Vector _methods, Vector _signals, Vector _forbidden, Frame f, String title, String attrib, int _tab, String []_globalCode, boolean _hasGlobalCode, String _mainCode) {
         super(f, title, true);
         frame = f;
         attributesPar = _attributes;
 		methodsPar = _methods;
 		signalsPar = _signals;
 		globalCode = _globalCode;
+		mainCode = _mainCode;
 		
 		
 		if (methodsPar == null) {
@@ -343,6 +346,7 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
         panel3.add(new JLabel("method:"), c3);
         
         // second line panel3
+        c3.fill = GridBagConstraints.HORIZONTAL;
         methodText = new JTextField();
         methodText.setColumns(50);
         methodText.setEditable(true);
@@ -436,6 +440,7 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
         
         // second line panel5
 		c5.gridwidth = 1;
+		c5.fill = GridBagConstraints.HORIZONTAL;
 		Vector v = new Vector();
 		v.add("in");
 		v.add("out");
@@ -498,7 +503,7 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
         panelCode = new JPanel();
         panelCode.setLayout(gridbag7);
            
-        panelCode.setBorder(new javax.swing.border.TitledBorder("Global code of block"));
+        panelCode.setBorder(new javax.swing.border.TitledBorder("Global code"));
 		// guard
         c7.weighty = 1.0;
         c7.weightx = 1.0;
@@ -507,8 +512,27 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
         c7.fill = GridBagConstraints.BOTH;
 		c7.gridwidth = GridBagConstraints.REMAINDER;
         c7.gridheight = 1;
+        
+        panelCode.add(new JLabel("Global code of application:"), c7);
+		jtaMainCode = new JTextArea();
+        jtaMainCode.setEditable(true);
+        jtaMainCode.setMargin(new Insets(10, 10, 10, 10));
+        jtaMainCode.setTabSize(3);
+        String tmp = "";
+        if (mainCode != null) {
+        	tmp = mainCode;
+        }
+		
+        jtaMainCode.append(tmp);
+        if (mainCode == null) {
+        	jtaMainCode.setEnabled(false);
+        }
+        jtaMainCode.setFont(new Font("times", Font.PLAIN, 12));
+        JScrollPane jsp = new JScrollPane(jtaMainCode, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+        jsp.setPreferredSize(new Dimension(300, 200));
+        panelCode.add(jsp, c2);
        
-		panelCode.add(new JLabel("Global code:"), c7);
+		panelCode.add(new JLabel("Global code of block:"), c7);
 		jtaGlobalCode = new JTextArea();
         jtaGlobalCode.setEditable(true);
         jtaGlobalCode.setMargin(new Insets(10, 10, 10, 10));
@@ -521,7 +545,7 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
 		}
         jtaGlobalCode.append(files);
         jtaGlobalCode.setFont(new Font("times", Font.PLAIN, 12));
-        JScrollPane jsp = new JScrollPane(jtaGlobalCode, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+        jsp = new JScrollPane(jtaGlobalCode, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
         jsp.setPreferredSize(new Dimension(300, 200));
         panelCode.add(jsp, c2);
         
@@ -908,6 +932,7 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
             signalsPar.addElement(signals.elementAt(i));
         }
         globalCode =  Conversion.wrapText(jtaGlobalCode.getText());
+        mainCode = jtaMainCode.getText();
         dispose();
     }
     
@@ -1018,5 +1043,9 @@ public class JDialogAvatarBlock extends javax.swing.JDialog implements ActionLis
     public String[] getGlobalCode() {
 		return globalCode;
 	}
+	
+	public String getMainCode() {
+		return mainCode;
+	}
     
 }