diff --git a/src/tmltranslator/ctranslator/IntlOperationMEC.java b/src/tmltranslator/ctranslator/IntlOperationMEC.java
index 59ad9e66f2e04b334ddf6c2dd35e4abd1b81ddc3..d94d75b18b149882a1f0439dc0f656b7c69ececb 100644
--- a/src/tmltranslator/ctranslator/IntlOperationMEC.java
+++ b/src/tmltranslator/ctranslator/IntlOperationMEC.java
@@ -54,35 +54,32 @@ public class IntlOperationMEC extends OperationMEC	{
 	public IntlOperationMEC( String ctxName, String ID0, String OD0, String BTC )	{
 		name = "InterleaverOperationMEC";
 		exec_code = TAB + "/*firm instruction*/" + CR + TAB +
-			"fep_set_qx(&" + ctxName + ", ((FEP_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->q);" + CR + TAB +
 			"/*start execution*/" + CR + TAB +
-			"fep_start(&" + ctxName + ");" + CR;
+			"intl_start(&" + ctxName + ");" + CR;
 		
 		init_code ="/***** INIT " + ctxName + " *******/" + CR +
-			"void init_" + ctxName + "(void){" + CR + TAB +
-			"fep_ctx_init(&" + ctxName + ", (uint64_t) /*USER TODO: value*/);" + CR + TAB +
+			"void init_" + ctxName.split("_ctx")[0] + "(void){" + CR + TAB +
+			"intl_ctx_init(&" + ctxName + ", (uint64_t) /*USER TODO: value*/);" + CR + TAB +
 			"// initialize context" + CR + TAB +
-			"fep_set_op(&" + ctxName + ", FEP_OP_MOV);" + CR + TAB +
-			"// X vector configuration => Zk=Y[Xi]" + CR + TAB +
-			"fep_set_r(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_l(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_bx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_qx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_wx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_tx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_sx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_nx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_mx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_px(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_dx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_vrx(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_vix(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"// Operation configuration" + CR + TAB +
-			"fep_set_sma(&" + ctxName + ", (uint64_t) /* USER TODO: value */);" + CR + TAB +
-			"fep_set_qs(&" + ctxName + ", ((FEP_BUFF_TYPE*)sig[" + OD0 + "].pBuff)->q);" + CR + TAB +
-			"fep_set_bs(&" + ctxName + ", ((FEP_BUFF_TYPE*)sig[" + OD0 + "].pBuff)->b);" + CR + TAB +
+			"intl_set_op(&" + ctxName + ", FEP_OP_MOV);" + CR + TAB +
+			"intl_set_sv( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_arm( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_re( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_se( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_fe( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_pbo( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_pbi( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_widm1( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_biof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_boof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_fz( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_fo( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_iof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_oof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_pof( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
+			"intl_set_lenm1( (((INTL_BUFF_TYPE*)sig[" + ID0 + "].pBuff)->base_address), (uint64_t) /* USER TODO: value */);" + CR + TAB +
 			"}" + CR;
-		cleanup_code = "fep_ctx_cleanup(&" + ctxName + ");";
+		cleanup_code = "intl_ctx_cleanup(&" + ctxName + ");";
 	}
 
 }	//End of class
diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java
index 20e5133792b7139b5c60c2a75901bb16befa202c..2f3f96e3de86c631b3d43e991e2f19646614a8cb 100755
--- a/src/ui/window/JDialogPortArtifact.java
+++ b/src/ui/window/JDialogPortArtifact.java
@@ -79,7 +79,8 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
   private JButton cancelButton;
 
 	//Code generation
-	private JPanel panel3;
+	private JPanel panel3, panel4, panel5;
+	private JTabbedPane tabbedPane;
 	private int bufferType = 0;
 	private boolean loadBufferParameters = false;
 	private ArrayList<String> bufferParameters;
@@ -133,6 +134,8 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
         panel3.setLayout(gridbag2);
         panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: buffer attributes"));
         panel3.setPreferredSize(new Dimension(650, 350));
