diff --git a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
index add40e5..d9e4dd2 100644
--- a/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
+++ b/core/org.eclipse.stem.core/src/org/eclipse/stem/core/logger/provider/LoggerItemProvider.java
@@ -13,7 +13,6 @@
 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.common.util.URI;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
@@ -22,7 +21,6 @@
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.stem.core.common.provider.CoreEditPlugin;
 import org.eclipse.stem.core.common.provider.IdentifiableItemProvider;
-import org.eclipse.stem.core.logger.Logger;
 
 /**
  * This is the item provider adapter for a {@link org.eclipse.stem.core.logger.Logger} object.
@@ -78,15 +76,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((Logger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_Logger_type") : //$NON-NLS-1$
-			getString("_UI_Logger_type") + " " + label; //$NON-NLS-1$ //$NON-NLS-2$
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java
index 41281c4..9a7eed3 100644
--- a/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java
+++ b/core/org.eclipse.stem.loggers.csv/src/org/eclipse/stem/loggers/csv/provider/CSVLoggerItemProvider.java
@@ -17,7 +17,6 @@
 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.common.util.URI;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -247,15 +246,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((CSVLogger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_CSVLogger_type") :
-			getString("_UI_CSVLogger_type") + " " + label;
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java
index 920c75c..0e6379e 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/IdentifierProperty.java
@@ -20,11 +20,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.IdentifierProperty#getIdentifier <em>Identifier</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.IdentifierProperty#getProperty <em>Property</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.loggers.SimulationLoggerPackage#getIdentifierProperty()
  * @model
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java
index aaba40f..ab02307 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/LOGGER_EVENTS.java
@@ -308,6 +308,8 @@
 	 * Returns the '<em><b>LOGGER EVENTS</b></em>' literal with the specified literal value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static LOGGER_EVENTS get(String literal) {
@@ -324,6 +326,8 @@
 	 * Returns the '<em><b>LOGGER EVENTS</b></em>' literal with the specified name.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static LOGGER_EVENTS getByName(String name) {
@@ -340,6 +344,8 @@
 	 * Returns the '<em><b>LOGGER EVENTS</b></em>' literal with the specified integer value.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
 	 * @generated
 	 */
 	public static LOGGER_EVENTS get(int value) {
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java
index 43fb08d..c0205e6 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SimulationLogger.java
@@ -22,12 +22,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.SimulationLogger#isEnabled <em>Enabled</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.SimulationLogger#getStepMod <em>Step Mod</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.SimulationLogger#getStartStep <em>Start Step</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.loggers.SimulationLoggerPackage#getSimulationLogger()
  * @model abstract="true"
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java
index 45fd326..6227a07 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/SynchronousDecoratorPropertyLogger.java
@@ -23,10 +23,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.SynchronousDecoratorPropertyLogger#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.stem.loggers.SimulationLoggerPackage#getSynchronousDecoratorPropertyLogger()
  * @model abstract="true"
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java
index 8b4f31b..350c13c 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/IdentifierPropertyImpl.java
@@ -23,11 +23,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.impl.IdentifierPropertyImpl#getIdentifier <em>Identifier</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.impl.IdentifierPropertyImpl#getProperty <em>Property</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java
index d9d79e7..2b31175 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerEventImpl.java
@@ -19,8 +19,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Event</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java
index e82eb5d..3071bc9 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerFactoryImpl.java
@@ -45,7 +45,7 @@
 	 */
 	public static SimulationLoggerFactory init() {
 		try {
-			SimulationLoggerFactory theSimulationLoggerFactory = (SimulationLoggerFactory)EPackage.Registry.INSTANCE.getEFactory("http://org/eclipse/stem/loggers/"); 
+			SimulationLoggerFactory theSimulationLoggerFactory = (SimulationLoggerFactory)EPackage.Registry.INSTANCE.getEFactory(SimulationLoggerPackage.eNS_URI);
 			if (theSimulationLoggerFactory != null) {
 				return theSimulationLoggerFactory;
 			}
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java
index 8450e60..9dd1593 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SimulationLoggerImpl.java
@@ -26,12 +26,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.impl.SimulationLoggerImpl#isEnabled <em>Enabled</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.impl.SimulationLoggerImpl#getStepMod <em>Step Mod</em>}</li>
  *   <li>{@link org.eclipse.stem.loggers.impl.SimulationLoggerImpl#getStartStep <em>Start Step</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java
index 031fc7b..2c76697 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/impl/SynchronousDecoratorPropertyLoggerImpl.java
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.stem.loggers.impl.SynchronousDecoratorPropertyLoggerImpl#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java
index d0e0f7e..ab380e1 100644
--- a/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java
+++ b/core/org.eclipse.stem.loggers/src/org/eclipse/stem/loggers/util/SimulationLoggerSwitch.java
@@ -127,6 +127,12 @@
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SimulationLoggerPackage.ISIMULATION_LISTENER: {
+				ISimulationListener iSimulationListener = (ISimulationListener)theEObject;
+				T1 result = caseISimulationListener(iSimulationListener);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SimulationLoggerPackage.ASYNCHRONOUS_LOGGER: {
 				AsynchronousLogger asynchronousLogger = (AsynchronousLogger)theEObject;
 				T1 result = caseAsynchronousLogger(asynchronousLogger);
diff --git a/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF b/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF
index 4c6f3de..855745b 100644
--- a/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF
+++ b/core/org.eclipse.stem.ui.loggers/META-INF/MANIFEST.MF
@@ -8,13 +8,16 @@
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
- org.eclipse.stem.loggers,
- org.eclipse.stem.core,
+ org.eclipse.stem.loggers;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.stem.core;visibility:=reexport,
  org.eclipse.stem.ui,
  org.eclipse.core.resources,
- org.eclipse.core.expressions, 
+ org.eclipse.core.expressions,
  org.eclipse.emf.ecore;visibility:=reexport,
- org.eclipse.emf.ecore.edit
+ org.eclipse.emf.ecore.edit;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.emf.edit.ui;visibility:=reexport
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.stem.loggers.presentation,
diff --git a/core/org.eclipse.stem.ui.loggers/plugin.properties b/core/org.eclipse.stem.ui.loggers/plugin.properties
index 509a09c..17a7773 100644
--- a/core/org.eclipse.stem.ui.loggers/plugin.properties
+++ b/core/org.eclipse.stem.ui.loggers/plugin.properties
@@ -20,6 +20,8 @@
 _UI_Logging = Logging
 
 
+_UI_LoggerEditor_label = Logger Editor
+
 _UI_LoggerWizard_label = Logger
 _UI_LoggerWizard_description = Create a new Logger
 _UI_CreateChild_text = {0}
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java
index 02a1d53..0dd269b 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/presentation/SimulationLoggerEditor.java
@@ -92,6 +92,7 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.stem.core.STEMXMIResourceFactoryImpl;
 import org.eclipse.stem.core.common.provider.CommonItemProviderAdapterFactory;
 import org.eclipse.stem.core.graph.provider.GraphItemProviderAdapterFactory;
 import org.eclipse.stem.core.logger.provider.LoggerItemProviderAdapterFactory;
@@ -592,7 +593,7 @@
 	 * This sets up the editing domain for the model editor.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	protected void initializeEditingDomain() {
 		// Create an adapter factory that yields item providers.
@@ -643,6 +644,13 @@
 		// Create the editing domain with a special command stack.
 		//
 		editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
+		editingDomain.getResourceSet().getResourceFactoryRegistry()
+		.getExtensionToFactoryMap().put("*",
+				STEMXMIResourceFactoryImpl.INSTANCE);
+
+		editingDomain.getResourceSet().getResourceFactoryRegistry()
+				.getProtocolToFactoryMap().put("platform",
+						STEMXMIResourceFactoryImpl.INSTANCE);
 	}
 
 	/**
@@ -908,7 +916,7 @@
 	 * This is the method used by the framework to install your own controls.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public void createPages() {
@@ -942,7 +950,8 @@
 				selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory));
 
 				selectionViewer.setLabelProvider(new AdapterFactoryLabelProvider(adapterFactory));
-				selectionViewer.setInput(editingDomain.getResourceSet());
+				//selectionViewer.setInput(editingDomain.getResourceSet());
+				selectionViewer.setInput(editingDomain.getResourceSet().getResources().get(0));
 				selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true);
 				viewerPane.setTitle(editingDomain.getResourceSet());
 
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java
index f5fd556..f1eb69a 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SimulationLoggerItemProvider.java
@@ -17,14 +17,8 @@
 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.common.util.URI;
 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.ViewerNotification;
 import org.eclipse.stem.core.logger.provider.LoggerItemProvider;
@@ -38,13 +32,7 @@
  * @generated
  */
 public class SimulationLoggerItemProvider
-	extends LoggerItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends LoggerItemProvider {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -161,15 +149,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((SimulationLogger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_SimulationLogger_type") :
-			getString("_UI_SimulationLogger_type") + " " + label;
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java
index 177bf28..1ae205c 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/SynchronousDecoratorPropertyLoggerItemProvider.java
@@ -16,14 +16,8 @@
 
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.util.URI;
 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.ViewerNotification;
 import org.eclipse.stem.loggers.SimulationLoggerPackage;
@@ -36,13 +30,7 @@
  * @generated
  */
 public class SynchronousDecoratorPropertyLoggerItemProvider
-	extends SimulationLoggerItemProvider
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
+	extends SimulationLoggerItemProvider {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -102,15 +90,11 @@
 	 * This returns the label text for the adapted class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * @generated NOT
 	 */
 	@Override
 	public String getText(Object object) {
-		URI labelValue = ((SynchronousDecoratorPropertyLogger)object).getURI();
-		String label = labelValue == null ? null : labelValue.toString();
-		return label == null || label.length() == 0 ?
-			getString("_UI_SynchronousDecoratorPropertyLogger_type") :
-			getString("_UI_SynchronousDecoratorPropertyLogger_type") + " " + label;
+		return super.getText(object);
 	}
 
 	/**
diff --git a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java
index b1fa0f2..de5f505 100644
--- a/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java
+++ b/core/org.eclipse.stem.ui.loggers/src/org/eclipse/stem/loggers/provider/simulationloggerEditorAdvisor.java
@@ -18,6 +18,7 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.edit.ui.action.LoadResourceAction;
 import org.eclipse.emf.edit.ui.util.EditUIUtil;
+import org.eclipse.stem.loggers.provider.SimulationLoggerEditPlugin;
 import org.eclipse.equinox.app.IApplication;
 import org.eclipse.equinox.app.IApplicationContext;
 import org.eclipse.jface.action.GroupMarker;
diff --git a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml
index 187938a..34294a5 100644
--- a/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml
+++ b/models/epidemiology/org.eclipse.stem.ui.diseasemodels/plugin.xml
@@ -297,10 +297,10 @@
 
    <extension point="org.eclipse.ui.bindings">
       <!-- @generated diseasemodels -->
-      <key
+      <!--<key
             commandId="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenURICommand"
             sequence="M1+U"
-            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
+            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>-->
       <key
             commandId="org.eclipse.stem.diseasemodels.standard.presentation.DiseasemodelsEditorAdvisorOpenCommand"
             sequence="M1+O"
