diff --git a/src/ui/window/JDialogReferenceCP.java b/src/ui/window/JDialogReferenceCP.java
index c57279fa32618c5ce0f945c3c6a69f1d9c002dbc..9a99bb444d4c50f179368104de4d5e5173ef3651 100644
--- a/src/ui/window/JDialogReferenceCP.java
+++ b/src/ui/window/JDialogReferenceCP.java
@@ -77,9 +77,7 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 	private Vector<String> mappedUnits;
 
 	private ArrayList<TMLCommunicationPatternPanel> listCPs = new ArrayList<TMLCommunicationPatternPanel>();
-	private Vector<String> listCPsNames = new Vector<String>();
-	
-	//private ArrayList<TMLSDInstance> listInstances = new ArrayList<TMLSDInstance>();
+	private Vector<String> communicationPatternsSL = new Vector<String>();
 	
 	//Each entry of the array list is a hash set of strings corresponding to a given CP in listCPs
 	private ArrayList<HashSet<String>> listInstancesHash = new ArrayList<HashSet<String>>();
@@ -87,7 +85,8 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 	private HashSet<String> sdTransferInstances = new HashSet<String>();
 	private HashSet<String> sdControllerInstances = new HashSet<String>();
 		
-	private Vector<String> mappableArchUnits = new Vector<String>();
+	private Vector<String> mappableArchUnitsSL = new Vector<String>();
+	private Vector<String> sdInstancesSL = new Vector<String>();
 	
 	private int indexListCPsNames = 0;
 	private int indexListInstancesNames = 0;
@@ -101,7 +100,7 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
     
   // Panel1
 	private JPanel panel1;
-  private JComboBox SDinstances, architectureUnit, referenceCommunicationPattern;
+  private JComboBox sdInstancesCB, mappableArchUnitsCB, communicationPatternsCB;
   private JButton mapButton;
     
   //Panel2
@@ -141,7 +140,7 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
         removeButton.setEnabled( false );
         upButton.setEnabled( false );
         downButton.setEnabled( false );
