diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java
index 74c6fb1..ae86d2e 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/Bpmn2Preferences.java
@@ -20,6 +20,7 @@
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.eclipse.bpmn2.Activity;
 import org.eclipse.bpmn2.AdHocSubProcess;
 import org.eclipse.bpmn2.BaseElement;
 import org.eclipse.bpmn2.CallActivity;
@@ -102,8 +103,8 @@
 	public final static String PREF_POPUP_CONFIG_DIALOG = "popup.config.dialog";
 	public final static String PREF_POPUP_CONFIG_DIALOG_LABEL = "Display element configuration popup dialog after DND of:";
 	
-	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_TASKS = "popup.config.dialog.for.tasks";
-	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_TASKS_LABEL = "Tasks";
+	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES = "popup.config.dialog.for.activities";
+	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES_LABEL = "Activities";
 	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS = "popup.config.dialog.for.gateways";
 	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS_LABEL = "Gateways";
 	public final static String PREF_POPUP_CONFIG_DIALOG_FOR_EVENTS = "popup.config.dialog.for.events";
@@ -256,7 +257,7 @@
 		globalPreferences.setDefault(PREF_IS_MARKER_VISIBLE, BPMNDIAttributeDefault.DEFAULT_TRUE.name());
 
 		globalPreferences.setDefault(PREF_POPUP_CONFIG_DIALOG, false); // tri-state checkbox
-		globalPreferences.setDefault(PREF_POPUP_CONFIG_DIALOG_FOR_TASKS, false);
+		globalPreferences.setDefault(PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES, false);
 		globalPreferences.setDefault(PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS, false);
 		globalPreferences.setDefault(PREF_POPUP_CONFIG_DIALOG_FOR_EVENTS, false);
 		globalPreferences.setDefault(PREF_POPUP_CONFIG_DIALOG_FOR_EVENT_DEFS, false);
@@ -283,7 +284,7 @@
 			projectPreferences.remove(PREF_IS_MARKER_VISIBLE);
 
 			projectPreferences.remove(PREF_POPUP_CONFIG_DIALOG);
-			projectPreferences.remove(PREF_POPUP_CONFIG_DIALOG_FOR_TASKS);
+			projectPreferences.remove(PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES);
 			projectPreferences.remove(PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS);
 			projectPreferences.remove(PREF_POPUP_CONFIG_DIALOG_FOR_EVENTS);
 			projectPreferences.remove(PREF_POPUP_CONFIG_DIALOG_FOR_EVENT_DEFS);
@@ -310,7 +311,7 @@
 		globalPreferences.setToDefault(PREF_IS_MARKER_VISIBLE);
 
 		globalPreferences.setToDefault(PREF_POPUP_CONFIG_DIALOG);
-		globalPreferences.setToDefault(PREF_POPUP_CONFIG_DIALOG_FOR_TASKS);
+		globalPreferences.setToDefault(PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES);
 		globalPreferences.setToDefault(PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS);
 		globalPreferences.setToDefault(PREF_POPUP_CONFIG_DIALOG_FOR_EVENTS);
 		globalPreferences.setToDefault(PREF_POPUP_CONFIG_DIALOG_FOR_EVENT_DEFS);
@@ -387,7 +388,7 @@
 			connectionTimeout = this.getString(PREF_CONNECTION_TIMEOUT, "60000");
 			
 			popupConfigDialog = getInt(PREF_POPUP_CONFIG_DIALOG, 0); // tri-state checkbox
-			popupConfigDialogFor[0] = getBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_TASKS, false);
+			popupConfigDialogFor[0] = getBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES, false);
 			popupConfigDialogFor[1] = getBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS, false);
 			popupConfigDialogFor[2] = getBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_EVENTS, false);
 			popupConfigDialogFor[3] = getBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_EVENT_DEFS, false);
@@ -420,7 +421,7 @@
 			setString(PREF_CONNECTION_TIMEOUT, connectionTimeout);
 
 			setInt(PREF_POPUP_CONFIG_DIALOG, popupConfigDialog);