+				
+				tabbedPane = new JTabbedPane();
         
 		c1.gridwidth = 1;
         c1.gridheight = 1;
@@ -276,7 +279,12 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		c0.gridwidth = GridBagConstraints.REMAINDER; //end row
 		c0.fill = GridBagConstraints.BOTH;
 		c.add( panel2, c0 );
-		c.add( panel3, c0 );
+		if( ( bufferType == Buffer.MapperBuffer ) || ( bufferType == Buffer.InterleaverBuffer ) )	{
+			c.add( tabbedPane, c0 );
+		}
+		else	{
+			c.add( panel3, c0 );
+		}
 
 		c0.gridwidth = 1;
 		c0.gridheight = 1;
@@ -326,8 +334,118 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 	}
 
 	private void makeInterleaverBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
+
+		GridBagLayout gridbag2 = new GridBagLayout();
+
+  	panel3 = new JPanel();
+		panel3.setLayout(gridbag2);
+		panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: input buffer attributes"));
+		panel3.setPreferredSize(new Dimension(650, 350));
+
+  	panel4 = new JPanel();
+		panel4.setLayout(gridbag2);
+		panel4.setBorder(new javax.swing.border.TitledBorder("Code generation: output buffer attributes"));
+		panel4.setPreferredSize(new Dimension(650, 350));
+
+  	panel5 = new JPanel();
+		panel5.setLayout(gridbag2);
+		panel5.setBorder(new javax.swing.border.TitledBorder("Code generation: Permutation Table attributes"));
+		panel5.setPreferredSize(new Dimension(650, 350));
+		
+		//Data In panel
 		c2.anchor = GridBagConstraints.LINE_START;
