diff --git a/plugins/org.eclipse.epsilon.evl.dt/icons/advanced.gif b/plugins/org.eclipse.epsilon.evl.dt/icons/advanced.gif
new file mode 100644
index 0000000..fbabfbb
--- /dev/null
+++ b/plugins/org.eclipse.epsilon.evl.dt/icons/advanced.gif
Binary files differ
diff --git a/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationDelegate.java b/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationDelegate.java
index d9b31d8..42761c2 100644
--- a/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationDelegate.java
+++ b/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationDelegate.java
@@ -16,7 +16,7 @@
 import org.eclipse.epsilon.eol.dt.launching.EpsilonLaunchConfigurationDelegate;
 import org.eclipse.epsilon.eol.exceptions.EolRuntimeException;
 import org.eclipse.epsilon.evl.EvlModule;
-import org.eclipse.epsilon.evl.dt.launching.tabs.EvlAdvanceOptionsTab;
+import org.eclipse.epsilon.evl.dt.launching.tabs.EvlAdvancedOptionsTab;
 import org.eclipse.epsilon.evl.dt.views.ValidationViewFixer;
 
 public class EvlLaunchConfigurationDelegate extends EpsilonLaunchConfigurationDelegate {
@@ -35,7 +35,7 @@
 	protected void preExecute(IEolExecutableModule module) throws CoreException, EolRuntimeException {
 		super.preExecute(module);
 		((EvlModule)module).setUnsatisfiedConstraintFixer(new ValidationViewFixer(configuration));
-		((EvlModule)module).setOptimizeConstraints(configuration.getAttribute(EvlAdvanceOptionsTab.OPTIMIZE_CONSTRAINTS, false));
+		((EvlModule)module).setOptimizeConstraints(configuration.getAttribute(EvlAdvancedOptionsTab.OPTIMIZE_CONSTRAINTS, false));
 	}
 	
 }
diff --git a/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationTabGroup.java b/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationTabGroup.java
index a189337..f341405 100644
--- a/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationTabGroup.java
+++ b/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/EvlLaunchConfigurationTabGroup.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.debug.ui.ILaunchConfigurationTab;
 import org.eclipse.epsilon.common.dt.launching.tabs.EpsilonLaunchConfigurationTabGroup;
-import org.eclipse.epsilon.evl.dt.launching.tabs.EvlAdvanceOptionsTab;
+import org.eclipse.epsilon.evl.dt.launching.tabs.EvlAdvancedOptionsTab;
 import org.eclipse.epsilon.evl.dt.launching.tabs.EvlSourceConfigurationTab;
 
 public class EvlLaunchConfigurationTabGroup extends EpsilonLaunchConfigurationTabGroup {
@@ -24,7 +24,7 @@
 	
 	@Override
 	public ILaunchConfigurationTab[] getOtherConfigurationTabs() {
-		return new ILaunchConfigurationTab[]{new EvlAdvanceOptionsTab()};
+		return new ILaunchConfigurationTab[]{new EvlAdvancedOptionsTab()};
 	}
 
 }
diff --git a/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/tabs/EvlAdvanceOptionsTab.java b/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/tabs/EvlAdvancedOptionsTab.java
similarity index 89%
rename from plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/tabs/EvlAdvanceOptionsTab.java
rename to plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/tabs/EvlAdvancedOptionsTab.java
index 04f6ed1..9fe9e46 100644
--- a/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/tabs/EvlAdvanceOptionsTab.java
+++ b/plugins/org.eclipse.epsilon.evl.dt/src/org/eclipse/epsilon/evl/dt/launching/tabs/EvlAdvancedOptionsTab.java
@@ -18,7 +18,7 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.ui.PlatformUI;
 
-public class EvlAdvanceOptionsTab extends AbstractLaunchConfigurationTab {
+public class EvlAdvancedOptionsTab extends AbstractLaunchConfigurationTab {
 
 	public static final String OPTIMIZE_CONSTRAINTS = "optimizeConstraints";
 	private Button optimizeConstraintsBtn;
@@ -43,11 +43,7 @@
 	}
 
 	private void createOptimizationGroup(Composite control) {
-		final Group group = new Group(control, SWT.SHADOW_ETCHED_IN);
-		group.setLayout(new GridLayout(2, false));
-		group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		group.setText("Advanced");
-		optimizeConstraintsBtn = new Button(group, SWT.CHECK);
+		optimizeConstraintsBtn = new Button(control, SWT.CHECK);
 		optimizeConstraintsBtn.setText("Optimize Constraints to Select Operations");
 		optimizeConstraintsBtn.addSelectionListener(new SelectionListener() {
 			
