diff --git a/bin/config.xml b/bin/config.xml
index f7591a5fd6daade53dd13671099b27ecef5e554b..79da2bb42c96e8dc8ebe5491a612577ea1209229 100755
--- a/bin/config.xml
+++ b/bin/config.xml
@@ -65,7 +65,7 @@
 
 
 
-<LastWindowAttributes x="0" y="27" width="1366" height="741" max="true" />
+<LastWindowAttributes x="-1" y="27" width="1368" height="742" max="true" />
 
 
 </TURTLECONFIGURATION>
diff --git a/src/tmltranslator/ctranslator/AdaifBuffer.java b/src/tmltranslator/ctranslator/AdaifBuffer.java
index e711b6f9f7f7fc27138e28f945e43eb1d8916c93..f1f85fb909eaf7e07a81a5e57f6ba9c0198e8e40 100644
--- a/src/tmltranslator/ctranslator/AdaifBuffer.java
+++ b/src/tmltranslator/ctranslator/AdaifBuffer.java
@@ -48,13 +48,15 @@ package tmltranslator.ctranslator;;
 
 import java.util.*;
 import java.nio.*;
+import org.w3c.dom.Element;
+
 import myutil.*;
 import tmltranslator.*;
 
 public class AdaifBuffer extends Buffer	{
 
-	public static final int numSamplesIndex = 1;
-	public static final int baseAddressIndex = 2;
+	public static final int NUM_SAMPLES_INDEX = 1;
+	public static final int BASE_ADDRESS_INDEX = 2;
 
 	protected String numSamplesValue = USER_TO_DO;
 	protected static final String numSamplesType = "uint8_t";
@@ -69,6 +71,8 @@ public class AdaifBuffer extends Buffer	{
 	
 	private String Context = "embb_mainmemory_context";
 
+	private static final int maxParameters = 2;
+
 	public AdaifBuffer( String _name, TMLTask _task )	{
 		type = "ADAIF_BUFFER_TYPE";
 		name = _name;
@@ -95,15 +99,39 @@ public class AdaifBuffer extends Buffer	{
 
 	private void retrieveBufferParameters()	{
 
-		if( bufferParameters.get( numSamplesIndex ).length() > 0 )	{
-			numSamplesValue = bufferParameters.get( numSamplesIndex );
+		if( bufferParameters.get( NUM_SAMPLES_INDEX ).length() > 0 )	{
+			numSamplesValue = bufferParameters.get( NUM_SAMPLES_INDEX );
 		}
-		if( bufferParameters.get( baseAddressIndex ).length() > 0 )	{
-			baseAddressValue = bufferParameters.get( baseAddressIndex );
+		if( bufferParameters.get( BASE_ADDRESS_INDEX ).length() > 0 )	{
+			baseAddressValue = bufferParameters.get( BASE_ADDRESS_INDEX );
 		}
 	}
 
 	public String getContext()	{
 		return Context;
 	}
+
+	public static String appendBufferParameters( ArrayList<String> buffer )	{
+		
+		StringBuffer sb = new StringBuffer();
+		sb.append("\" bufferType=\"" + Integer.toString( Buffer.AdaifBuffer ) );
+		if( buffer.size() == maxParameters+1 )	{	//because the first parameter is the bufferType
+			sb.append("\" numSamples=\"" + buffer.get( NUM_SAMPLES_INDEX ) );
+  	  sb.append("\" baseAddress=\"" + buffer.get( BASE_ADDRESS_INDEX ) );
+		}
+		else	{
+			sb.append("\" numSamples=\"" + SP );
+  	  sb.append("\" baseAddress=\"" + SP );
+		}
+		return sb.toString();
+	}
+
+	public static ArrayList<String> buildBufferParameters( Element elt )	{
+
+		ArrayList<String> buffer = new ArrayList<String>();
+		buffer.add( 0, Integer.toString( Buffer.AdaifBuffer ) );
+		buffer.add( NUM_SAMPLES_INDEX, elt.getAttribute( "numSamples" ) );
+		buffer.add( BASE_ADDRESS_INDEX, elt.getAttribute( "baseAddress" ) );
+		return buffer;
+	}
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/CPMEC.java b/src/tmltranslator/ctranslator/CPMEC.java
index f7912662e431d7004e96e9de8452ebf6ddef4d98..bf2cbb76cd3f23780925cd4b1888cd9a8c8e08e7 100755
--- a/src/tmltranslator/ctranslator/CPMEC.java
+++ b/src/tmltranslator/ctranslator/CPMEC.java
@@ -90,4 +90,10 @@ public abstract class CPMEC	{
 		return cleanup_code;
 	}
 
+	// Get the value of an attribute from the TMLCP artifact string
+	protected static String getAttributeValue( String assignement )	{
+		String s = assignement.split(" = ")[1];
+		return s.substring(0, s.length()-1);	//remove trailing semi-colon
+	}
+
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java b/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java
index b9d86be582ead130332650e920456895026916bb..28f03e7ef5294d86ccce6e60c2523f11cafa747c 100644
--- a/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java
+++ b/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java
@@ -56,7 +56,11 @@ public class CpuMemoryCopyMEC extends CPMEC	{
 	public static final int sourceAddressIndex = 1;
 	public static final int counterIndex = 2;
 
-	private String memoryBaseAddress = "0";
+	public static final String destinationAddress = "destinationAddress";
+	public static final String sourceAddress = "sourceAddress";
+	public static final String counter = "samplesToLoad";
+
+	private String memoryBaseAddress = "embb_mss";
 
 	public CpuMemoryCopyMEC( String ctxName, ArchUnitMEC archMEC, String sizeString )	{
 
@@ -65,4 +69,21 @@ public class CpuMemoryCopyMEC extends CPMEC	{
 		cleanup_code = TAB + archMEC.getCtxCleanupCode() + "(&" + ctxName +");";
 	}
 
+	public static Vector<String> sortAttributes( Vector<String> assignedAttributes )	{
+		
+		Vector<String> newVector = new Vector<String>( assignedAttributes );
+		for( String s: assignedAttributes )	{
+			if( s.contains( destinationAddress ) )	{
+				newVector.set( destinationAddressIndex, getAttributeValue(s) );
+			}
+			if( s.contains( sourceAddress ) )	{
+				newVector.set( sourceAddressIndex, getAttributeValue(s) );
+			}
+			if( s.contains( counter ) )	{
+				newVector.set( counterIndex, getAttributeValue(s) );
+			}
+		}
+		return newVector;
+	}
+
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/CwaMEC.java b/src/tmltranslator/ctranslator/CwaMEC.java
index 77ba345ea1de0645ffe2ad7a17e26ae09dde80d8..4799555dbefd4ae8cb5c9ea4a2516b107b97b7af 100644
--- a/src/tmltranslator/ctranslator/CwaMEC.java
+++ b/src/tmltranslator/ctranslator/CwaMEC.java
@@ -63,9 +63,6 @@ public class CwaMEC extends FepOperationMEC	{
 			"fep_set_qy(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ ID1 + "].pBuff)->bank);" + CR + TAB +
 			"fep_set_by(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ ID1 + "].pBuff)->base_address);" + CR + TAB +
 			"fep_set_ty(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ ID1 + "].pBuff)->data_type);" + CR + TAB +