-		makeMainMemoryBufferPanel( c1, c2 );
+		numSamplesTF = new JTextField( numSamples, 5 );
+		panel3.add( new JLabel( "Number of symbols = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel3.add( numSamplesTF, c1 );
+		//
+		baseAddressTF = new JTextField( baseAddress, 5 );
+		panel3.add( new JLabel( "Base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel3.add( baseAddressTF, c1 );
+		//
+		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
+		panel3.add( new JLabel( "Number of bits/symbol = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel3.add( bitsPerSymbolTF, c1 );
+		//
+		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
+		panel3.add( new JLabel( "Symbol base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel3.add( symbolBaseAddressTF, c1 );
+		//
+		symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) );
+		panel3.add( new JLabel( "Symmetrical value = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		if( symmetricalValue != null )	{
+			symmetricalValueCB.setSelectedItem( symmetricalValue );
+		}
+		panel3.add( symmetricalValueCB, c1 );
+
+		//Data Out panel
+		c2.anchor = GridBagConstraints.LINE_START;
+		numSamplesTF = new JTextField( numSamples, 5 );
+		panel4.add( new JLabel( "Number of symbols = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( numSamplesTF, c1 );
+		//
+		baseAddressTF = new JTextField( baseAddress, 5 );
+		panel4.add( new JLabel( "Base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( baseAddressTF, c1 );
+		//
+		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
+		panel4.add( new JLabel( "Number of bits/symbol = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( bitsPerSymbolTF, c1 );
+		//
+		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
+		panel4.add( new JLabel( "Symbol base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( symbolBaseAddressTF, c1 );
+		//
+		symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) );
+		panel4.add( new JLabel( "Symmetrical value = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		if( symmetricalValue != null )	{
+			symmetricalValueCB.setSelectedItem( symmetricalValue );
+		}
+		panel4.add( symmetricalValueCB, c1 );
+
+		//Permutation Table panel
+		c2.anchor = GridBagConstraints.LINE_START;
+		numSamplesTF = new JTextField( numSamples, 5 );
+		panel5.add( new JLabel( "Number of symbols = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( numSamplesTF, c1 );
+		//
+		baseAddressTF = new JTextField( baseAddress, 5 );
+		panel5.add( new JLabel( "Base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( baseAddressTF, c1 );
+		//
+		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
+		panel5.add( new JLabel( "Number of bits/symbol = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( bitsPerSymbolTF, c1 );
+		//
+		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
+		panel5.add( new JLabel( "Symbol base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( symbolBaseAddressTF, c1 );
+		//
+		symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) );
+		panel5.add( new JLabel( "Symmetrical value = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		if( symmetricalValue != null )	{
+			symmetricalValueCB.setSelectedItem( symmetricalValue );
+		}
+		panel5.add( symmetricalValueCB, c1 );
+
+		tabbedPane.addTab( "Data In", panel3 );
+		tabbedPane.addTab( "Data Out", panel4 );
+		tabbedPane.addTab( "Permutation Table", panel5 );
+		tabbedPane.setSelectedIndex(0);
 	}
 
 	private void makeAdaifBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
@@ -337,9 +455,27 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 
 	private void makeMapperBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
 
+		GridBagLayout gridbag2 = new GridBagLayout();
+
+  	panel3 = new JPanel();
+		panel3.setLayout(gridbag2);
+		panel3.setBorder(new javax.swing.border.TitledBorder("Code generation: input buffer attributes"));
+		panel3.setPreferredSize(new Dimension(650, 350));
+
+  	panel4 = new JPanel();
+		panel4.setLayout(gridbag2);
+		panel4.setBorder(new javax.swing.border.TitledBorder("Code generation: output buffer attributes"));
+		panel4.setPreferredSize(new Dimension(650, 350));
+
+  	panel5 = new JPanel();
+		panel5.setLayout(gridbag2);
+		panel5.setBorder(new javax.swing.border.TitledBorder("Code generation: Look Up Table attributes"));
+		panel5.setPreferredSize(new Dimension(650, 350));
+		
+		//Data In panel
 		c2.anchor = GridBagConstraints.LINE_START;
 		numSamplesTF = new JTextField( numSamples, 5 );
-		panel3.add( new JLabel( "Number of samples = "),  c2 );
+		panel3.add( new JLabel( "Number of symbols = "),  c2 );
 		c1.gridwidth = GridBagConstraints.REMAINDER;
 		panel3.add( numSamplesTF, c1 );
 		//
@@ -365,6 +501,71 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 			symmetricalValueCB.setSelectedItem( symmetricalValue );
 		}
 		panel3.add( symmetricalValueCB, c1 );
+
+		//Data Out panel
+		c2.anchor = GridBagConstraints.LINE_START;
+		numSamplesTF = new JTextField( numSamples, 5 );
+		panel4.add( new JLabel( "Number of symbols = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( numSamplesTF, c1 );
+		//
+		baseAddressTF = new JTextField( baseAddress, 5 );
+		panel4.add( new JLabel( "Base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( baseAddressTF, c1 );
+		//
+		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
+		panel4.add( new JLabel( "Number of bits/symbol = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( bitsPerSymbolTF, c1 );
+		//
+		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
+		panel4.add( new JLabel( "Symbol base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel4.add( symbolBaseAddressTF, c1 );
+		//
+		symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) );
+		panel4.add( new JLabel( "Symmetrical value = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		if( symmetricalValue != null )	{
+			symmetricalValueCB.setSelectedItem( symmetricalValue );
+		}
+		panel4.add( symmetricalValueCB, c1 );
+
+		//Look Up Table panel
+		c2.anchor = GridBagConstraints.LINE_START;
+		numSamplesTF = new JTextField( numSamples, 5 );
+		panel5.add( new JLabel( "Number of symbols = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( numSamplesTF, c1 );
+		//
+		baseAddressTF = new JTextField( baseAddress, 5 );
+		panel5.add( new JLabel( "Base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( baseAddressTF, c1 );
+		//
+		bitsPerSymbolTF = new JTextField( bitsPerSymbol, 5 );
+		panel5.add( new JLabel( "Number of bits/symbol = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( bitsPerSymbolTF, c1 );
+		//
+		symbolBaseAddressTF = new JTextField( symbolBaseAddress, 5 );
+		panel5.add( new JLabel( "Symbol base address = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		panel5.add( symbolBaseAddressTF, c1 );
+		//
+		symmetricalValueCB = new JComboBox( new Vector<String>( Arrays.asList( MapperBuffer.symmetricalValues ) ) );
+		panel5.add( new JLabel( "Symmetrical value = "),  c2 );
+		c1.gridwidth = GridBagConstraints.REMAINDER;
+		if( symmetricalValue != null )	{
+			symmetricalValueCB.setSelectedItem( symmetricalValue );
+		}
+		panel5.add( symmetricalValueCB, c1 );
+
+		tabbedPane.addTab( "Data In", panel3 );
+		tabbedPane.addTab( "Data Out", panel4 );
+		tabbedPane.addTab( "Look Up Table", panel5 );
+		tabbedPane.setSelectedIndex(0);
 	}
 
 	private void makeMainMemoryBufferPanel( GridBagConstraints c1, GridBagConstraints c2 )	{
@@ -443,39 +644,53 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		switch( bufferType )	{
 			case Buffer.FepBuffer:	
 				panel3.removeAll();
+				tabbedPane.removeAll();
 				makeFepBufferPanel( c1, c2 );
 				panel3.revalidate();
 				panel3.repaint();
+				tabbedPane.add( "Data", panel3 );
 				break;
 			case Buffer.MapperBuffer:	
-				panel3.removeAll();
+				cleanPanels();
 				makeMapperBufferPanel( c1, c2 );
-				panel3.revalidate();
-				panel3.repaint();
+				revalidateAndRepaintPanels();
+				tabbedPane.addTab( "Data In", panel3 );
+				tabbedPane.addTab( "Data Out", panel4 );
+				tabbedPane.addTab( "Look Up Table", panel5 );
+				tabbedPane.setSelectedIndex(0);
 				break;
 			case Buffer.AdaifBuffer:	
 				panel3.removeAll();
+				tabbedPane.removeAll();
 				makeAdaifBufferPanel( c1, c2 );
 				panel3.revalidate();
 				panel3.repaint();
+				tabbedPane.add( "Data", panel3 );
 				break;
-			case Buffer.InterleaverBuffer:	
-				panel3.removeAll();
+			case Buffer.InterleaverBuffer:
+				cleanPanels();
 				makeInterleaverBufferPanel( c1, c2 );
-				panel3.revalidate();
-				panel3.repaint();
+				revalidateAndRepaintPanels();
+				tabbedPane.addTab( "Data In", panel3 );
+				tabbedPane.addTab( "Data Out", panel4 );
+				tabbedPane.addTab( "Permutation Table", panel5 );
+				tabbedPane.setSelectedIndex(0);
 				break;
 			case Buffer.MainMemoryBuffer:	
 				panel3.removeAll();
+				tabbedPane.removeAll();
 				makeMainMemoryBufferPanel( c1, c2 );
 				panel3.revalidate();
 				panel3.repaint();
+				tabbedPane.add( "Data", panel3 );
 				break;
 			default:	//the main memory buffer 
 				panel3.removeAll();
+				tabbedPane.removeAll();
 				makeFepBufferPanel( c1, c2 );
 				panel3.revalidate();
 				panel3.repaint();
+				tabbedPane.add( "Data", panel3 );
 				break;
 		}
 	}
@@ -754,4 +969,22 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 		return params;
 	}
 
+	private void cleanPanels()	{
+		panel3.removeAll();
+		panel4.removeAll();
+		panel5.removeAll();
+		tabbedPane.removeAll();
+	}
+
+	private void revalidateAndRepaintPanels()	{
+		panel3.revalidate();
+		panel3.repaint();
+		panel4.revalidate();
+		panel4.repaint();
+		panel5.revalidate();
+		panel5.repaint();
+		/*tabbedPaned.revalidate();
+		tabbePaned.repaint();*/
+	}
+
 }	//End of class