-			setBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_TASKS, popupConfigDialogFor[0]);
+			setBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES, popupConfigDialogFor[0]);
 			setBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_GATEWAYS, popupConfigDialogFor[1]);
 			setBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_EVENTS, popupConfigDialogFor[2]);
 			setBoolean(PREF_POPUP_CONFIG_DIALOG_FOR_EVENT_DEFS, popupConfigDialogFor[3]);
@@ -597,7 +598,7 @@
 	}
 	
 	public boolean hasPopupConfigDialog(Object context) {
-		if (context instanceof Task) {
+		if (context instanceof Activity) {
 			return true;
 		}
 		if (context instanceof Gateway) {
diff --git a/org.eclipse.bpmn2.modeler.ui/.options b/org.eclipse.bpmn2.modeler.ui/.options
new file mode 100644
index 0000000..6575425
--- /dev/null
+++ b/org.eclipse.bpmn2.modeler.ui/.options
@@ -0,0 +1,2 @@
+org.eclipse.emf.common.EMFPlugin/debug=false
+org.eclipse.bpmn2.modeler.ui/debug=false
\ No newline at end of file
diff --git a/org.eclipse.bpmn2.modeler.ui/build.properties b/org.eclipse.bpmn2.modeler.ui/build.properties
index 125f872..95e7856 100644
--- a/org.eclipse.bpmn2.modeler.ui/build.properties
+++ b/org.eclipse.bpmn2.modeler.ui/build.properties
@@ -5,5 +5,6 @@
                plugin.xml,\
                icons/,\
                about.html,\
-               plugin.properties
+               plugin.properties,\
+               .options
 src.includes = icons/bpmn2_editor_16.png
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BpmnToolBehaviourFeature.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BpmnToolBehaviourFeature.java
index c8fcd3f..9371c5d 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BpmnToolBehaviourFeature.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BpmnToolBehaviourFeature.java
@@ -18,6 +18,7 @@
 import org.eclipse.bpmn2.modeler.core.Activator;
 import org.eclipse.bpmn2.modeler.core.features.IBpmn2AddFeature;
 import org.eclipse.bpmn2.modeler.core.features.IBpmn2CreateFeature;
+import org.eclipse.bpmn2.modeler.core.features.ShowPropertiesFeature;
 import org.eclipse.bpmn2.modeler.core.features.activity.ActivitySelectionBehavior;
 import org.eclipse.bpmn2.modeler.core.features.event.EventSelectionBehavior;
 import org.eclipse.bpmn2.modeler.core.runtime.CustomTaskDescriptor;
@@ -416,7 +417,8 @@
 		ICustomFeature[] cf = getFeatureProvider().getCustomFeatures(context);
 		for (int i = 0; i < cf.length; i++) {
 			ICustomFeature iCustomFeature = cf[i];
-			if (iCustomFeature.canExecute(context)) {
+			if (iCustomFeature instanceof ShowPropertiesFeature &&
+					iCustomFeature.canExecute(context)) {
 				return iCustomFeature;
 			}
 		}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java
index 3e98992..b93be86 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/DesignEditor.java
@@ -17,7 +17,7 @@
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
-import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
+import org.eclipse.bpmn2.modeler.ui.Activator;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.TreeIterator;
@@ -38,12 +38,10 @@
 import org.eclipse.graphiti.mm.pictograms.Diagram;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.ui.editor.DiagramEditorContextMenuProvider;
-import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CTabFolder;
 import org.eclipse.swt.custom.CTabItem;
@@ -63,7 +61,6 @@
 	
 	protected ResourceSetListener resourceSetListener = null;
 	private BPMNDiagram bpmnDiagramDeleted = null;
-	protected boolean debug;
 	// the container that holds the tabFolder
 	protected Composite container;
 	protected CTabFolder tabFolder;
@@ -455,6 +452,8 @@
 
 		@Override
 		public void resourceSetChanged(ResourceSetChangeEvent event) {
+			boolean debug = Activator.getDefault().isDebugging();
+			
 			for (Notification n : event.getNotifications()) {
 				int et = n.getEventType();
 				Object notifier = n.getNotifier();
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CallActivityFeatureContainer.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CallActivityFeatureContainer.java
index 285e51d..48bd405 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CallActivityFeatureContainer.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CallActivityFeatureContainer.java
@@ -24,6 +24,7 @@
 import org.eclipse.bpmn2.Process;
 import org.eclipse.bpmn2.modeler.core.features.DefaultResizeBPMNShapeFeature;
 import org.eclipse.bpmn2.modeler.core.features.MultiUpdateFeature;
+import org.eclipse.bpmn2.modeler.core.features.ShowPropertiesFeature;
 import org.eclipse.bpmn2.modeler.core.features.activity.AbstractCreateExpandableFlowNodeFeature;
 import org.eclipse.bpmn2.modeler.core.features.activity.LayoutActivityFeature;
 import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;
@@ -42,6 +43,7 @@
 import org.eclipse.graphiti.features.context.IAddContext;
 import org.eclipse.graphiti.features.context.ICreateContext;
 import org.eclipse.graphiti.features.context.IUpdateContext;
+import org.eclipse.graphiti.features.custom.ICustomFeature;
 import org.eclipse.graphiti.features.impl.AbstractUpdateFeature;
 import org.eclipse.graphiti.features.impl.Reason;
 import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
@@ -133,6 +135,23 @@
 	public IResizeShapeFeature getResizeFeature(IFeatureProvider fp) {
 		return new DefaultResizeBPMNShapeFeature(fp);
 	}
+	
+	@Override
+	public ICustomFeature[] getCustomFeatures(IFeatureProvider fp) {
+		ICustomFeature[] superFeatures = super.getCustomFeatures(fp);
+		ICustomFeature[] thisFeatures = new ICustomFeature[superFeatures.length];
+		int index = 1;
+		for (int i = 0; i < superFeatures.length; ++i) {
+			if (superFeatures[i] instanceof ShowPropertiesFeature) {
+				thisFeatures[0] = superFeatures[i];
+				index = 0;
+			}
+			else {
+				thisFeatures[index + i] = superFeatures[i];
+			}
+		}
+		return thisFeatures;
+	}
 
 	public static class CreateCallActivityFeature extends AbstractCreateExpandableFlowNodeFeature<CallActivity> {
 
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorPreferencePage.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorPreferencePage.java
index 673d0e6..8123efc 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorPreferencePage.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2EditorPreferencePage.java
@@ -74,7 +74,6 @@
 	Button defaultSize;
 	FontControl textFont;
 	ColorControl textColor;
-	boolean debug;
 
 	public Bpmn2EditorPreferencePage() {
 		setPreferenceStore(Activator.getDefault().getPreferenceStore());
@@ -184,7 +183,7 @@
 			for (Class c : allElements) {
 				ShapeStyle ss = preferences.getShapeStyle(c);
 				shapeStyles.put(c, ss);
-			if (debug) {
+			if (Activator.getDefault().isDebugging()) {
 				IColorConstant foreground = ss.getShapeForeground();
 				IColorConstant background = ss.getShapeBackground();
 				IColorConstant textColor = ss.getTextColor();
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2HomePreferencePage.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2HomePreferencePage.java
index 16fc0df..e249c52 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2HomePreferencePage.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/preferences/Bpmn2HomePreferencePage.java
@@ -142,8 +142,8 @@
 		comp.setLayoutData(gd);
 
 		TristateCheckboxFieldEditor popupConfigDialogForTasks = new TristateCheckboxFieldEditor(
-				Bpmn2Preferences.PREF_POPUP_CONFIG_DIALOG_FOR_TASKS,
-				Bpmn2Preferences.PREF_POPUP_CONFIG_DIALOG_FOR_TASKS_LABEL,
+				Bpmn2Preferences.PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES,
+				Bpmn2Preferences.PREF_POPUP_CONFIG_DIALOG_FOR_ACTIVITIES_LABEL,
 				comp);
 		addField(popupConfigDialogForTasks);
 		popupConfigDialog.addField(popupConfigDialogForTasks);