-				if( mappableArchUnits.size() > 0 )	{
+				if( mappableArchUnitsSL.size() > 0 )	{
 					mapButton.setEnabled( true );
 				}
 				else	{
@@ -211,22 +210,21 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 
 				listCPs = cp.getTDiagramPanel().getMGUI().getAllTMLCP();
 				if( listCPs.size() == 0 ) {
-					listCPsNames.add( "No CP to reference" );
+					communicationPatternsSL.add( "No CP to reference" );
 					emptyCPsList = true;
 				}
 				else {
-					createListCPsNames();	//create listCPsNames (ArrayList<String>) out of listCPs
+					createListCPsNames();	//create communicationPatternsSL (ArrayList<String>) out of listCPs
 					indexListCPsNames = indexOf( cp.getReference() );
-					//System.out.println("name=" + artifact.getFullValue() + " index=" + index);
 				}
 
 				//fifth line panel1
         panel1.add( new JLabel( "Available CPs:"), c1 );
-        referenceCommunicationPattern = new JComboBox( listCPsNames );
-				referenceCommunicationPattern.setSelectedIndex( indexListCPsNames );
-				referenceCommunicationPattern.addActionListener( this );
-				referenceCommunicationPattern.setMinimumSize( new Dimension(150, 50) );
-        panel1.add( referenceCommunicationPattern, c1 );
+        communicationPatternsCB = new JComboBox( communicationPatternsSL );
+				communicationPatternsCB.setSelectedIndex( indexListCPsNames );
+				communicationPatternsCB.addActionListener( this );
+				communicationPatternsCB.setMinimumSize( new Dimension(150, 50) );
+        panel1.add( communicationPatternsCB, c1 );
 
 				//sixth line panel1
         c1.gridwidth = GridBagConstraints.REMAINDER; //end row
@@ -236,23 +234,22 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 
 				indexListInstancesNames = 0;
 				if( listCPs.size() == 0 ) {
-					HashSet temp = new HashSet<String>();
-					temp.add( "No instances to map" );
-					listInstancesHash.add( 0, temp );	//listInstancesHash is empty and temp can be safely added
+					sdInstancesSL.add( "No instances to map" );
 					emptyInstancesList = true;
 				}
 				else {
 					createListOfInstances();
+					sdInstancesSL = new Vector<String>( listInstancesHash.get( indexListCPsNames ) );
 					indexListInstancesNames = indexOf( cp.getReference() );
 				}
 
 				//seventh line panel1
         panel1.add( new JLabel( "Instance:" ), c1 );
-        SDinstances = new JComboBox( new Vector<String>( listInstancesHash.get( indexListCPsNames ) ) );
-				SDinstances.setSelectedIndex( 0 );
-				SDinstances.addActionListener( this );
-				SDinstances.setMinimumSize( new Dimension(150, 50) );
-        panel1.add( SDinstances, c1 );
+        sdInstancesCB = new JComboBox( sdInstancesSL );
+				sdInstancesCB.setSelectedIndex( 0 );
+				sdInstancesCB.addActionListener( this );
+				sdInstancesCB.setMinimumSize( new Dimension(150, 50) );
+        panel1.add( sdInstancesCB, c1 );
 				
 				//eigth line panel1
         c1.gridwidth = GridBagConstraints.REMAINDER; //end row
@@ -262,22 +259,22 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 
 				String selectedInstance = new Vector<String>( listInstancesHash.get( indexListCPsNames ) ).get(0);
 				if( sdStorageInstances.contains( selectedInstance ) )	{
-					mappableArchUnits = makeListOfMappableArchUnits( STORAGE );
+					mappableArchUnitsSL = makeListOfMappableArchUnits( STORAGE );
 				}
 				else	{
 					if( sdTransferInstances.contains( selectedInstance ) )	{
-						mappableArchUnits = makeListOfMappableArchUnits( TRANSFER );
+						mappableArchUnitsSL = makeListOfMappableArchUnits( TRANSFER );
 					}
 					else	{
 						if( sdControllerInstances.contains( selectedInstance ) )	{
-							mappableArchUnits = makeListOfMappableArchUnits( CONTROLLER );
+							mappableArchUnitsSL = makeListOfMappableArchUnits( CONTROLLER );
 						}
 					}
 				}
 				
 				indexListArchUnitsNames = 0;
-				if( mappableArchUnits.size() == 0 ) {
-					mappableArchUnits.add( "No mappable units" );
+				if( mappableArchUnitsSL.size() == 0 ) {
+					mappableArchUnitsSL.add( "No mappable units" );
 					emptyArchUnitsList = true;
 				}
 				/*else {
@@ -286,12 +283,12 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 				}*/
 				
 				//nineth line panel1
-        architectureUnit = new JComboBox( mappableArchUnits );
+        mappableArchUnitsCB = new JComboBox( mappableArchUnitsSL );
         panel1.add( new JLabel("Available architecture units:"), c1 );
-				architectureUnit.setSelectedIndex( 0 );
-				architectureUnit.setMinimumSize( new Dimension(150, 50) );
-				architectureUnit.addActionListener( this );
-        panel1.add( architectureUnit, c1 );
+				mappableArchUnitsCB.setSelectedIndex( 0 );
+				mappableArchUnitsCB.setMinimumSize( new Dimension(150, 50) );
+				mappableArchUnitsCB.addActionListener( this );
+        panel1.add( mappableArchUnitsCB, c1 );
         
         //tenth line panel1
         c1.gridwidth = GridBagConstraints.REMAINDER; //end row
@@ -455,10 +452,10 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
             downMappedInstance();
         } else if (evt.getSource() == upButton) {
             upMappedInstance();
-        }	else if( evt.getSource() == SDinstances )	{	//user has selected another instance
+        }	else if( evt.getSource() == sdInstancesCB )	{	//user has selected another instance
 					//update the list associated to the mappable arch units according to the instance type
 						updateMappableArchUnits();
-				}	else if( evt.getSource() == referenceCommunicationPattern )	{	//user has selected another CP. Previous mapping will be deleted
+				}	else if( evt.getSource() == communicationPatternsCB )	{	//user has selected another CP. Previous mapping will be deleted
 						updateSDInstancesList();
 						updateMappableArchUnits();
 						emptyMappedUnitsList();
@@ -467,23 +464,25 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 
 	private void mapInstance() {
 
-		if( listInstancesHash.get( referenceCommunicationPattern.getSelectedIndex() ).size() > 0 )	{
-			mappedUnits.add( referenceCommunicationPattern.getSelectedItem().toString() + "." + SDinstances.getSelectedItem().toString() +
-												" -> " + architectureUnit.getSelectedItem().toString() );
+		if( listInstancesHash.get( communicationPatternsCB.getSelectedIndex() ).size() > 0 )	{
+			mappedUnits.add( communicationPatternsCB.getSelectedItem().toString() + "." + sdInstancesCB.getSelectedItem().toString() +
+												" -> " + mappableArchUnitsCB.getSelectedItem().toString() );
 			//remove the mapped instance from the list
-	    HashSet<String> SDinstancesHash = listInstancesHash.get( referenceCommunicationPattern.getSelectedIndex() );
+	    HashSet<String> SDinstancesHash = listInstancesHash.get( communicationPatternsCB.getSelectedIndex() );
 			Iterator<String> i = SDinstancesHash.iterator();
 			while( i.hasNext() )	{
 				String element = i.next();
-				TraceManager.addDev( "Comparing " + element + " with " + SDinstances.getSelectedItem().toString() );
-				if( element.equals( SDinstances.getSelectedItem().toString() ) )	{
+				TraceManager.addDev( "Comparing " + element + " with " + sdInstancesCB.getSelectedItem().toString() );
+				if( element.equals( sdInstancesCB.getSelectedItem().toString() ) )	{
 					i.remove();
 					TraceManager.addDev( "Removing instance: " + element );
 					break;
 				}
 			}
-			listInstancesHash.set( referenceCommunicationPattern.getSelectedIndex(), SDinstancesHash );
-			makeSDInstancesComboBox( new Vector<String>( SDinstancesHash) );
+			sdInstancesSL = new Vector<String>( SDinstancesHash );
+			TraceManager.addDev( "The DS after removing instance: " + sdInstancesSL.toString() );
+			listInstancesHash.set( communicationPatternsCB.getSelectedIndex(), SDinstancesHash );
+			makeSDInstancesComboBox( sdInstancesSL );
 			listMappedUnits.setListData( mappedUnits );
 			removeButton.setEnabled( true );
 			if( SDinstancesHash.size() == 0 )	{
@@ -518,16 +517,23 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 			mapButton.setEnabled(as1.isCompatibleWith(as2));
 		}
 	}*/
-
-	private void updateSDInstancesList()	{
-
-		//makeSDInstancesComboBox();
-	}
+	
+	private void updateSDInstancesList()  {
+		 
+    if( listInstancesHash.get( communicationPatternsCB.getSelectedIndex() ).size() > 0 )  {
+    	makeSDInstancesComboBox( new Vector<String>( listInstancesHash.get( communicationPatternsCB.getSelectedIndex() ) ) );
+    }
+    else  {
+      Vector<String> emptyList = new Vector<String>();
+      emptyList.add( "No instances to map" );
+      makeSDInstancesComboBox( emptyList );
+    }
+  }
 
 	private void updateMappableArchUnits()	{
 
 		Vector<String> mappableArchUnits = new Vector<String>();
-		String selectedInstance = SDinstances.getSelectedItem().toString();
+		String selectedInstance = sdInstancesCB.getSelectedItem().toString();
 
 		if( sdStorageInstances.contains( selectedInstance ) )	{
 			mappableArchUnits = makeListOfMappableArchUnits( STORAGE );
@@ -544,8 +550,8 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 		}
 		TraceManager.addDev( "Before makingArchComboBox: " + mappableArchUnits.toString() );
 		makeArchitectureUnitsComboBox( mappableArchUnits );
-		for( int i = 0; i < architectureUnit.getModel().getSize(); i++ )	{
-			TraceManager.addDev( "After makingArchComboBox: " + architectureUnit.getModel().getElementAt(i) );
+		for( int i = 0; i < mappableArchUnitsCB.getModel().getSize(); i++ )	{
+			TraceManager.addDev( "After makingArchComboBox: " + mappableArchUnitsCB.getModel().getElementAt(i) );
 		}
 	}
     
@@ -556,17 +562,17 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 
 	private void makeArchitectureUnitsComboBox( Vector<String> newList )	{
 
-		architectureUnit.removeAllItems();
+		mappableArchUnitsCB.removeAllItems();
 		for( String s: newList ) {
-			architectureUnit.addItem( s );
+			mappableArchUnitsCB.addItem( s );
 		}
 	}
 
   private void makeSDInstancesComboBox( Vector<String> newList ) {
 
-  	SDinstances.removeAllItems();
+  	sdInstancesCB.removeAllItems();
 		for( String s: newList ) {
-			SDinstances.addItem( s );
+			sdInstancesCB.addItem( s );
 		}
 	}
     
@@ -624,7 +630,7 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 		if( emptyCPsList ) {
 			return "";
 		}
-		return (String)( referenceCommunicationPattern.getSelectedItem() );
+		return (String)( communicationPatternsCB.getSelectedItem() );
 	}
 
 	public boolean isRegularClose() {
@@ -638,8 +644,8 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 	public int indexOf( String name ) {
 		
 		int i = 0;
-		if( listCPsNames.size() > 0 )	{
-			for( String s : listCPsNames )	{
+		if( communicationPatternsSL.size() > 0 )	{
+			for( String s : communicationPatternsSL )	{
 				if( s.equals( name ) )	{
 					return i;
 				}
@@ -652,7 +658,7 @@ public class JDialogReferenceCP extends javax.swing.JDialog implements ActionLis
 	private void createListCPsNames()	{
 		if( listCPs.size() > 0 )	{
 			for( int i = 0; i < listCPs.size(); i++ )	{
-				listCPsNames.add( listCPs.get(i).getName() );
+				communicationPatternsSL.add( listCPs.get(i).getName() );
 			}
 		}
 	}