diff --git a/tools.descartes.dni.core/META-INF/MANIFEST.MF b/tools.descartes.dni.core/META-INF/MANIFEST.MF
index c55d481fac412d86d8af071c4ed75fbef74b20ed..d104b205e353e6637a03952890d37d4e4f27d4f0 100644
--- a/tools.descartes.dni.core/META-INF/MANIFEST.MF
+++ b/tools.descartes.dni.core/META-INF/MANIFEST.MF
@@ -10,7 +10,6 @@ Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: tools.descartes.dni.dnimm3,
  tools.descartes.dni.dnimm3.impl,
- tools.descartes.dni.dnimm3.presentation,
  tools.descartes.dni.dnimm3.provider,
  tools.descartes.dni.dnimm3.util
 Require-Bundle: org.eclipse.emf.ecore;visibility:=reexport,
diff --git a/tools.descartes.dni.core/model/DNIMM3.xcore b/tools.descartes.dni.core/model/DNIMM3.xcore
index 39440a715ca49dd5966f3fdd3ac007b3b819e1b5..81dcf00d8a00678f16065678a0e8c01db565f51d 100644
--- a/tools.descartes.dni.core/model/DNIMM3.xcore
+++ b/tools.descartes.dni.core/model/DNIMM3.xcore
@@ -272,7 +272,7 @@ class WaitAction extends AbstractAction {
 	contains Dependency[1] waitTime
 }
 
