diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/debug/DebugConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/debug/DebugConfigurationPage.java
index 26cb566..5d19034 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/debug/DebugConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/debug/DebugConfigurationPage.java
@@ -25,6 +25,7 @@
 import org.eclipse.efm.execution.core.IWorkflowPreferenceConstants;
 import org.eclipse.efm.execution.core.SymbexPreferenceUtil;
 import org.eclipse.efm.execution.core.workflow.common.ConsoleVerbosityKind;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -75,6 +76,7 @@
 	
 
 	// Second Symbex Workflow Page
+	private Group fGroupSecondStageSymbexWorkflow;
 //		private BooleanFieldEditor fSecondParsedModelGraphizEnabledBooleanField;
 ////		private StringFieldEditor  fSecondParsedModelGraphizFileNameStringField;
 //
@@ -84,6 +86,8 @@
 //		private BooleanFieldEditor fSecondCompiledModelTextualEnabledBooleanField;
 ////		private StringFieldEditor  fSecondCompiledModelTextualFileNameStringField;
 
+	private Group fGroupSymbexOutputGeneratedTraces;
+	
 	private BooleanFieldEditor fSecondSymbexOutputTextualEnabledBooleanField;
 //		private StringFieldEditor  fSecondSymbexOutputTextualFileNameStringField;
 
@@ -262,22 +266,19 @@
 
 
 	private void setEnableFirstExecutionPage(boolean checked) {
-		fGroupFirstSymbexOutputTrace.setVisible(checked);
 		propagateVisibility(fGroupFirstSymbexOutputTrace, checked);
 		
-		fGroupFirstSymbexOutputFormat.setVisible(checked);
 		propagateVisibility(fGroupFirstSymbexOutputFormat, checked);
 	}
 
 
 	public void createSecondSymbexWorkflowtPage(Composite parent, IWidgetToolkit widgetToolkit) {
-		Group group = widgetToolkit.createGroup(parent,
-				"Second Stage Symbex Workflow Page",
-				1, 1, GridData.FILL_HORIZONTAL);
+		fGroupSecondStageSymbexWorkflow = widgetToolkit.createGroup(parent,
+				"Second Stage Symbex Workflow Page", 1, 1, GridData.FILL_HORIZONTAL);
 
 //			createSecondInputModelGraphicComponent(group);
 
-		createSecondSymbexOutputComponent(group, widgetToolkit);
+		createSecondSymbexOutputComponent(fGroupSecondStageSymbexWorkflow, widgetToolkit);
 	}
 
 
@@ -306,19 +307,19 @@
 //		}
 
 	private void createSecondSymbexOutputComponent(Composite parent, IWidgetToolkit widgetToolkit) {
-		Group group = widgetToolkit.createGroup(parent,
+		fGroupSymbexOutputGeneratedTraces = widgetToolkit.createGroup(parent,
 				"Symbex Output Generated Traces",
 				1, 1, GridData.FILL_HORIZONTAL);
 
 		Composite comp = widgetToolkit.createComposite(
-				group, 1, 1, GridData.FILL_HORIZONTAL);
+				fGroupSymbexOutputGeneratedTraces, 1, 1, GridData.FILL_HORIZONTAL);
 
 		fSecondSymbexOutputTextualEnabledBooleanField = new BooleanFieldEditor(
 				this, ATTR_ENABLED_SECOND_SYMBEX_OUTPUT_TEXTUAL_GENERATION,
 				"&Basic Textual Representation", comp, false);
 
 
-		group = widgetToolkit.createGroup(comp,
+		Group group = widgetToolkit.createGroup(comp,
 				"Symbex Output Generated Graphic Traces",
 				1, 1, GridData.FILL_HORIZONTAL);
 
@@ -348,10 +349,8 @@
 
 
 	private void setEnableSecondExecutionPage(boolean checked) {
-		fGroupSecondSymbexOutputTrace.setVisible(checked);
 		propagateVisibility(fGroupSecondSymbexOutputTrace, checked);
 		
-		fGroupSecondSymbexOutputFormat.setVisible(checked);
 		propagateVisibility(fGroupSecondSymbexOutputFormat, checked);
 	}
 
@@ -561,25 +560,25 @@
 		fFirstSymbexOutputGraphizFormatStringField.performApply(configuration);
 
 
-//			fSecondParsedModelTextualEnabledBooleanField.performApply(configuration);
-//			fSecondParsedModelGraphizEnabledBooleanField.performApply(configuration);
-//			if( fEnabledSymbexDeveloperMode ) {
-//				fSecondCompiledModelTextualEnabledBooleanField.performApply(configuration);
-//			}
+//		fSecondParsedModelTextualEnabledBooleanField.performApply(configuration);
+//		fSecondParsedModelGraphizEnabledBooleanField.performApply(configuration);
+//		if( fEnabledSymbexDeveloperMode ) {
+//			fSecondCompiledModelTextualEnabledBooleanField.performApply(configuration);
+//		}
 
-			fSecondSymbexOutputTextualEnabledBooleanField.performApply(configuration);
-			fSecondSymbexOutputGraphizEnabledBooleanField.performApply(configuration);
-			fSecondSymbexOutputGraphizTraceStringField.performApply(configuration);
+		fSecondSymbexOutputTextualEnabledBooleanField.performApply(configuration);
+		fSecondSymbexOutputGraphizEnabledBooleanField.performApply(configuration);
+		fSecondSymbexOutputGraphizTraceStringField.performApply(configuration);
 
-			fSecondSymbexOutputGraphizFormatStringField.performApply(configuration);
+		fSecondSymbexOutputGraphizFormatStringField.performApply(configuration);
 
 
-			setEnableFirstExecutionPage(
-					fFirstSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
+		setEnableFirstExecutionPage(
+				fFirstSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
 
-			setEnableSecondExecutionPage(
-					fSecondSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
-		}
+		setEnableSecondExecutionPage(
+				fSecondSymbexOutputGraphizEnabledBooleanField.getBooleanValue() );
+	}
 
 
 	// ======================================================================================
@@ -591,5 +590,28 @@
 		return new FieldValidationReturn(true, null);
 	}
 
+	
+	///////////////////////////////////////////////////////////////////////////
+	// Property Change
+	//
+	@Override
+	protected void handleConfigurationPropertyChange(PropertyChangeEvent event) {
+		switch( event.getProperty() ) {
+		case ATTR_ENABLED_TRACE_EXTENSION:
+//			fGroupSecondStageSymbexWorkflow.setEnabled( (Boolean)( event.getNewValue() ) );
+			
+			propagateVisibility(fGroupSecondStageSymbexWorkflow,
+					(Boolean)( event.getNewValue() ) );
+			
+//			propagateVisibility(fGroupSymbexOutputGeneratedTraces,
+//					(Boolean)( event.getNewValue() ) );
+			break;
+				
+		default:
+			break;
+		}
+	}
+	
+
 }
 
diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/developer/DeveloperTuningConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/developer/DeveloperTuningConfigurationPage.java
index 0099353..20be8ac 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/developer/DeveloperTuningConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/developer/DeveloperTuningConfigurationPage.java
@@ -194,8 +194,7 @@
 		createDebugTraceOptionsComponent(group, widgetToolkit);
 	}
 