-			"fep_set_qz(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ outSignalName + "].pBuff)->bank);" + CR + TAB +
-			"fep_set_bz(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ outSignalName + "].pBuff)->base_address);" + CR + TAB +
-			"fep_set_tz(&"+ _ctxName + ", ((FEP_BUFFER_TYPE*)sig["+ outSignalName + "].pBuff)->data_type);" + CR + TAB +
 			"/*start execution*/" + CR + TAB +
 			"status = fep_do(&"+ _ctxName + ");" + CR;
 		
diff --git a/src/tmltranslator/ctranslator/CwlMEC.java b/src/tmltranslator/ctranslator/CwlMEC.java
index 7a3e32185c3a4de068df7985ef1b6b51810d09a0..435c7ef56534fe75db7e7121bb1be442eb49a254 100755
--- a/src/tmltranslator/ctranslator/CwlMEC.java
+++ b/src/tmltranslator/ctranslator/CwlMEC.java
@@ -60,9 +60,6 @@ public class CwlMEC extends FepOperationMEC	{
 			"fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB +
 			"fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + TAB +
 			"fep_set_tx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->data_type);" + CR + TAB +
-			"fep_set_qz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->bank);" + CR + TAB +
-			"fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + TAB +
-			"fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + TAB +
 			"/*start execution*/" + CR + TAB +
 			"status = fep_do(&" + _ctxName + ");" + CR;
 	
diff --git a/src/tmltranslator/ctranslator/CwmMEC.java b/src/tmltranslator/ctranslator/CwmMEC.java
index d131740c11b81168f29089173500f8eb3167f756..f06ba2841cf23c62251216ec856c53dec44e96f4 100755
--- a/src/tmltranslator/ctranslator/CwmMEC.java
+++ b/src/tmltranslator/ctranslator/CwmMEC.java
@@ -60,9 +60,6 @@ public class CwmMEC extends FepOperationMEC	{
 			"fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR +
 			"fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR +
 			"fep_set_tx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->data_type);" + CR +
-			"fep_set_qz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->bank);" + CR +
-			"fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR +
-			"fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR +
 			"/*start execution*/" + CR +
 			"status = fep_do(&" + _ctxName + ");" + CR;
 	
diff --git a/src/tmltranslator/ctranslator/CwpMEC.java b/src/tmltranslator/ctranslator/CwpMEC.java
index 057f0b534ac04b392791e5963a5bb025272e0b31..99310867286c795050211a8fc5d608f461a3137e 100755
--- a/src/tmltranslator/ctranslator/CwpMEC.java
+++ b/src/tmltranslator/ctranslator/CwpMEC.java
@@ -60,9 +60,6 @@ public class CwpMEC extends FepOperationMEC	{
 			"fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB +
 			"fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + TAB +
 			"fep_set_tx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->data_type);" + CR + TAB +
-			"fep_set_qz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->bank);" + CR + TAB +
-			"fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + TAB +
-			"fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + TAB +
 			"/*start execution*/" + CR + TAB +
 			"status = fep_do(&" + _ctxName + ");" + CR;
 	
diff --git a/src/tmltranslator/ctranslator/DoubleDmaMEC.java b/src/tmltranslator/ctranslator/DoubleDmaMEC.java
index 7de817aaaa97babd232957ef62e69ce9b6612e7c..b488c82712953fd5b573c9beac25614422bacfcd 100755
--- a/src/tmltranslator/ctranslator/DoubleDmaMEC.java
+++ b/src/tmltranslator/ctranslator/DoubleDmaMEC.java
@@ -111,4 +111,30 @@ public class DoubleDmaMEC extends CPMEC	{
 		}
 	}
 
+	public static Vector<String> sortAttributes( Vector<String> assignedAttributes )	{
+		
+		Vector<String> newVector = new Vector<String>( assignedAttributes );
+		for( String s: assignedAttributes )	{
+			if( s.contains( destinationAddress1 ) )	{
+				newVector.set( destinationAddress1Index, getAttributeValue(s) );
+			}
+			if( s.contains( sourceAddress1 ) )	{
+				newVector.set( sourceAddress1Index, getAttributeValue(s) );
+			}
+			if( s.contains( counter1 ) )	{
+				newVector.set( counter1Index, getAttributeValue(s) );
+			}
+			if( s.contains( destinationAddress2 ) )	{
+				newVector.set( destinationAddress2Index, getAttributeValue(s) );
+			}
+			if( s.contains( sourceAddress2 ) )	{
+				newVector.set( sourceAddress2Index, getAttributeValue(s) );
+			}
+			if( s.contains( counter2 ) )	{
+				newVector.set( counter2Index, getAttributeValue(s) );
+			}
+		}
+		return newVector;
+	}
+
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/FepBuffer.java b/src/tmltranslator/ctranslator/FepBuffer.java
index cfced052a24f1ac0df69e909ec3ade6a9ba7ffd6..725b452ee24a48b7e1b9d17d237efce274736d19 100755
--- a/src/tmltranslator/ctranslator/FepBuffer.java
+++ b/src/tmltranslator/ctranslator/FepBuffer.java
@@ -48,6 +48,11 @@ package tmltranslator.ctranslator;;
 
 import java.util.*;
 import java.nio.*;
+import org.w3c.dom.Element;
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.*;
+
 import myutil.*;
 import tmltranslator.*;
 
@@ -55,10 +60,10 @@ public class FepBuffer extends Buffer	{
 
 	public static final String[] dataTypeList = { "int8", "int16", "cpx16", "cpx32" };
 	public static final String[] banksList = { "0", "1", "2", "3" };
-	public static final int numSamplesIndex = 1;
-	public static final int baseAddressIndex = 2;
-	public static final int bankIndex = 3;
-	public static final int dataTypeIndex = 4;
+	public static final int NUM_SAMPLES_INDEX = 1;
+	public static final int BASE_ADDRESS_INDEX = 2;
+	public static final int BANK_INDEX = 3;
+	public static final int DATA_TYPE_INDEX = 4;
 	
 	protected String numSamplesValue = USER_TO_DO;
 	protected static final String numSamplesType = "uint8_t";
@@ -82,6 +87,11 @@ public class FepBuffer extends Buffer	{
 																						"typedef FEP_BUFFER_TYPE FEP_BUFFER_TYPE" + SC;
 	
 	private String Context = "FEP_CONTEXT";
+	
+	private static JTextField numSamplesTF = new JTextField( "", 5 );
+	private static JTextField baseAddressTF = new JTextField( "", 5 );
+	private static JComboBox bankCB = new JComboBox( new Vector<String>( Arrays.asList( banksList ) ) );
+	private static JComboBox dataTypeCB = new JComboBox( new Vector<String>( Arrays.asList( dataTypeList ) ) );
 
 	public FepBuffer( String _name, TMLTask _task )	{
 		type = "FEP_BUFFER_TYPE";
@@ -115,17 +125,17 @@ public class FepBuffer extends Buffer	{
 	private void retrieveBufferParameters()	{
 
 		if( bufferParameters.size() == maxParameters )	{
-			if( bufferParameters.get( numSamplesIndex ).length() > 0 )	{
-				numSamplesValue = bufferParameters.get( numSamplesIndex );
+			if( bufferParameters.get( NUM_SAMPLES_INDEX ).length() > 0 )	{
+				numSamplesValue = bufferParameters.get( NUM_SAMPLES_INDEX );
 			}
-			if( bufferParameters.get( baseAddressIndex ).length() > 0 )	{
-				baseAddressValue = bufferParameters.get( baseAddressIndex );
+			if( bufferParameters.get( BASE_ADDRESS_INDEX ).length() > 0 )	{
+				baseAddressValue = bufferParameters.get( BASE_ADDRESS_INDEX );
 			}
-			if( bufferParameters.get( bankIndex ).length() > 0 )	{
-				bankValue = bufferParameters.get( bankIndex );
+			if( bufferParameters.get( BANK_INDEX ).length() > 0 )	{
+				bankValue = bufferParameters.get( BANK_INDEX );
 			}
-			if( bufferParameters.get( dataTypeIndex ).length() > 0 )	{
-				dataTypeValue = String.valueOf(( new Vector<String>( Arrays.asList( dataTypeList ))).indexOf( bufferParameters.get( dataTypeIndex )));
+			if( bufferParameters.get( DATA_TYPE_INDEX ).length() > 0 )	{
+				dataTypeValue = String.valueOf(( new Vector<String>( Arrays.asList( dataTypeList ))).indexOf( bufferParameters.get( DATA_TYPE_INDEX )));
 			}
 		}
 	}
@@ -133,4 +143,128 @@ public class FepBuffer extends Buffer	{
 	public String getContext()	{
 		return Context;
 	}
+
+	public static String appendBufferParameters( ArrayList<String> buffer )	{
+
+		StringBuffer sb = new StringBuffer();
+   	sb.append("\" bufferType=\"" + Integer.toString( Buffer.FepBuffer ) );
+		if( buffer.size() == maxParameters+1 )	{	//because the first parameter is the bufferType
+			sb.append("\" baseAddress=\"" + buffer.get( BASE_ADDRESS_INDEX ) );
+  	  sb.append("\" numSamples=\"" + buffer.get( NUM_SAMPLES_INDEX ) );
+    	sb.append("\" bank=\"" + buffer.get( BANK_INDEX ) );
+	    sb.append("\" dataType=\"" + buffer.get( DATA_TYPE_INDEX ) );
+		}
+		else	{
+			sb.append("\" baseAddress=\"" + SP );
+  	  sb.append("\" numSamples=\"" + SP );
+    	sb.append("\" bank=\"" + SP );
+	    sb.append("\" dataType=\"" + SP );
+		}
+		return sb.toString();
+	}
+
+	public static ArrayList<String> buildBufferParameters( Element elt )	{
+
+		ArrayList<String> buffer = new ArrayList<String>();
+		buffer.add( 0, Integer.toString( Buffer.FepBuffer ) );
+		buffer.add( NUM_SAMPLES_INDEX, elt.getAttribute( "numSamples" ) );
+		buffer.add( BASE_ADDRESS_INDEX, elt.getAttribute( "baseAddress" ) );
+		buffer.add( BANK_INDEX, elt.getAttribute( "bank" ) );
+		buffer.add( DATA_TYPE_INDEX, elt.getAttribute( "dataType" ) );
+		return buffer;
+	}
+	
+	public static JPanel makePanel( boolean loadBufferParameters, GridBagConstraints c1, GridBagConstraints c2, ArrayList<String> bufferParameters )	{
+
+		String baseAddress = "", numSamples = "", bank = "", dataType = "";
+
+		GridBagLayout gridbag2 = new GridBagLayout();
+
+
+		JPanel panel = new JPanel();
+		panel.setLayout( gridbag2 );
+		panel.setBorder( new javax.swing.border.TitledBorder("Code generation: memory configuration"));
+		panel.setPreferredSize( new Dimension(650, 350) );
+
+		if( loadBufferParameters )	{
+			baseAddress = bufferParameters.get( BASE_ADDRESS_INDEX );
+			numSamples = bufferParameters.get( NUM_SAMPLES_INDEX );
+			bank = bufferParameters.get( BANK_INDEX );
+			dataType = bufferParameters.get( DATA_TYPE_INDEX );
+		}
+
+    panel.setBorder(new javax.swing.border.TitledBorder("Code generation: memory configuration"));
+
+		c2.anchor = GridBagConstraints.LINE_START;
+		numSamplesTF.setText( numSamples );
+		panel.add( new JLabel( "Number of samples = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel.add( numSamplesTF, c1 );
+		//
+		baseAddressTF.setText( baseAddress );
+		panel.add( new JLabel( "Base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel.add( baseAddressTF, c1 );
+		//
+		panel.add( new JLabel( "Bank number = "),  c2 );
+		if( bank != null && !bank.equals("") )	{
+			bankCB.setSelectedIndex( Integer.parseInt( bank ) );
+		}
+		else	{
+			bankCB.setSelectedIndex(0);
+		}
+		panel.add( bankCB, c1 );
+		//
+		panel.add( new JLabel( "Data type = "),  c2 );
+		if( dataType != null && !dataType.equals("") )	{
+			dataTypeCB.setSelectedItem( dataType );
+		}
+		else	{
+			dataTypeCB.setSelectedIndex(0);
+		}
+		panel.add( dataTypeCB, c1 );
+		return panel;
+	}
+
+	public static boolean closePanel( Frame frame )	{
+
+		String baseAddress = (String) baseAddressTF.getText();
+		if( baseAddress.length() <= 2 && baseAddress.length() > 0 )	{
+			JOptionPane.showMessageDialog( frame, "Please enter a valid base address", "Badly formatted parameter",
+																			JOptionPane.INFORMATION_MESSAGE );
+			return false;
+		}
+		if( baseAddress.length() > 2 )	{
+			if( !( baseAddress.substring(0,2).equals("0x") || baseAddress.substring(0,2).equals("0X") ) )	{
+				JOptionPane.showMessageDialog( frame, "Base address must be expressed in hexadecimal", "Badly formatted parameter",
+																				JOptionPane.INFORMATION_MESSAGE );
+				return false;
+			}
+		}
+		String regex = "[0-9]+";
+		String numSamples = (String) numSamplesTF.getText();
+		if( !numSamples.matches( regex ) )	{
+			JOptionPane.showMessageDialog( frame, "The number of samples must be expressed as a natural", "Badly formatted parameter",
+																			JOptionPane.INFORMATION_MESSAGE );
+			return false;
+		}
+		if( Integer.parseInt( numSamples ) == 0 )	{
+			JOptionPane.showMessageDialog( frame, "The number of samples must be greater than 0", "Badly formatted parameter",
+																			JOptionPane.INFORMATION_MESSAGE );
+			return false;
+		}
+		if( !( numSamples.length() > 0 ) )	{
+			return true;
+		}
+		return true;
+	}
+
+	public static void getBufferParameters( ArrayList<String> params )	{
+		
+		params.add( NUM_SAMPLES_INDEX, numSamplesTF.getText() );
+		params.add( BASE_ADDRESS_INDEX, baseAddressTF.getText() );
+		params.add( BANK_INDEX, (String)bankCB.getSelectedItem() );
+		params.add( DATA_TYPE_INDEX, (String)dataTypeCB.getSelectedItem() );
+	}
+
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/FftMEC.java b/src/tmltranslator/ctranslator/FftMEC.java
index 88f8daee9bd79a7f9ae23e5db6e1ad19c000cd77..2958ea6810aef56cc7c6f7cfa6db845c19e8512d 100644
--- a/src/tmltranslator/ctranslator/FftMEC.java
+++ b/src/tmltranslator/ctranslator/FftMEC.java
@@ -59,9 +59,6 @@ public class FftMEC extends FepOperationMEC	{
 			"fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB +
 			"fep_set_bx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->base_address);" + CR + TAB +
 			"fep_set_tx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->data_type);" + CR + TAB +
-			"fep_set_qz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->bank);" + CR + TAB +
-			"fep_set_bz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->base_address);" + CR + TAB +
-			"fep_set_tz(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + outSignalName + "].pBuff)->data_type);" + CR + TAB +
 			"/*start execution*/" + CR + TAB +
 			"status = fep_do(&" + _ctxName + ");" + CR;
 		
diff --git a/src/tmltranslator/ctranslator/Signal.java b/src/tmltranslator/ctranslator/Signal.java
index 04642b96772e472ed8ba99c7ce6d15bc13ff0f63..3d0ddd074a4876d81b6cd2fcb83dbb4a89d5b49b 100755
--- a/src/tmltranslator/ctranslator/Signal.java
+++ b/src/tmltranslator/ctranslator/Signal.java
@@ -53,17 +53,14 @@ import tmltranslator.*;
 
 public class Signal	{
 
+	public static final String DECLARATION = "struct SIG_TYPE	{\n\tbool f;\n\tvoid *pBuff;\n};\n\ntypedef struct SIG_TYPE SIG_TYPE;\nextern SIG_TYPE sig[];\n\n";
+	public static final String USERTODO = "/* USER TODO: signal */";
+
 	public String CR = "\n";
 	public String SC = ";";
 	
-	private String status_s = "bool f" + SC + CR;
 	private boolean status = false;
-
-	private String buffPointer_s = "void *pBuff" + SC + CR;
 	private Buffer buffPointer = null;
-	
-	public static final String DECLARATION = "struct SIG_TYPE	{\n\tbool f;\n\tvoid *pBuff;\n};\n\ntypedef struct SIG_TYPE SIG_TYPE;\nextern SIG_TYPE sig[];\n\n";
-
 	private String name;
 	private TMLChannel channel;
 	private TMLEvent event;
diff --git a/src/tmltranslator/ctranslator/SingleDmaMEC.java b/src/tmltranslator/ctranslator/SingleDmaMEC.java
index ae48bc5055a6d4f412fb93978e2722eba2185999..58ceb9896cc0778b0b585de2512246ac0845d6fb 100755
--- a/src/tmltranslator/ctranslator/SingleDmaMEC.java
+++ b/src/tmltranslator/ctranslator/SingleDmaMEC.java
@@ -107,7 +107,23 @@ public class SingleDmaMEC extends CPMEC	{
 				exec_code = TAB + "embb_mem2ip((EMBB_CONTEXT *)&" + ctxName + ", (uintptr_t) " + memoryBaseAddress + ", /*USER TODO: *SRC */, " + sizeString + " );" + CR;
 			break;
 		}
+	}
 
+	public static Vector<String> sortAttributes( Vector<String> assignedAttributes )	{
+		
+		Vector<String> newVector = new Vector<String>( assignedAttributes );
+		for( String s: assignedAttributes )	{
+			if( s.contains( destinationAddress ) )	{
+				newVector.set( destinationAddressIndex, getAttributeValue(s) );
+			}
+			if( s.contains( sourceAddress ) )	{
+				newVector.set( sourceAddressIndex, getAttributeValue(s) );
+			}
+			if( s.contains( counter ) )	{
+				newVector.set( counterIndex, getAttributeValue(s) );
+			}
+		}
+		return newVector;
 	}
 
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/SumMEC.java b/src/tmltranslator/ctranslator/SumMEC.java
index ddf2f2df1c49bd4af20c81a712012818acc0194d..58fa4d7b685f53210d1aedf7184d8891f59483df 100644
--- a/src/tmltranslator/ctranslator/SumMEC.java
+++ b/src/tmltranslator/ctranslator/SumMEC.java
@@ -54,7 +54,6 @@ public class SumMEC extends FepOperationMEC	{
 		name = "Sum MEC";
 		exec_code = TAB + "/*firm instruction*/" + CR + TAB +
 			"int status;" + CR + TAB +
-			"fep_set_qx(&" + _ctxName + ", ((FEP_BUFFER_TYPE*)sig[" + inSignalName + "].pBuff)->bank);" + CR + TAB +
 			"/*start execution*/" + CR + TAB +
 			"status = fep_do(&" + _ctxName + ");" + CR;
 		
diff --git a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
index 68937c0ab484d431847b9557109221fcffed311e..13f8cb8fb20f5fbd975c19bb2d26313ef09ece34 100755
--- a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
+++ b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
@@ -1113,7 +1113,7 @@ public class TMLCCodeGeneration	{
 			}
 			int cpMECType = tmlcplib.getCPMECType();
 			if( cpMECType == CPMEC.CpuMemoryCopyMEC )	{
-				TraceManager.addDev( "attributes contains " + attributes.size() + " elements!" );
+				TraceManager.addDev( "Attributes for memory copy:\n\t" + attributes.toString() );
 				counter = (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( CpuMemoryCopyMEC.counterIndex );
 				CpuMemoryCopyMEC mec = new CpuMemoryCopyMEC( ctxName, new CpuMEC(), counter );	//mem2ip
 				programString.append( mec.getExecCode() );
@@ -1134,6 +1134,7 @@ public class TMLCCodeGeneration	{
 						dstMemoryType = tmla.getHwMemoryByName( memoryUnit ).BufferType;
 					}
 				}
+				TraceManager.addDev( "Attributes for DMA:\n\t" + attributes.toString() );
 				counter = (attributes.size() == 0 ) ? "/* USER TODO */" : attributes.get( SingleDmaMEC.counterIndex );
 				SingleDmaMEC mec = new SingleDmaMEC( ctxName, dmaArchMEC, srcMemoryType, dstMemoryType, transferType, counter );
 				programString.append( mec.getExecCode() );
@@ -1244,7 +1245,7 @@ public class TMLCCodeGeneration	{
 		
 		String init_code = "";
 		String ctxName;
-		String inSignalName, outSignalName;
+		String inSignalName = Signal.USERTODO, outSignalName = Signal.USERTODO;
 		initFileString.append( "#include \"" + applicationName + ".h\"" + CR2 );
 		initFileString.append( "/**** variables ****/" + CR2 );		
 		initFileString.append( "char fep_mss[0x10000];" + CR );
@@ -1267,15 +1268,9 @@ public class TMLCCodeGeneration	{
 				if( op.getInSignals().size() > 0 )	{
 					inSignalName = op.getInSignals().get(0).getName();
 				}
-				else	{
-					inSignalName = "noInSignal";
-				}
 				if( op.getOutSignal() != null )	{
 					outSignalName = op.getOutSignal().getName();
 				}
-				else	{
-					outSignalName = "noOutSignal";
-				}
 				switch( xTaskOperationType )	{
 					case OperationMEC.CwpMEC:
 						CwpMEC cwp = new CwpMEC( ctxName, inSignalName, outSignalName );
@@ -1320,6 +1315,8 @@ public class TMLCCodeGeneration	{
 				}
 			initFileString.append( init_code + CR );
 			init_code = "";
+			inSignalName = Signal.USERTODO;
+			outSignalName = Signal.USERTODO;
 			}
 		}
 
diff --git a/src/ui/tmldd/TMLArchiCPNode.java b/src/ui/tmldd/TMLArchiCPNode.java
index a9bbe1b52f3bff1cc7b8f1f0cf6e771b894ee2a3..76052dde15b701488b0168ec9ff1631132e539a0 100755
--- a/src/ui/tmldd/TMLArchiCPNode.java
+++ b/src/ui/tmldd/TMLArchiCPNode.java
@@ -317,7 +317,6 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow
                                 String attributeName = elt.getAttribute( "name" );
                                 String attributeValue = elt.getAttribute( "value" );
                                 assignedAttributes.add( attributeType + " " + attributeName + " = " + attributeValue + ";" );
-                                //assignedAttributes.add( new TMLAttribute( attributeName, attributeValue );
                             }
                         }
                     }
@@ -412,18 +411,16 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow
 
 	public Vector<String> getAssignedAttributes()	{
 
-		//attributes must first be parsed and assigned to the correct position within array, in order to be correctly retrieved
 		Vector<String> vectorToReturn;
 		switch( cpMEC )	{
 			case CPMEC.MemoryCopy:
-				TraceManager.addDev( "Returning assignedAttributes as memory copy" );
-				vectorToReturn = assignedAttributes;
+				vectorToReturn = CpuMemoryCopyMEC.sortAttributes( assignedAttributes );
 			break;
 			case CPMEC.SingleDMA:
-				vectorToReturn = sortAttributesForSingleDMA();
+				vectorToReturn = SingleDmaMEC.sortAttributes( assignedAttributes );
 			break;
 			case CPMEC.DoubleDMA:
-				vectorToReturn = sortAttributesForDoubleDMA();
+				vectorToReturn = DoubleDmaMEC.sortAttributes( assignedAttributes );
 			break;
 			default:
 				TraceManager.addDev( "ERROR in returning assignedAttributes" );
@@ -433,54 +430,6 @@ public class TMLArchiCPNode extends TMLArchiCommunicationNode implements Swallow
 		return vectorToReturn;
 	}
 
-	private Vector<String> sortAttributesForSingleDMA()	{
-		
-		Vector<String> newVector = new Vector<String>( assignedAttributes );
-		for( String s: assignedAttributes )	{
-			if( s.contains( SingleDmaMEC.destinationAddress ) )	{
-				newVector.set( SingleDmaMEC.destinationAddressIndex, getAttributeValue(s) );
-			}
-			if( s.contains( SingleDmaMEC.sourceAddress ) )	{
-				newVector.set( SingleDmaMEC.sourceAddressIndex, getAttributeValue(s) );
-			}
-			if( s.contains( SingleDmaMEC.counter ) )	{
-				newVector.set( SingleDmaMEC.counterIndex, getAttributeValue(s) );
-			}
-		}
-		return newVector;
-	}
-
-	private Vector<String> sortAttributesForDoubleDMA()	{
-		
-		Vector<String> newVector = new Vector<String>( assignedAttributes );
-		for( String s: assignedAttributes )	{
-			if( s.contains( DoubleDmaMEC.destinationAddress1 ) )	{
-				newVector.set( DoubleDmaMEC.destinationAddress1Index, getAttributeValue(s) );
-			}
-			if( s.contains( DoubleDmaMEC.sourceAddress1 ) )	{
-				newVector.set( DoubleDmaMEC.sourceAddress1Index, getAttributeValue(s) );
-			}
-			if( s.contains( DoubleDmaMEC.counter1 ) )	{
-				newVector.set( DoubleDmaMEC.counter1Index, getAttributeValue(s) );
-			}
-			if( s.contains( DoubleDmaMEC.destinationAddress2 ) )	{
-				newVector.set( DoubleDmaMEC.destinationAddress2Index, getAttributeValue(s) );
-			}
-			if( s.contains( DoubleDmaMEC.sourceAddress2 ) )	{
-				newVector.set( DoubleDmaMEC.sourceAddress2Index, getAttributeValue(s) );
-			}
-			if( s.contains( DoubleDmaMEC.counter2 ) )	{
-				newVector.set( DoubleDmaMEC.counter2Index, getAttributeValue(s) );
-			}
-		}
-		return newVector;
-	}
-
-	private String getAttributeValue( String assignement )	{
-		String s = assignement.split(" = ")[1];
-		return s.substring(0, s.length()-1);	//remove trailing semi-colon
-	}
-
 	public ArrayList<Integer> getTransferTypes()	{
 		ArrayList<Integer> transferTypes = new ArrayList<Integer>();
 		transferTypes.add( transferType1 );
diff --git a/src/ui/tmldd/TMLArchiPortArtifact.java b/src/ui/tmldd/TMLArchiPortArtifact.java
index 2a2f664b14fd073f088d54b3b6c0d610da77b0a3..ecf54eceb2856ad0d4a15265801e5f7a886af7fa 100644
--- a/src/ui/tmldd/TMLArchiPortArtifact.java
+++ b/src/ui/tmldd/TMLArchiPortArtifact.java
@@ -189,12 +189,14 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         String tmp;
         boolean error = false;
 
+				TraceManager.addDev( "bufferParameters before: " + bufferParameters.toString() );
         JDialogPortArtifact dialog = new JDialogPortArtifact(frame, "Setting port artifact attributes", this, mappedMemory, bufferParameters, value );
         dialog.setSize(700, 600);
         GraphicLib.centerOnParent(dialog);
         dialog.show(); // blocked until dialog has been closed
         mappedMemory = dialog.getMappedMemory();
         bufferParameters = dialog.getBufferParameters();
+				TraceManager.addDev( "bufferParameters after: " + bufferParameters.toString() );
 				bufferType = bufferParameters.get( Buffer.bufferTypeIndex );
 
         if (!dialog.isRegularClose()) {
@@ -265,15 +267,12 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         sb.append("\" typeName=\"" + typeName);
         sb.append("\" mappedMemory=\"" + mappedMemory );
 				if( !bufferType.equals( "" ) && !bufferType.equals( "noBuffer" ) )	{
-        	sb.append("\" bufferType=\"" + bufferType );
 					switch( Integer.parseInt( bufferType ) )	{
 						case Buffer.FepBuffer:
-    	    		sb.append("\" baseAddress=\"" + bufferParameters.get( FepBuffer.baseAddressIndex ) );
-      	  		sb.append("\" numSamples=\"" + bufferParameters.get( FepBuffer.numSamplesIndex ) );
-        			sb.append("\" bank=\"" + bufferParameters.get( FepBuffer.bankIndex ) );
-        			sb.append("\" dataType=\"" + bufferParameters.get( FepBuffer.dataTypeIndex ) );
+							sb.append( FepBuffer.appendBufferParameters( bufferParameters ) );
 							break;
 						case Buffer.InterleaverBuffer:	
+        			sb.append("\" bufferType=\"" + bufferType );
 							//data in
 	        		sb.append( "\" packedBinaryInIntl=\"" + bufferParameters.get( InterleaverBuffer.packedBinaryInIntlIndex ) );
 	        		sb.append( "\" widthIntl=\"" + bufferParameters.get( InterleaverBuffer.widthIntlIndex ) );
@@ -288,10 +287,13 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
 	        		sb.append( "\" lengthPermIntl=\"" + bufferParameters.get( InterleaverBuffer.lengthPermIntlIndex) );
 						break;
 						case Buffer.AdaifBuffer:	
+							sb.append( AdaifBuffer.appendBufferParameters( bufferParameters ) );
+        			/*sb.append("\" bufferType=\"" + bufferType );
         			sb.append("\" numSamples=\"" + bufferParameters.get( MMBuffer.numSamplesIndex ) );
-        			sb.append("\" baseAddress=\"" + bufferParameters.get( MMBuffer.baseAddressIndex ) );
+        			sb.append("\" baseAddress=\"" + bufferParameters.get( MMBuffer.baseAddressIndex ) );*/
 							break;
 						case Buffer.MapperBuffer:	
+        			sb.append("\" bufferType=\"" + bufferType );
 							//data in
       	  		sb.append("\" numSamplesDataInMapp=\"" + bufferParameters.get( MapperBuffer.numSamplesDataInMappIndex ) );
     	    		sb.append("\" baseAddressDataInMapp=\"" + bufferParameters.get( MapperBuffer.baseAddressDataInMappIndex ) );
@@ -303,14 +305,12 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
         			sb.append("\" baseAddressLUTMapp=\"" + bufferParameters.get( MapperBuffer.baseAddressLUTMappIndex ) );
 							break;
 						case Buffer.MainMemoryBuffer:	
+        			sb.append("\" bufferType=\"" + bufferType );
   	      		sb.append("\" numSamples=\"" + bufferParameters.get( MMBuffer.numSamplesIndex ) );
   	      		sb.append("\" baseAddress=\"" + bufferParameters.get( MMBuffer.baseAddressIndex ) );
 							break;
 						default:	//the fep buffer 
-        			sb.append("\" baseAddress=\"" + bufferParameters.get( FepBuffer.baseAddressIndex ) );
-        			sb.append("\" numSamples=\"" + bufferParameters.get( FepBuffer.numSamplesIndex ) );
-	        		sb.append("\" bank=\"" + bufferParameters.get( FepBuffer.bankIndex ) );
-  	      		sb.append("\" dataType=\"" + bufferParameters.get( FepBuffer.dataTypeIndex ) );
+							sb.append( FepBuffer.appendBufferParameters( bufferParameters ) );
 							break;
 					}
 				}
@@ -348,15 +348,17 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
                                 mappedMemory = elt.getAttribute("mappedMemory");
 																if( (elt.getAttribute("bufferType") != null) &&  (elt.getAttribute("bufferType").length() > 0) )	{
                                 bufferType = elt.getAttribute("bufferType");
-																bufferParameters.add( bufferType );
+																//bufferParameters.add( bufferType );
 																switch( Integer.parseInt( bufferType ) )	{
 																	case Buffer.FepBuffer:
-												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
+																		bufferParameters = FepBuffer.buildBufferParameters( elt );
+												        		/*bufferParameters.add( FepBuffer.baseAddressIndex, elt.getAttribute( "baseAddress" ) );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
 												        		bufferParameters.add( elt.getAttribute( "bank" ) );
-												        		bufferParameters.add( elt.getAttribute( "dataType" ) );
+												        		bufferParameters.add( elt.getAttribute( "dataType" ) );*/
 																		break;
 																	case Buffer.InterleaverBuffer:	
+																		bufferParameters.add( bufferType );
 																		//data in
 	        													bufferParameters.add( elt.getAttribute( "packedBinaryInIntl" ) );
 	        													bufferParameters.add( elt.getAttribute( "widthIntl" ) );
@@ -371,10 +373,13 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
 												        		bufferParameters.add( elt.getAttribute( "lengthPermIntl" ) );
 																		break;
 																	case Buffer.AdaifBuffer:	
+																		AdaifBuffer.buildBufferParameters( elt );
+																		/*bufferParameters.add( bufferType );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
-												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
+												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );*/
 																		break;
 																	case Buffer.MapperBuffer:	
+																		bufferParameters.add( bufferType );
 																		//data in
 												        		bufferParameters.add( elt.getAttribute( "numSamplesDataInMapp" ) );
 												        		bufferParameters.add( elt.getAttribute( "baseAddressDataInMapp" ) );
@@ -386,10 +391,12 @@ public class TMLArchiPortArtifact extends TGCWithoutInternalComponent implements
 											        			bufferParameters.add( elt.getAttribute( "baseAddressLUTMapp" ) );
 																		break;
 																	case Buffer.MainMemoryBuffer:	
+																		bufferParameters.add( bufferType );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
 												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
 																		break;
 																	default:	//the main memory buffer 
+																		bufferParameters.add( bufferType );
 												        		bufferParameters.add( elt.getAttribute( "baseAddress" ) );
 												        		bufferParameters.add( elt.getAttribute( "numSamples" ) );
 												        		bufferParameters.add( elt.getAttribute( "bank" ) );
diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java
index 5e5ac98561758d8fbba3d3021d6f759c16586728..41215a6529784781dd4686e72dd431f797567550 100755
--- a/src/ui/window/JDialogPortArtifact.java
+++ b/src/ui/window/JDialogPortArtifact.java
@@ -49,7 +49,6 @@ package ui.window;
 import java.awt.*;
 import java.awt.event.*;
 import javax.swing.*;
-//import javax.swing.event.*;
 import java.util.*;
 
 import ui.*;
@@ -250,13 +249,11 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 
 		switch( bufferType )	{
 			case Buffer.FepBuffer:	
-				if( loadBufferParameters )	{
-					baseAddress = bufferParameters.get( FepBuffer.baseAddressIndex );
-					numSamples = bufferParameters.get( FepBuffer.numSamplesIndex );
-					bank = bufferParameters.get( FepBuffer.bankIndex );
-					dataType = bufferParameters.get( FepBuffer.dataTypeIndex );
-				}
-				makeFepBufferPanel( c1, c2 );
+				/*numSamplesTF = new JTextField( "", 5 );
+				baseAddressTF = new JTextField( "", 5 );
+				bankCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.banksList ) ) );
+				dataTypeCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.dataTypeList ) ) );*/
+				panel3 = FepBuffer.makePanel( loadBufferParameters, c1, c2, bufferParameters );
 				break;
 			case Buffer.InterleaverBuffer:	
 				if( loadBufferParameters )	{
@@ -304,13 +301,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				makeMainMemoryBufferPanel( c1, c2 );
 				break;
 			default:	//the fep buffer 
-				if( loadBufferParameters )	{
-					baseAddress = bufferParameters.get( FepBuffer.baseAddressIndex );
-					numSamples = bufferParameters.get( FepBuffer.numSamplesIndex );
-					bank = bufferParameters.get( FepBuffer.bankIndex );
-					dataType = bufferParameters.get( FepBuffer.dataTypeIndex );
-				}
-				makeFepBufferPanel( c1, c2 );
+				panel3 = FepBuffer.makePanel( loadBufferParameters, c1, c2, bufferParameters );
 				break;
 		}
 
@@ -342,21 +333,19 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		c.add(cancelButton, c0);
   }
 
-	private void makeFepBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
+	/*private void makeFepBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
 
-     panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: memory configuration"));
+    panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: memory configuration"));
 
 		c2.anchor = GridBagConstraints.LINE_START;
-		numSamplesTF = new JTextField( sampleLength, 5 );
+		numSamplesTF = new JTextField( numSamples, 5 );
 		panel3.add( new JLabel( "Number of samples = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
-		numSamplesTF = new JTextField( sampleLength, 5 );
 		panel3.add( numSamplesTF, c1 );
 		//
 		baseAddressTF = new JTextField( baseAddress, 5 );
 		panel3.add( new JLabel( "Base address = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
-		baseAddressTF = new JTextField( baseAddress, 5 );
 		panel3.add( baseAddressTF, c1 );
 		//
 		bankCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.banksList ) ) );
@@ -374,7 +363,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 			dataTypeCB.setSelectedItem( dataType );
 		}
 		panel3.add( dataTypeCB, c1 );
-	}
+	}*/
 
 	private void makeInterleaverBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
 
@@ -606,11 +595,13 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 
 		switch( bufferType )	{
 			case Buffer.FepBuffer:	
-				panel3.removeAll();
+				//panel3.removeAll();
 				tabbedPane.removeAll();
-				makeFepBufferPanel( c1, c2 );
-				panel3.revalidate();
-				panel3.repaint();
+				/*numSamplesTF = new JTextField( "", 5 );
+				baseAddressTF = new JTextField( "", 5 );
+				bankCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.banksList ) ) );
+				dataTypeCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.dataTypeList ) ) );*/
+				panel3 = FepBuffer.makePanel( loadBufferParameters, c1, c2, bufferParameters );
 				tabbedPane.addTab( "Data", panel3 );
 				break;
 			case Buffer.MapperBuffer:	
@@ -648,11 +639,13 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				tabbedPane.addTab( "Data", panel3 );
 				break;
 			default:	//the main memory buffer 
-				panel3.removeAll();
-				tabbedPane.removeAll();
-				makeFepBufferPanel( c1, c2 );
-				panel3.revalidate();
-				panel3.repaint();
+				//panel3.removeAll();
+				/*tabbedPane.removeAll();
+				numSamplesTF = new JTextField( "", 5 );
+				baseAddressTF = new JTextField( "", 5 );
+				bankCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.banksList ) ) );
+				dataTypeCB = new JComboBox( new Vector<String>( Arrays.asList( FepBuffer.dataTypeList ) ) );*/
+				panel3 = FepBuffer.makePanel( loadBufferParameters, c1, c2, bufferParameters );
 				tabbedPane.addTab( "Data", panel3 );
 				break;
 		}
@@ -702,7 +695,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				bufferType = getBufferTypeFromSelectedMemory( (String)memoryCB.getItemAt( memoryCB.getSelectedIndex() ) );
 				switch ( bufferType )	{
 					case Buffer.FepBuffer:	
-						if( !handleClosureWhenSelectedFepBuffer() )	{
+						if( !FepBuffer.closePanel( frame ) )	{
 							return;
 						}
 						break;
@@ -727,7 +720,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 						}
 						break;
 					default:	//the main memory buffer 
-						if( !handleClosureWhenSelectedFepBuffer() )	{
+						if( !FepBuffer.closePanel( frame ) )	{
 							return;
 						}
 						break;
@@ -735,10 +728,6 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
         dispose();
     }
 
-		private boolean handleClosureWhenSelectedFepBuffer()	{
-			return checkBaseAddress() && checkNumSamples();
-		}
-
 		private boolean handleClosureWhenSelectedInterleaverBuffer()	{
 			return checkDI_Intl() && checkDO_Intl() && CheckPerm_Intl();
 		}
@@ -1016,41 +1005,6 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		return true;
 	}
 
-	/*private boolean checkNumSamples_Intl()	{
-
-		String regex = "[0-9]+";
-		numSamplesDataInIntl = (String) numSamplesDataInIntl_TF.getText();
-		numSamplesDataOutIntl = (String) numSamplesDataOutIntl_TF.getText();
-
-		if( !( numSamplesDataInIntl.length() > 0 ) )	{
-			return true;
-		}
-		if( !numSamplesDataInIntl.matches( regex ) )	{
-			JOptionPane.showMessageDialog( frame, "The Data In number of samples must be expressed as a natural", "Badly formatted parameter",
-																			JOptionPane.INFORMATION_MESSAGE );
-			return false;
-		}
-		if( Integer.parseInt( numSamplesDataInIntl ) == 0 )	{
-			JOptionPane.showMessageDialog( frame, "The Data In number of samples must be greater than 0", "Badly formatted parameter",
-																			JOptionPane.INFORMATION_MESSAGE );
-			return false;
-		}
-		if( !( numSamplesDataOutIntl.length() > 0 ) )	{
-			return true;
-		}
-		if( !numSamplesDataOutIntl.matches( regex ) )	{
-			JOptionPane.showMessageDialog( frame, "The Data Out number of samples must be expressed as a natural", "Badly formatted parameter",
-																			JOptionPane.INFORMATION_MESSAGE );
-			return false;
-		}
-		if( Integer.parseInt( numSamplesDataOutIntl ) == 0 )	{
-			JOptionPane.showMessageDialog( frame, "The Data Out number of samples must be greater than 0", "Badly formatted parameter",
-																			JOptionPane.INFORMATION_MESSAGE );
-			return false;
-		}
-		return true;
-	}*/
-
 	private boolean checkNumSamples()	{
 
 		String regex = "[0-9]+";
@@ -1098,10 +1052,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		params.add( String.valueOf( bufferType ) );
 		switch( bufferType )	{
 			case Buffer.FepBuffer:
-				params.add( baseAddress );
-				params.add( numSamples );
-				params.add( (String)bankCB.getSelectedItem() );
-				params.add( (String)dataTypeCB.getSelectedItem() );
+				FepBuffer.getBufferParameters( params );
 				break;
 			case Buffer.InterleaverBuffer:	
 				//data in
@@ -1140,11 +1091,8 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 				params.add( MMBuffer.numSamplesIndex, numSamples );
 				params.add( MMBuffer.baseAddressIndex, baseAddress );
 				break;
-			default:	//the main memory buffer 
-				params.add( baseAddress );
-				params.add( numSamples );
-				params.add( (String)bankCB.getSelectedItem() );
-				params.add( (String)dataTypeCB.getSelectedItem() );
+			default:	//the main memory buffer
+				FepBuffer.getBufferParameters( params );
 				break;
 		}
 		return params;
@@ -1164,8 +1112,6 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		panel4.repaint();
 		panel5.revalidate();
 		panel5.repaint();
-		/*tabbedPaned.revalidate();
-		tabbePaned.repaint();*/
 	}
 
 }	//End of class
diff --git a/src/ui/window/JDialogReferenceCP.java b/src/ui/window/JDialogReferenceCP.java
index 39cfb088c175bd813fabf27b0570e529f161ef26..63c1196e13f635fc7e5127eff89ec951c2e0ca3d 100644
--- a/src/ui/window/JDialogReferenceCP.java
+++ b/src/ui/window/JDialogReferenceCP.java
@@ -1330,7 +1330,6 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 	}
 
 	public Vector<String> getAssignedAttributes()	{
-		//before returning attributes I should sort them according to the cpMEC
 		return assignedAttributes;
 	}