-interface PerformanceSpecification {
+interface PerformanceSpecification extends Identifier {
 }
 
 class PerformanceLink extends PerformanceSpecification {
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
index b75ec4670aab299fbe59e1a918f5af37c146802e..59f3a2c94e7e244f472827cda761183b900d5768 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/DNIPackage.java
@@ -2583,6 +2583,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_SPECIFICATION = 39;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SPECIFICATION__UID = IDENTIFIER__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SPECIFICATION__UID_GENERATED = IDENTIFIER__UID_GENERATED;
+
 	/**
 	 * The number of structural features of the '<em>Performance Specification</em>' class.
 	 * <!-- begin-user-doc -->
@@ -2590,7 +2608,7 @@ public interface DNIPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PERFORMANCE_SPECIFICATION_FEATURE_COUNT = 0;
+	int PERFORMANCE_SPECIFICATION_FEATURE_COUNT = IDENTIFIER_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of operations of the '<em>Performance Specification</em>' class.
@@ -2599,7 +2617,7 @@ public interface DNIPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PERFORMANCE_SPECIFICATION_OPERATION_COUNT = 0;
+	int PERFORMANCE_SPECIFICATION_OPERATION_COUNT = IDENTIFIER_OPERATION_COUNT + 0;
 
 	/**
 	 * The meta object id for the '{@link tools.descartes.dni.dnimm3.impl.PerformanceLinkImpl <em>Performance Link</em>}' class.
@@ -2611,6 +2629,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_LINK = 40;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_LINK__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_LINK__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Propagation Delay</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -2666,6 +2702,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_NETWORK_INTERFACE = 41;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_NETWORK_INTERFACE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_NETWORK_INTERFACE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Is Up</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -3141,6 +3195,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int INTERMEDIATE_PERFORMANCE = 48;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_PERFORMANCE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_PERFORMANCE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Forwarding Latency</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -3205,6 +3277,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int END_PERFORMANCE = 49;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_PERFORMANCE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_PERFORMANCE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Software Layers Delay</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
@@ -3251,6 +3341,24 @@ public interface DNIPackage extends EPackage {
 	 */
 	int PERFORMANCE_SDN_NODE = 50;
 
+	/**
+	 * The feature id for the '<em><b>Uid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SDN_NODE__UID = PERFORMANCE_SPECIFICATION__UID;
+
+	/**
+	 * The feature id for the '<em><b>Uid generated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PERFORMANCE_SDN_NODE__UID_GENERATED = PERFORMANCE_SPECIFICATION__UID_GENERATED;
+
 	/**
 	 * The feature id for the '<em><b>Software Switching Performance</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java
index 0ef1f178f34c69cf3fd35e48df843b48a5b5eb42..2068da684571b4327b510b25f42448e449ed9260 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/PerformanceSpecification.java
@@ -2,8 +2,6 @@
  */
 package tools.descartes.dni.dnimm3;
 
-import org.eclipse.emf.ecore.EObject;
-
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Performance Specification</b></em>'.
@@ -14,5 +12,5 @@ import org.eclipse.emf.ecore.EObject;
  * @model interface="true" abstract="true"
  * @generated
  */
-public interface PerformanceSpecification extends EObject {
+public interface PerformanceSpecification extends Identifier {
 } // PerformanceSpecification
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
index 50aa37a8629f5a64a151d1dbc57b42e9a5fa7af2..9fe7ab2c794b80cd3231479b3f524d3c8b696aa4 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/DNIPackageImpl.java
@@ -3055,6 +3055,7 @@ public class DNIPackageImpl extends EPackageImpl implements DNIPackage {
 		stopActionEClass.getESuperTypes().add(this.getAbstractAction());
 		transmitActionEClass.getESuperTypes().add(this.getAbstractAction());
 		waitActionEClass.getESuperTypes().add(this.getAbstractAction());
+		performanceSpecificationEClass.getESuperTypes().add(this.getIdentifier());
 		performanceLinkEClass.getESuperTypes().add(this.getPerformanceSpecification());
 		performanceNetworkInterfaceEClass.getESuperTypes().add(this.getPerformanceSpecification());
 		sdnControllerEClass.getESuperTypes().add(this.getCommunicatingApplication());
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java
index 8ce38eff56e6532c9b21e49f55579da1a744ce1d..089c65f5193b527776b021296dd5ee62c820b0c0 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/EndPerformanceImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.EndPerformance;
@@ -30,7 +28,7 @@ import tools.descartes.dni.dnimm3.EndPerformanceType;
  *
  * @generated
  */
-public class EndPerformanceImpl extends MinimalEObjectImpl.Container implements EndPerformance {
+public class EndPerformanceImpl extends IdentifierImpl implements EndPerformance {
 	/**
 	 * The cached value of the '{@link #getSoftwareLayersDelay() <em>Software Layers Delay</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java
index 098831fbc5cb733b883c1e871029dc7398ef2b25..0b60eadf29dc6cba2f74dea77218d2ffa63057f3 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/IntermediatePerformanceImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.IntermediatePerformance;
@@ -32,7 +30,7 @@ import tools.descartes.dni.dnimm3.IntermediatePerformanceType;
  *
  * @generated
  */
-public class IntermediatePerformanceImpl extends MinimalEObjectImpl.Container implements IntermediatePerformance {
+public class IntermediatePerformanceImpl extends IdentifierImpl implements IntermediatePerformance {
 	/**
 	 * The cached value of the '{@link #getForwardingLatency() <em>Forwarding Latency</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java
index a64fd027324b0664c72e5b67088fae19cac165bb..9033b6a53ba1d6d0b7d2bbf6436e37d25693b6c3 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceLinkImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.LinkPerformanceType;
@@ -31,7 +29,7 @@ import tools.descartes.dni.dnimm3.PerformanceLink;
  *
  * @generated
  */
-public class PerformanceLinkImpl extends MinimalEObjectImpl.Container implements PerformanceLink {
+public class PerformanceLinkImpl extends IdentifierImpl implements PerformanceLink {
 	/**
 	 * The cached value of the '{@link #getPropagationDelay() <em>Propagation Delay</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java
index 305e2752cdadd267a29b0e1848cf8ed20f66f370..b71cb21a4f9bada01775836d9202586a7d88cc8b 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceNetworkInterfaceImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.Dependency;
 import tools.descartes.dni.dnimm3.NetworkInterfacePerformanceType;
@@ -34,7 +32,7 @@ import tools.descartes.dni.dnimm3.Variable;
  *
  * @generated
  */
-public class PerformanceNetworkInterfaceImpl extends MinimalEObjectImpl.Container implements PerformanceNetworkInterface {
+public class PerformanceNetworkInterfaceImpl extends IdentifierImpl implements PerformanceNetworkInterface {
 	/**
 	 * The default value of the '{@link #isIsUp() <em>Is Up</em>}' attribute.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java
index f9e0a612e8bc5989a2ebe7f901eb80eb8e6504a3..fb4cef482357917b721b5d68f4ef4ae1c26a0b11 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/impl/PerformanceSdnNodeImpl.java
@@ -9,8 +9,6 @@ import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 import tools.descartes.dni.dnimm3.DNIPackage;
 import tools.descartes.dni.dnimm3.IntermediatePerformance;
 import tools.descartes.dni.dnimm3.PerformanceSdnNode;
@@ -31,7 +29,7 @@ import tools.descartes.dni.dnimm3.SdnNodePerformanceType;
  *
  * @generated
  */
-public class PerformanceSdnNodeImpl extends MinimalEObjectImpl.Container implements PerformanceSdnNode {
+public class PerformanceSdnNodeImpl extends IdentifierImpl implements PerformanceSdnNode {
 	/**
 	 * The cached value of the '{@link #getSoftwareSwitchingPerformance() <em>Software Switching Performance</em>}' containment reference.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java
index c699b30307c191fb5f0aaa07a878c38b04522a3b..e74279f5903d070d5505f887f89c6789e723d39e 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/EndPerformanceItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.EndPerformance;
  * @generated
  */
 public class EndPerformanceItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -138,7 +123,10 @@ public class EndPerformanceItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_EndPerformance_type");
+		String label = ((EndPerformance)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_EndPerformance_type") :
+			getString("_UI_EndPerformance_type") + " " + label;
 	}
 	
 
@@ -198,15 +186,4 @@ public class EndPerformanceItemProvider
 				 DNIFactory.eINSTANCE.createExponentialFunction()));
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java
index eca30900c0adbbfd54f02e6c91482a57147b6d26..30b03ae682cf23a0af2766209beeb67d5c159583 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/IntermediatePerformanceItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.IntermediatePerformance;
  * @generated
  */
 public class IntermediatePerformanceItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -140,7 +125,10 @@ public class IntermediatePerformanceItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_IntermediatePerformance_type");
+		String label = ((IntermediatePerformance)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_IntermediatePerformance_type") :
+			getString("_UI_IntermediatePerformance_type") + " " + label;
 	}
 	
 
@@ -276,15 +264,4 @@ public class IntermediatePerformanceItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java
index d6eb7ad10d9624b4957948ad85b72d094d5ffb5c..6d8cec45e3c2ae16b24c0939f2301c2a146868d4 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceLinkItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.PerformanceLink;
  * @generated
  */
 public class PerformanceLinkItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -139,7 +124,10 @@ public class PerformanceLinkItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_PerformanceLink_type");
+		String label = ((PerformanceLink)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerformanceLink_type") :
+			getString("_UI_PerformanceLink_type") + " " + label;
 	}
 	
 
@@ -248,15 +236,4 @@ public class PerformanceLinkItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java
index 4006a1dec84922beb24211e39d4bb26df468f797..41f7c67496542561490ce9ff824d546b6339e496 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceNetworkInterfaceItemProvider.java
@@ -8,20 +8,11 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -35,13 +26,7 @@ import tools.descartes.dni.dnimm3.PerformanceNetworkInterface;
  * @generated
  */
 public class PerformanceNetworkInterfaceItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -186,8 +171,10 @@ public class PerformanceNetworkInterfaceItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		PerformanceNetworkInterface performanceNetworkInterface = (PerformanceNetworkInterface)object;
-		return getString("_UI_PerformanceNetworkInterface_type") + " " + performanceNetworkInterface.isIsUp();
+		String label = ((PerformanceNetworkInterface)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerformanceNetworkInterface_type") :
+			getString("_UI_PerformanceNetworkInterface_type") + " " + label;
 	}
 	
 
@@ -290,15 +277,4 @@ public class PerformanceNetworkInterfaceItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java
index 2bff971badfd1db0d01c4b8ddc9444141d130501..b82f1a6132e3bac9437f6e44c24d11960bf43f95 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/provider/PerformanceSdnNodeItemProvider.java
@@ -8,19 +8,10 @@ import java.util.List;
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-
-import org.eclipse.emf.common.util.ResourceLocator;
-
 import org.eclipse.emf.ecore.EStructuralFeature;
 
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
 import tools.descartes.dni.dnimm3.DNIFactory;
@@ -34,13 +25,7 @@ import tools.descartes.dni.dnimm3.PerformanceSdnNode;
  * @generated
  */
 public class PerformanceSdnNodeItemProvider 
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends IdentifierItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->
@@ -139,7 +124,10 @@ public class PerformanceSdnNodeItemProvider
 	 */
 	@Override
 	public String getText(Object object) {
-		return getString("_UI_PerformanceSdnNode_type");
+		String label = ((PerformanceSdnNode)object).getUid();
+		return label == null || label.length() == 0 ?
+			getString("_UI_PerformanceSdnNode_type") :
+			getString("_UI_PerformanceSdnNode_type") + " " + label;
 	}
 	
 
@@ -208,15 +196,4 @@ public class PerformanceSdnNodeItemProvider
 		return super.getCreateChildText(owner, feature, child, selection);
 	}
 
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return Dnimm3EditPlugin.INSTANCE;
-	}
-
 }
diff --git a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
index 72672c60c9510ebd4d12eb2821603b464cf7c06e..9657509fcc14cc7d11c0ae28ea8f6184cacb6ad5 100644
--- a/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
+++ b/tools.descartes.dni.core/src/tools/descartes/dni/dnimm3/util/DNISwitch.java
@@ -358,6 +358,7 @@ public class DNISwitch<T> extends Switch<T> {
 			case DNIPackage.PERFORMANCE_SPECIFICATION: {
 				PerformanceSpecification performanceSpecification = (PerformanceSpecification)theEObject;
 				T result = casePerformanceSpecification(performanceSpecification);
+				if (result == null) result = caseIdentifier(performanceSpecification);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -365,6 +366,7 @@ public class DNISwitch<T> extends Switch<T> {
 				PerformanceLink performanceLink = (PerformanceLink)theEObject;
 				T result = casePerformanceLink(performanceLink);
 				if (result == null) result = casePerformanceSpecification(performanceLink);
+				if (result == null) result = caseIdentifier(performanceLink);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -372,6 +374,7 @@ public class DNISwitch<T> extends Switch<T> {
 				PerformanceNetworkInterface performanceNetworkInterface = (PerformanceNetworkInterface)theEObject;
 				T result = casePerformanceNetworkInterface(performanceNetworkInterface);
 				if (result == null) result = casePerformanceSpecification(performanceNetworkInterface);
+				if (result == null) result = caseIdentifier(performanceNetworkInterface);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -425,6 +428,7 @@ public class DNISwitch<T> extends Switch<T> {
 				IntermediatePerformance intermediatePerformance = (IntermediatePerformance)theEObject;
 				T result = caseIntermediatePerformance(intermediatePerformance);
 				if (result == null) result = casePerformanceSpecification(intermediatePerformance);
+				if (result == null) result = caseIdentifier(intermediatePerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -432,6 +436,7 @@ public class DNISwitch<T> extends Switch<T> {
 				EndPerformance endPerformance = (EndPerformance)theEObject;
 				T result = caseEndPerformance(endPerformance);
 				if (result == null) result = casePerformanceSpecification(endPerformance);
+				if (result == null) result = caseIdentifier(endPerformance);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -439,6 +444,7 @@ public class DNISwitch<T> extends Switch<T> {
 				PerformanceSdnNode performanceSdnNode = (PerformanceSdnNode)theEObject;
 				T result = casePerformanceSdnNode(performanceSdnNode);
 				if (result == null) result = casePerformanceSpecification(performanceSdnNode);
+				if (result == null) result = caseIdentifier(performanceSdnNode);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}