-	private void setEnableDeveloperTuningOptionsPage(
-			ILaunchConfiguration configuration, boolean enabled) {
+	private void setEnableDeveloperTuningOptionsPage(boolean enabled) {
 		fLogFileNameStringField.setEnabled(enabled);
 		fDebugTraceFileNameStringField.setEnabled(enabled);
 
@@ -219,6 +218,15 @@
 
 		fDeveloperModeEnabledBooleanField = new BooleanFieldEditor(this,
 				ATTR_ENABLED_DEVELOPER_TUNING, "&Developer Mode", comp, false);
+		
+		fDeveloperModeEnabledBooleanField.addSelectionListener(
+				new SelectionAdapter() {
+					@Override
+					public void widgetSelected(SelectionEvent e) {
+						setEnableDeveloperTuningOptionsPage(
+								fDeveloperModeEnabledBooleanField.getBooleanValue() );
+					}
+				});
 
 		comp = widgetToolkit.createComposite(
 				parent, 1, 5, GridData.FILL_HORIZONTAL);
@@ -691,7 +699,7 @@
 		fNothingEnabledBooleanField.initializeFrom(configuration);
 		fGodModeEnabledBooleanField.initializeFrom(configuration);
 
-		setEnableDeveloperTuningOptionsPage(configuration,
+		setEnableDeveloperTuningOptionsPage(
 				fDeveloperModeEnabledBooleanField.getBooleanValue() );
 	}
 
@@ -727,7 +735,7 @@
 	public void applyUpdatesOnFieldValuesFrom(ILaunchConfigurationWorkingCopy configuration) {
 		fDeveloperModeEnabledBooleanField.performApply(configuration);
 
-		setEnableDeveloperTuningOptionsPage(configuration,
+		setEnableDeveloperTuningOptionsPage(
 				fDeveloperModeEnabledBooleanField.getBooleanValue() );
 
 		fLogFileNameStringField.performApply(configuration);
diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java
index 22e730a..c10cbfe 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java
@@ -89,6 +89,11 @@
 					@Override
 					public void widgetSelected(SelectionEvent e) {
 						handleEnablingTraceExtension();
+						
+						propertyChange( new PropertyChangeEvent(this, ATTR_ENABLED_TRACE_EXTENSION,
+								new Boolean(fTraceExtensionEnabledBooleanField.getBooleanValue()),
+								new Boolean(fTraceExtensionEnabledBooleanField.getBooleanValue()) ));
+
 					}
 				});
 
diff --git a/execution/org.eclipse.efm.execution.core/src/org/eclipse/efm/execution/core/workflow/common/DeveloperTuningOptionCustomImpl.java b/execution/org.eclipse.efm.execution.core/src/org/eclipse/efm/execution/core/workflow/common/DeveloperTuningOptionCustomImpl.java
index 6bf0b12..2ea1215 100644
--- a/execution/org.eclipse.efm.execution.core/src/org/eclipse/efm/execution/core/workflow/common/DeveloperTuningOptionCustomImpl.java
+++ b/execution/org.eclipse.efm.execution.core/src/org/eclipse/efm/execution/core/workflow/common/DeveloperTuningOptionCustomImpl.java
@@ -832,7 +832,7 @@
 					}
 
 					if( isEnabledConfiguring() ) {
-						writer.appendTab2Eol( "flag = 'CONFIGURE'" );
+						writer.appendTab2Eol( "flag = 'CONFIGURING'" );
 					}
 
 					if( isEnabledCompiling() ) {
