[nobug] continue creation port. Committing for DFH
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizard.java b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizard.java
index 2c82c09..4bb3294 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizard.java
@@ -13,13 +13,15 @@
 import org.eclipse.core.runtime.IExecutableExtension;
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorComponentCreationOperation;
+import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorComponentCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
+import org.eclipse.jst.j2ee.internal.wizard.J2EEArtifactCreationWizard;
 import org.eclipse.jst.j2ee.internal.wizard.J2EEComponentCreationWizard;
 import org.eclipse.jst.j2ee.jca.ui.internal.util.JCAUIMessages;
 import org.eclipse.ui.INewWizard;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
 
 /** 
@@ -54,7 +56,7 @@
 	 * </p>
 	 * @param model The model parameter is used to pre-populate wizard controls and interface with the operation
 	 */
-	public ConnectorComponentCreationWizard(J2EEComponentCreationDataModel model) {
+	public ConnectorComponentCreationWizard(IDataModel model) {
 		super(model);
 	}
 	
@@ -73,20 +75,6 @@
 		aModel.setBooleanProperty(J2EEComponentCreationDataModel.ADD_TO_EAR, true);
 		return aModel;
 	}
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * <p>
-	 * Overridden to return a {@link ConnectorProjectCreationOperation}. 
-	 * </p>
-	 * 
-	 * @return Returns the specific operation for the creation of J2EE Connector modules
-	 */
-	protected final WTPOperation createBaseOperation() {
-		return new ConnectorComponentCreationOperation(getSpecificDataModel());
-	}
-	
 	/** 
 	 * {@inheritDoc}   
 	 * 
@@ -109,22 +97,11 @@
 	 * </p>
 	 */
 	public void doAddPages() {
-		addPage(new ConnectorComponentCreationWizardPage(getSpecificDataModel(), MAIN_PG));
+		addPage(new ConnectorComponentCreationWizardPage(getDataModel(), MAIN_PG));
 		super.doAddPages();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.extensions.ExtendableWizard#getWizardID()
-	 */
-	public String getWizardID() {
-		return WIZARD_ID; 
-	} 
- 
-
-	private ConnectorComponentCreationDataModel getSpecificDataModel() {
-		return (ConnectorComponentCreationDataModel) getModel();
-	}
-
+    protected IDataModelProvider getDefaultProvider() {
+        return new ConnectorComponentCreationDataModelProvider();
+    }
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizardPage.java b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizardPage.java
index 07ddc5d..0a8d92f 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizardPage.java
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorComponentCreationWizardPage.java
@@ -10,15 +10,12 @@
  *******************************************************************************/
 package org.eclipse.jst.j2ee.jca.ui.internal.wizard;
 
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
-import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.jst.j2ee.internal.wizard.J2EEComponentCreationWizardPage;
 import org.eclipse.jst.j2ee.jca.ui.internal.util.JCAUIMessages;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 public class ConnectorComponentCreationWizardPage extends J2EEComponentCreationWizardPage {
 
@@ -26,7 +23,7 @@
 	 * @param model
 	 * @param pageName
 	 */
-	public ConnectorComponentCreationWizardPage(ConnectorComponentCreationDataModel model, String pageName) {
+	public ConnectorComponentCreationWizardPage(IDataModel model, String pageName) {
 		super(model, pageName);
 		setTitle(JCAUIMessages.getResourceString(JCAUIMessages.JCA_MODULE_MAIN_PG_TITLE));
 		setDescription(JCAUIMessages.getResourceString(JCAUIMessages.JCA_MODULE_MAIN_PG_DESC));
@@ -38,7 +35,7 @@
 	}
 	//TODO: utility to handle additions
 	protected String[] getValidationPropertyNames() {
-		return new String[]{ComponentCreationDataModel.PROJECT_NAME, ComponentCreationDataModel.COMPONENT_NAME, ComponentCreationDataModel.COMPONENT_VERSION, WTPOperationDataModel.NESTED_MODEL_VALIDATION_HOOK, J2EEComponentCreationDataModel.ADD_TO_EAR};
+		return new String[]{PROJECT_NAME, COMPONENT_NAME, COMPONENT_VERSION, ADD_TO_EAR};
 	}
 
 	/**
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/RARImportPage.java b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/RARImportPage.java
index f2fec38..2abf455 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/RARImportPage.java
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/RARImportPage.java
@@ -19,7 +19,6 @@
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEModuleImportDataModel;
 import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
-import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.jca.operations.ConnectorModuleImportDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
@@ -27,7 +26,6 @@
 import org.eclipse.jst.j2ee.internal.wizard.J2EEModuleImportPage;
 import org.eclipse.jst.j2ee.jca.ui.internal.util.JCAUIMessages;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizard;
 
 
 /**
@@ -70,10 +68,6 @@
 		return getJCADataModel().getJ2eeArtifactCreationDataModel();
 	}
 
-	protected WTPWizard getNewProjectWizard(ConnectorComponentCreationDataModel aModel) {
-		return new ConnectorComponentCreationWizard(aModel);
-	}
-
 	protected String getFileNamesStoreID() {
 		return IConnectorNatureConstants.NATURE_ID;
 	}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizard.java
index b1509b4..516e187 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizard.java
@@ -7,14 +7,13 @@
 package org.eclipse.jst.j2ee.internal.wizard;
 
 import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentCreationDataModel;
-import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentCreationOperation;
+import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.ui.INewWizard;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
 
 public class AppClientComponentCreationWizard extends J2EEComponentCreationWizard implements IExecutableExtension, INewWizard {
 	
@@ -43,38 +42,10 @@
 	 * </p>
 	 * @param model The model parameter is used to pre-populate wizard controls and interface with the operation
 	 */
-	public AppClientComponentCreationWizard(AppClientComponentCreationDataModel model) {
+	public AppClientComponentCreationWizard(IDataModel model) {
 		super(model);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * <p>
-	 * Overridden to return a {@link WebProjectCreationDataModel} and defaults
-	 * the value of {@link J2EEModuleCreationDataModelOld#ADD_TO_EAR} to <b>true</b>
-	 * </p>
-	 * 
-	 * @return Returns the specific operation data model for the creation of J2EE Web modules
-	 */
-	protected WTPOperationDataModel createDefaultModel() {
-		AppClientComponentCreationDataModel aModel = new AppClientComponentCreationDataModel();
-		return aModel;
-	}
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * <p>
-	 * Overridden to return an {@link WebProjectCreationOperation}. 
-	 * </p>
-	 * 
-	 * @return Returns the specific operation for the creation of J2EE Web modules
-	 */
-	protected WTPOperation createBaseOperation() {
-		return new AppClientComponentCreationOperation(getSpecificDataModel());
-	}
-
 	/** 
 	 * {@inheritDoc}   
 	 * 
@@ -97,22 +68,13 @@
 	 * </p>
 	 */
 	protected void doAddPages() {
-		AppClientComponentCreationWizardPage page1 = new AppClientComponentCreationWizardPage(getSpecificDataModel(), MAIN_PG);
+		AppClientComponentCreationWizardPage page1 = new AppClientComponentCreationWizardPage(getDataModel(), MAIN_PG);
 		addPage(page1);
 		super.doAddPages();
-	} 
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.extensions.ExtendableWizard#getWizardID()
-	 */
-	public String getWizardID() {
-		return WIZARD_ID;
-	} 
-	
-	private AppClientComponentCreationDataModel getSpecificDataModel() {
-		return (AppClientComponentCreationDataModel) getModel();
 	}
 
+    protected IDataModelProvider getDefaultProvider() {
+        return new AppClientComponentCreationDataModelProvider();
+    } 
+
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizardPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizardPage.java
index 162123f..c83ab33 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizardPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientComponentCreationWizardPage.java
@@ -6,16 +6,13 @@
  */
 package org.eclipse.jst.j2ee.internal.wizard;
 
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
-import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 public class AppClientComponentCreationWizardPage extends J2EEComponentCreationWizardPage {
 
@@ -29,7 +26,7 @@
 	 * @param model
 	 * @param pageName
 	 */
-	public AppClientComponentCreationWizardPage(AppClientComponentCreationDataModel  model, String pageName) {
+	public AppClientComponentCreationWizardPage(IDataModel model, String pageName) {
 		super(model, pageName);
 		setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.APPCLIENT_COMPONENT_MAIN_PG_TITLE));
 		setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.APPCLIENT_COMPONENT_MAIN_PG_DESC));
@@ -47,18 +44,13 @@
 	}
 
 	private void createAnnotationsGroup(Composite parent) {
-		annotationsGroup = new AnnotationsStandaloneGroup(parent, getJ2EEModuleCreationDataModel(), false);
+		//annotationsGroup = new AnnotationsStandaloneGroup(parent, getJ2EEModuleCreationDataModel(), false);
 	}
 
 	//TODO: utility to handle additions
 	protected String[] getValidationPropertyNames() {
-		return new String[]{
-				ComponentCreationDataModel.PROJECT_NAME, 
-				ComponentCreationDataModel.COMPONENT_NAME, 
-				ComponentCreationDataModel.COMPONENT_VERSION, 
-				WTPOperationDataModel.NESTED_MODEL_VALIDATION_HOOK, 
-				J2EEComponentCreationDataModel.ADD_TO_EAR};
-	}
+        return new String[] { PROJECT_NAME, COMPONENT_NAME, COMPONENT_VERSION, ADD_TO_EAR };
+    }
 
 	public void dispose() {
 		super.dispose();
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientImportPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientImportPage.java
index c0fc3f0..9b5bfe0 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientImportPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/AppClientImportPage.java
@@ -18,7 +18,6 @@
 
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEModuleImportDataModel;
-import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentCreationDataModel;
 import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientModuleImportDataModel;
 import org.eclipse.jst.j2ee.applicationclient.internal.creation.IApplicationClientNatureConstants;
 import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
@@ -26,7 +25,6 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizard;
 
 /**
  * @author cbridgha
@@ -82,10 +80,6 @@
 		return getAppClientDataModel().getJ2eeArtifactCreationDataModel();
 	}
 
-	protected WTPWizard getNewProjectWizard(AppClientComponentCreationDataModel aModel) {
-		return new AppClientComponentCreationWizard(aModel);
-	}
-
 	private AppClientModuleImportDataModel getAppClientDataModel() {
 		return (AppClientModuleImportDataModel) model;
 	}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/DataModelAnnotationsStandaloneGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/DataModelAnnotationsStandaloneGroup.java
new file mode 100644
index 0000000..6de8b22
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/DataModelAnnotationsStandaloneGroup.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2004, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.j2ee.internal.wizard;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jst.j2ee.application.internal.operations.IAnnotationsDataModel;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
+
+public class DataModelAnnotationsStandaloneGroup {
+
+    protected IDataModel model;
+    protected DataModelSynchHelper synchHelper;
+    protected Button useAnnotations;
+    private boolean isForBean;
+    private boolean useServletString = false;
+
+    public static final String EJBTAGSET = "ejb"; //$NON-NLS-1$
+    public static boolean shouldBeanDefaultUseAnnotations = false;
+    public static boolean shouldProjectDefaultUseAnnotations = false;
+
+
+    private class CheckboxSelectionListener implements SelectionListener {
+        public void widgetSelected(SelectionEvent e) {
+            Button button = (Button) e.getSource();
+            if (isForBean)
+                shouldBeanDefaultUseAnnotations = button.getSelection();
+            else
+                shouldProjectDefaultUseAnnotations = button.getSelection();
+        }
+
+        public void widgetDefaultSelected(SelectionEvent e) {
+            //do nothing
+        }
+    }
+
+    private CheckboxSelectionListener checkboxSelectionListener = new CheckboxSelectionListener();
+
+    /**
+     * Constructor
+     */
+    public DataModelAnnotationsStandaloneGroup(Composite parent, IDataModel model, boolean forBean, DataModelSynchHelper syncHelp) {
+        this(parent, model, forBean, false, syncHelp);
+    }
+
+    /**
+     * Constructor
+     */
+    public DataModelAnnotationsStandaloneGroup(Composite parent, IDataModel model, boolean forBean, boolean useServlet, DataModelSynchHelper syncHelp) {
+        super();
+        this.model = model;
+        this.isForBean = forBean;
+        this.useServletString = useServlet;
+        synchHelper = syncHelp;
+        buildComposites(parent);
+    }
+
+    /**
+     * @param parent
+     */
+    protected void buildComposites(Composite parent) {
+        // Add separator
+        Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+        GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+        gd.horizontalSpan = 3;
+        separator.setLayoutData(gd);
+        // Add spacer
+        Label spacer = new Label(parent, SWT.NONE);
+        GridData gd1 = new GridData(GridData.FILL_HORIZONTAL);
+        gd1.horizontalSpan = 3;
+        spacer.setLayoutData(gd1);
+        // Add annotations checkbox and label
+        useAnnotations = new Button(parent, SWT.CHECK);
+        String labelText;
+        if (useServletString)
+            labelText = J2EEUIMessages.getResourceString(J2EEUIMessages.USE_ANNOTATIONS_SERVLET);
+        else if (isForBean)
+            labelText = J2EEUIMessages.getResourceString(J2EEUIMessages.USE_ANNOTATIONS);
+        else
+            labelText = J2EEUIMessages.getResourceString(J2EEUIMessages.ADD_ANNOTATIONS_SUPPORT);
+        useAnnotations.setText(labelText);
+        synchHelper.synchCheckbox(useAnnotations, IAnnotationsDataModel.USE_ANNOTATIONS, null);
+        useAnnotations.addSelectionListener(checkboxSelectionListener);
+        GridData gd2 = new GridData(GridData.FILL_HORIZONTAL);
+        gd2.horizontalSpan = 2;
+        useAnnotations.setLayoutData(gd2);
+        // If for project, set the global annotations supported
+        if (!isForBean)
+            setEnablement(null);
+    }
+
+    public void dispose() {
+        model.removeListener(synchHelper);
+        synchHelper = null;
+        model = null;
+    }
+
+    public boolean isAnnotationsSupported(IProject project) {
+        //TODO clean up to be module based, not project based
+        try {
+            //          if (isForBean) {
+            //              AnnotationsController controller =
+            // AnnotationsControllerManager.INSTANCE.getAnnotationsController(project);
+            //              return (controller !=null && controller.isTagHandlerInstalled(EJBTAGSET));
+            //          }
+//          J2EEModuleNature nature = null;
+//          if (project != null && project.hasNature(IWebNatureConstants.J2EE_NATURE_ID))
+//              nature = (J2EEModuleNature) project.getNature(IWebNatureConstants.J2EE_NATURE_ID);
+//          else if (project != null && project.hasNature(IEJBNatureConstants.NATURE_ID))
+//              nature = (J2EEModuleNature) project.getNature(IEJBNatureConstants.NATURE_ID);
+//
+//          if (!isForBean || (nature != null && nature.getJ2EEVersion() > J2EEVersionConstants.VERSION_1_2))
+                return true;
+//          return false;
+        } catch (Throwable t) {
+            t.printStackTrace();
+            return false;
+        }
+    }
+
+    public void setEnablement(IProject project) {
+        //TODO
+        //boolean isEnabled = isAnnotationsSupported(project);
+        useAnnotations.setEnabled(true);
+//      if (!isEnabled || (!isForBean && !shouldProjectDefaultUseAnnotations) || (isForBean && !shouldBeanDefaultUseAnnotations)) {
+//          useAnnotations.setSelection(false);
+//          model.setProperty(IAnnotationsDataModel.USE_ANNOTATIONS, Boolean.FALSE);
+//      } else {
+//          useAnnotations.setSelection(true);
+//          model.setProperty(IAnnotationsDataModel.USE_ANNOTATIONS, Boolean.TRUE);
+//      }
+    }
+
+    public void setUseServlet(boolean aBoolean) {
+        useServletString = aBoolean;
+    }
+    
+    public void setUseAnnotations(boolean aBoolean) {
+        if (useAnnotations != null) {
+            useAnnotations.setSelection(aBoolean);
+            model.setProperty(IAnnotationsDataModel.USE_ANNOTATIONS, new Boolean(aBoolean));
+        }
+    }
+}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationSecondPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationSecondPage.java
index 495d547..ba48e96 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationSecondPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationSecondPage.java
@@ -19,8 +19,8 @@
 import org.eclipse.jface.viewers.TableLayout;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.jst.j2ee.application.internal.operations.AddArchiveProjectsToEARDataModel;
+import org.eclipse.jst.j2ee.datamodel.properties.IEarComponentCreationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.earcreation.DefaultJ2EEComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.earcreation.EARComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
@@ -30,7 +30,8 @@
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Event;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizardPage;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
 
 /**
  * @author jialin
@@ -38,7 +39,7 @@
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
-public class EARComponentCreationSecondPage extends WTPWizardPage {
+public class EARComponentCreationSecondPage extends DataModelWizardPage implements IEarComponentCreationDataModelProperties{
 	private Button selectAllButton;
 	private Button deselectAllButton;
 	private Button newModuleButton;
@@ -48,7 +49,7 @@
 	 * @param model
 	 * @param pageName
 	 */
-	public EARComponentCreationSecondPage(EARComponentCreationDataModel  model, String pageName) {
+	public EARComponentCreationSecondPage(IDataModel  model, String pageName) {
 		super(model, pageName);
 		setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_COMPONENT_SECOND_PG_TITLE));
 		setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_COMPONENT_SECOND_PG_DESC));
@@ -87,7 +88,7 @@
 		gData.widthHint = 200;
 		gData.heightHint = 80;
 		moduleProjectsViewer.getControl().setLayoutData(gData);
-		int j2eeVersion = getModel().getIntProperty(EARComponentCreationDataModel.COMPONENT_VERSION);
+		int j2eeVersion = getDataModel().getIntProperty(COMPONENT_VERSION);
 		AvailableJ2EEComponentsContentProvider provider = new AvailableJ2EEComponentsContentProvider(j2eeVersion);
 		moduleProjectsViewer.setContentProvider(provider);
 		moduleProjectsViewer.setLabelProvider(new J2EEComponentLabelProvider());
@@ -95,7 +96,7 @@
 		moduleProjectsViewer.addCheckStateListener(new ICheckStateListener() {
 			public void checkStateChanged(CheckStateChangedEvent event) {
 				if (!ignoreCheckedState) {
-					((EARComponentCreationDataModel)getModel()).setProperty(EARComponentCreationDataModel.J2EE_COMPONENT_LIST, getCheckedElementsAsList());
+					(getDataModel()).setProperty(J2EE_COMPONENT_LIST, getCheckedElementsAsList());
 				}
 			}
 		});
@@ -189,13 +190,13 @@
 	private DefaultJ2EEComponentCreationDataModel createNewModuleModel() {
 		DefaultJ2EEComponentCreationDataModel defaultModel = new DefaultJ2EEComponentCreationDataModel();
 		// transfer properties, project name
-		String projectName = model.getStringProperty(EARComponentCreationDataModel.PROJECT_NAME);
+		String projectName = model.getStringProperty(PROJECT_NAME);
 		defaultModel.setProperty(DefaultJ2EEComponentCreationDataModel.PROJECT_NAME, projectName);
 		// ear component name
-		String earName = model.getStringProperty(EARComponentCreationDataModel.COMPONENT_NAME);
+		String earName = model.getStringProperty(COMPONENT_NAME);
 		defaultModel.setProperty(DefaultJ2EEComponentCreationDataModel.EAR_COMPONENT_NAME, earName);
 		// ear j2ee version
-		int j2eeVersion = model.getIntProperty(EARComponentCreationDataModel.COMPONENT_VERSION);
+		int j2eeVersion = model.getIntProperty(COMPONENT_VERSION);
 		defaultModel.setProperty(DefaultJ2EEComponentCreationDataModel.J2EE_VERSION, new Integer(j2eeVersion));
 		return defaultModel;
 	}
@@ -207,7 +208,7 @@
 		ignoreCheckedState = true;
 		try {
 			moduleProjectsViewer.setAllChecked(false);
-			((EARComponentCreationDataModel)getModel()).setProperty(EARComponentCreationDataModel.J2EE_COMPONENT_LIST, null);
+			getDataModel().setProperty(J2EE_COMPONENT_LIST, null);
 		} finally {
 			ignoreCheckedState = false;
 		}
@@ -220,7 +221,7 @@
 		ignoreCheckedState = true;
 		try {
 			moduleProjectsViewer.setAllChecked(true);
-			((EARComponentCreationDataModel)getModel()).setProperty(EARComponentCreationDataModel.J2EE_COMPONENT_LIST, getCheckedElementsAsList());
+			getDataModel().setProperty(J2EE_COMPONENT_LIST, getCheckedElementsAsList());
 		} finally {
 			ignoreCheckedState = false;
 		}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizard.java
index b54d277..ae6229f 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizard.java
@@ -7,13 +7,14 @@
 package org.eclipse.jst.j2ee.internal.wizard;
 
 import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.jst.j2ee.application.internal.operations.EARComponentCreationOperation;
 import org.eclipse.jst.j2ee.internal.earcreation.EARComponentCreationDataModel;
+import org.eclipse.jst.j2ee.internal.earcreation.EarComponentCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.ui.INewWizard;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
 
 public class EARComponentCreationWizard extends J2EEComponentCreationWizard implements IExecutableExtension, INewWizard {
@@ -45,7 +46,7 @@
 	 * </p>
 	 * @param model The model parameter is used to pre-populate wizard controls and interface with the operation
 	 */
-	public EARComponentCreationWizard(EARComponentCreationDataModel model) {
+	public EARComponentCreationWizard(IDataModel model) {
 		super(model);
 	}
 
@@ -63,20 +64,6 @@
 		EARComponentCreationDataModel aModel = new EARComponentCreationDataModel();
 		return aModel;
 	}
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * <p>
-	 * Overridden to return an {@link WebProjectCreationOperation}. 
-	 * </p>
-	 * 
-	 * @return Returns the specific operation for the creation of J2EE Web modules
-	 */
-	protected WTPOperation createBaseOperation() {
-		return new EARComponentCreationOperation(getSpecificDataModel());
-	}
-
 	/** 
 	 * {@inheritDoc}   
 	 * 
@@ -99,25 +86,16 @@
 	 * </p>
 	 */
 	protected void doAddPages() {
-		EARComponentCreationWizardPage page1 = new EARComponentCreationWizardPage(getSpecificDataModel(), MAIN_PG);
+		EARComponentCreationWizardPage page1 = new EARComponentCreationWizardPage(getDataModel(), MAIN_PG);
 //		page.setInfopopID("org.eclipse.jst.j2ee.ui.webw1000"); //$NON-NLS-1$
 		addPage(page1);
-		EARComponentCreationSecondPage page2 = new EARComponentCreationSecondPage(getSpecificDataModel(), SECOND_PG);
+		EARComponentCreationSecondPage page2 = new EARComponentCreationSecondPage(getDataModel(), SECOND_PG);
 		addPage(page2);
 		super.doAddPages();
-	} 
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.extensions.ExtendableWizard#getWizardID()
-	 */
-	public String getWizardID() {
-		return WIZARD_ID;
-	} 
-	
-	private EARComponentCreationDataModel getSpecificDataModel() {
-		return (EARComponentCreationDataModel) getModel();
 	}
 
+    protected IDataModelProvider getDefaultProvider() {
+        return new EarComponentCreationDataModelProvider();
+        
+    } 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizardPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizardPage.java
index b38e4b8..a2ad1ac 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizardPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARComponentCreationWizardPage.java
@@ -6,13 +6,11 @@
  */
 package org.eclipse.jst.j2ee.internal.wizard;
 
-import org.eclipse.jst.j2ee.internal.earcreation.EARComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 public class EARComponentCreationWizardPage extends J2EEComponentCreationWizardPage {
 
@@ -22,7 +20,7 @@
 	 * @param model
 	 * @param pageName
 	 */
-	public EARComponentCreationWizardPage(EARComponentCreationDataModel  model, String pageName) {
+	public EARComponentCreationWizardPage(IDataModel model, String pageName) {
 		super(model, pageName);
 		setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_COMPONENT_MAIN_PG_TITLE));
 		setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_COMPONENT_MAIN_PG_DESC));
@@ -37,18 +35,11 @@
 	protected void addToAdvancedComposite(Composite advanced) {
 		super.addToAdvancedComposite(advanced);
 	}
-	
-	EARComponentCreationDataModel getEARProjectCreationDataModel() {
-		return (EARComponentCreationDataModel) model;
-	}
 
 	//TODO: utility to handle additions
 	protected String[] getValidationPropertyNames() {
-		return new String[]{ComponentCreationDataModel.PROJECT_NAME, 
-				ComponentCreationDataModel.COMPONENT_NAME, 
-				ComponentCreationDataModel.COMPONENT_VERSION, 
-				WTPOperationDataModel.NESTED_MODEL_VALIDATION_HOOK};
-	}
+        return new String[] { PROJECT_NAME, COMPONENT_NAME, COMPONENT_VERSION };
+    }
 
 	public void dispose() {
 		super.dispose();
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportPage.java
index 55e5dac..d73c66d 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/EARImportPage.java
@@ -35,7 +35,6 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizard;
 import org.eclipse.wst.common.internal.emfworkbench.operation.EditModelOperationDataModel;
 
 /**
@@ -88,10 +87,6 @@
 		return earModel;
 	}
 
-	protected WTPWizard getNewProjectWizard(J2EEComponentCreationDataModel aModel) {
-		return new EARComponentCreationWizard((EARComponentCreationDataModel) aModel);
-	}
-
 	protected String getProjectImportLabel() {
 		return J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_IMPORT_PROJECT_LABEL);
 	}
@@ -155,7 +150,7 @@
 	 * @see org.eclipse.jst.j2ee.internal.internal.internal.ui.wizard.J2EEModuleImportPage#createAnnotationsStandaloneGroup(org.eclipse.swt.widgets.Composite)
 	 */
 	protected void createAnnotationsStandaloneGroup(Composite composite) {
-		new AnnotationsStandaloneGroup(composite, model, false);
+		//new AnnotationsStandaloneGroup(composite, model, false);
 	}
 
 	/*
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationDataModelWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationDataModelWizard.java
deleted file mode 100644
index 158dc6e..0000000
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationDataModelWizard.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.jst.j2ee.internal.wizard;
-
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationDataModelProvider;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
-import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard;
-
-public class FlexibleProjectCreationDataModelWizard extends DataModelWizard { 
-
-	/**
-	 * <p>
-	 * Constant used to identify the key of the main page of the Wizard.
-	 * </p>
-	 */
-	protected static final String MAIN_PG = "main"; //$NON-NLS-1$
-	private IStructuredSelection selection;
-	public static final String WIZARD_ID = FlexibleProjectCreationWizard.class.getName();
-
-	/**
-	 * <p>
-	 * Creates a default instance of the wizard with no configuration data, no selection, and no
-	 * operation data model.
-	 * </p>
-	 */
-	public FlexibleProjectCreationDataModelWizard() {
-		super();
-	}
-
-	/**
-	 * <p>
-	 * The model is used to prepopulate wizard controls and to collect data from the user. The model
-	 * will eventually be used to run the operation, if the user does not cancel the Wizard.
-	 * </p>
-	 * 
-	 * @param model
-	 *            used to collect information and interface with the WTP Operation
-	 */
-	public FlexibleProjectCreationDataModelWizard(IDataModel model) {
-		super(model);
-	}
-
-	/**
-	 * <p>
-	 * The selection is used to pre-populate values in the Wizard dialog controls.
-	 * </p>
-	 * 
-	 * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench,
-	 *      org.eclipse.jface.viewers.IStructuredSelection)
-	 * 
-	 * @param workbench
-	 *            the current workbench parent of the wizard
-	 * @param aSelection
-	 *            the selection from the view used to start the wizard (if any)
-	 */
-	public final void init(IWorkbench workbench, IStructuredSelection aSelection) {
-		setNeedsProgressMonitor(true);
-		this.selection = aSelection;
-		setWindowTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.FLEXIBLE_PROJECT_WIZ_TITLE));
-		setDefaultPageImageDescriptor(J2EEUIPlugin.getDefault().getImageDescriptor(J2EEUIPluginIcons.EAR_WIZ_BANNER));
-		setHelpAvailable(false);
-	}
-
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.jface.wizard.Wizard#addPages()
-	 */
-	protected void doAddPages() {
-		addPage(new FlexibleProjectCreationDataModelWizardPage(getDataModel(), MAIN_PG));
-	}
-
-	protected IDataModelProvider getDefaultProvider() {
-		return new FlexibleProjectCreationDataModelProvider();
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationDataModelWizardPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationDataModelWizardPage.java
deleted file mode 100644
index 082176b..0000000
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationDataModelWizardPage.java
+++ /dev/null
@@ -1,294 +0,0 @@
-package org.eclipse.jst.j2ee.internal.wizard;
-
-import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationDataModel;
-import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.servertarget.J2EEProjectServerTargetDataModel;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ControlEvent;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.DisposeEvent;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPPropertyDescriptor;
-import org.eclipse.wst.server.ui.ServerUIUtil;
-
-public class FlexibleProjectCreationDataModelWizardPage extends DataModelWizardPage {
-	private static final boolean isWindows = SWT.getPlatform().toLowerCase().startsWith("win"); //$NON-NLS-1$
-
-	protected NewFlexibleProjectGroup projectNameGroup;
-	protected Composite advancedComposite;
-	protected Button advancedButton;
-	protected boolean showAdvanced = false;
-	protected AdvancedSizeController advancedController;
-	protected boolean advancedControlsBuilt = false;
-	protected Combo serverTargetCombo;
-
-	private class AdvancedSizeController implements ControlListener {
-		private int advancedHeight = -1;
-		private Point originalSize;
-		private boolean ignoreShellResize = false;
-
-		private AdvancedSizeController(Shell aShell) {
-			originalSize = aShell.getSize();
-			aShell.addControlListener(this);
-		}
-
-		public void controlMoved(ControlEvent e) {
-			//do nothing
-		}
-
-		public void controlResized(ControlEvent e) {
-			if (!ignoreShellResize) {
-				Control control = (Control) e.getSource();
-				if (control.isVisible()) {
-					originalSize = control.getSize();
-					if (advancedHeight == -1)
-						setShellSizeForAdvanced();
-				}
-			}
-		}
-
-		protected void resetOriginalShellSize() {
-			setShellSize(originalSize.x, originalSize.y);
-		}
-
-		private void setShellSize(int x, int y) {
-			ignoreShellResize = true;
-			try {
-				getShell().setSize(x, y);
-			} finally {
-				ignoreShellResize = false;
-			}
-		}
-
-		protected void setShellSizeForAdvanced() {
-			int height = calculateAdvancedShellHeight();
-			if (height != -1)
-				setShellSize(getShell().getSize().x, height);
-		}
-
-		private int calculateAdvancedShellHeight() {
-			Point advancedCompSize = advancedComposite.getSize();
-			if (advancedCompSize.x == 0)
-				return -1;
-			int height = computeAdvancedHeight();
-			if (!showAdvanced && height != -1)
-				height = height - advancedComposite.getSize().y;
-			return height;
-		}
-
-		/*
-		 * Compute the height with the advanced section showing. @return
-		 */
-		private int computeAdvancedHeight() {
-			if (advancedHeight == -1) {
-				Point controlSize = getControl().getSize();
-				if (controlSize.x != 0) {
-					int minHeight = originalSize.y - controlSize.y;
-					Point pageSize = getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT);
-					advancedHeight = pageSize.y + minHeight;
-				}
-			}
-			return advancedHeight;
-		}
-	}
-
-	/**
-	 * @param model
-	 * @param pageName
-	 */
-	public FlexibleProjectCreationDataModelWizardPage(IDataModel model, String pageName) {
-		super(model, pageName);
-		setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.FLEXIBLE_PROJECT_MAIN_PG_TITLE));
-		setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.FLEXIBLE_PROJECT_MAIN_PG_DESC));
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jst.j2ee.internal.internal.internal.ui.wizard.J2EEProjectCreationPage#createTopLevelComposite(org.eclipse.swt.widgets.Composite)
-	 */
-	protected Composite createTopLevelComposite(Composite parent) {
-		setInfopopID(IJ2EEUIContextIds.NEW_EAR_WIZARD_P1);
-		Composite top = new Composite(parent, SWT.NONE);
-		top.setLayout(new GridLayout());
-		top.setData(new GridData(GridData.FILL_BOTH));
-		Composite composite = new Composite(top, SWT.NONE);
-		GridLayout layout = new GridLayout(3, false);
-		composite.setLayout(layout);
-		createProjectNameGroup(composite);
-		Composite detail = new Composite(top, SWT.NONE);
-		detail.setLayout(new GridLayout());
-		detail.setLayoutData(new GridData(GridData.FILL_BOTH));
-
-		createAdvancedComposite(detail);
-		return top;
-	}
-
-	protected void createProjectNameGroup(Composite parent) {
-		projectNameGroup = new NewFlexibleProjectGroup(parent, SWT.NULL, (FlexibleProjectCreationDataModel)model);
-	}
-
-	/**
-	 * @param parent
-	 */
-	protected Composite createAdvancedComposite(Composite parent) {
-		advancedControlsBuilt = true;
-		advancedButton = new Button(parent, SWT.TOGGLE);
-		setAdvancedLabelText();
-		final Cursor hand = new Cursor(advancedButton.getDisplay(), SWT.CURSOR_HAND);
-		advancedButton.addDisposeListener(new DisposeListener() {
-			public void widgetDisposed(DisposeEvent e) {
-				hand.dispose();
-			}
-		});
-		advancedButton.addSelectionListener(new SelectionListener() {
-			public void widgetSelected(SelectionEvent e) {
-				toggleAdvanced(true);
-			}
-
-			public void widgetDefaultSelected(SelectionEvent e) {
-				//do nothing
-			}
-		});
-		advancedButton.addListener(SWT.MouseHover, new Listener() {
-			public void handleEvent(Event event) {
-				if (event.type == SWT.MouseHover)
-					advancedButton.setCursor(hand);
-			}
-		});
-		advancedComposite = new Composite(parent, SWT.NONE);
-		//toggleAdvanced(false);
-		GridLayout layout = new GridLayout(3, false);
-		GridData data = new GridData(GridData.FILL_HORIZONTAL);
-		advancedComposite.setLayoutData(data);
-		advancedComposite.setLayout(layout);
-		addToAdvancedComposite(advancedComposite);
-		return advancedComposite;
-	}
-
-	/**
-	 * @param advancedLabel
-	 */
-	private void setAdvancedLabelText() {
-		if (advancedControlsBuilt) {
-			if (showAdvanced)
-				advancedButton.setText(J2EEUIMessages.getResourceString("J2EEProjectCreationPage_UI_0")); //$NON-NLS-1$
-			else
-				advancedButton.setText(J2EEUIMessages.getResourceString("J2EEProjectCreationPage_UI_1")); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * @param advancedLabel
-	 */
-	protected void toggleAdvanced(boolean setSize) {
-		if (advancedControlsBuilt) {
-			showAdvanced = !showAdvanced;
-			advancedComposite.setVisible(showAdvanced);
-			setAdvancedLabelText();
-			if (setSize && isWindows)
-				advancedController.setShellSizeForAdvanced();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizardPage#enter()
-	 */
-	protected void enter() {
-		if (advancedControlsBuilt) {
-			if (isFirstTimeToPage)
-				initializeAdvancedController();
-			if (isWindows) {
-				advancedController.setShellSizeForAdvanced();
-			}
-		}
-		super.enter();
-	}
-
-	private void initializeAdvancedController() {
-		advancedController = new AdvancedSizeController(getShell());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizardPage#exit()
-	 */
-	protected void exit() {
-		if (advancedControlsBuilt && isWindows) {
-			advancedController.resetOriginalShellSize();
-		}
-		super.exit();
-	}
-
-	protected void createServerTargetComposite(Composite parent) {
-		Label label = new Label(parent, SWT.NONE);
-		label.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.TARGET_SERVER_LBL));
-		serverTargetCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
-		serverTargetCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		Button newServerTargetButton = new Button(parent, SWT.NONE);
-		newServerTargetButton.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.NEW_THREE_DOTS_E));
-		newServerTargetButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				FlexibleProjectCreationWizardPage.launchNewRuntimeWizard(getShell(), ((FlexibleProjectCreationDataModel) model).getServerTargetDataModel());
-			}
-		});
-		Control[] deps = new Control[]{label, newServerTargetButton};
-		synchHelper.synchCombo(serverTargetCombo, J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID, deps);
-	}
-
-	protected void addToAdvancedComposite(Composite parent) {
-		createServerTargetComposite(parent);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.J2EEWizardPage#getValidationPropertyNames()
-	 */
-	protected String[] getValidationPropertyNames() {
-		return new String[]{FlexibleProjectCreationDataModel.PROJECT_NAME, FlexibleProjectCreationDataModel.PROJECT_LOCATION, FlexibleProjectCreationDataModel.SERVER_TARGET_ID};
-	}
-
-	public static boolean launchNewRuntimeWizard(Shell shell, J2EEProjectServerTargetDataModel model) {
-		WTPPropertyDescriptor[] preAdditionDescriptors = model.getValidPropertyDescriptors(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID);
-		boolean isOK = ServerUIUtil.showNewRuntimeWizard(shell, "", "");  //$NON-NLS-1$  //$NON-NLS-2$
-		if (isOK && model != null) {
-			model.notifyValidValuesChange(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID);
-			WTPPropertyDescriptor[] postAdditionDescriptors = model.getValidPropertyDescriptors(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID);
-			Object[] preAddition = new Object[preAdditionDescriptors.length];
-			for (int i = 0; i < preAddition.length; i++) {
-				preAddition[i] = preAdditionDescriptors[i].getPropertyValue();
-			}
-			Object[] postAddition = new Object[postAdditionDescriptors.length];
-			for (int i = 0; i < postAddition.length; i++) {
-				postAddition[i] = postAdditionDescriptors[i].getPropertyValue();
-			}
-			Object newAddition = ProjectUtilities.getNewObject(preAddition, postAddition);
-			if (newAddition != null)
-				model.setProperty(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID, newAddition);
-		}
-		return isOK;
-	}
-}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizard.java
index 2f41c6e..394b5f9 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizard.java
@@ -10,18 +10,18 @@
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExecutableExtension;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleJavaProjectCreationDataModel;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationOperation;
+import org.eclipse.jst.j2ee.application.internal.operations.FlexibleJavaProjectCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizard;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.properties.IFlexibleProjectCreationDataModelProperties;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard;
 
-public class FlexibleProjectCreationWizard extends WTPWizard implements INewWizard, IExecutableExtension { 
+public class FlexibleProjectCreationWizard extends DataModelWizard implements INewWizard, IExecutableExtension, IFlexibleProjectCreationDataModelProperties { 
 
 	/**
 	 * <p>
@@ -52,7 +52,7 @@
 	 * @param model
 	 *            used to collect information and interface with the WTP Operation
 	 */
-	public FlexibleProjectCreationWizard(FlexibleJavaProjectCreationDataModel model) {
+	public FlexibleProjectCreationWizard(IDataModel model) {
 		super(model);
         setWindowTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.FLEXIBLE_PROJECT_WIZ_TITLE));
         setDefaultPageImageDescriptor(J2EEUIPlugin.getDefault().getImageDescriptor(J2EEUIPluginIcons.EAR_WIZ_BANNER));
@@ -113,41 +113,10 @@
 	 * @see org.eclipse.jface.wizard.Wizard#addPages()
 	 */
 	protected void doAddPages() {
-		addPage(new FlexibleProjectCreationWizardPage(getSpecificDataModel(), MAIN_PG));
+		addPage(new FlexibleProjectCreationWizardPage(getDataModel(), MAIN_PG));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * <p>
-	 * Creates a new {@link EARProjectCreationDataModel}
-	 * </p>
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizard#createDefaultModel()
-	 */
-	protected WTPOperationDataModel createDefaultModel() {
-		return new FlexibleJavaProjectCreationDataModel();
-	}
-
-	/**
-	 * @inheritDoc
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizard#createOperation()
-	 */
-	protected WTPOperation createBaseOperation() {
-		return new FlexibleProjectCreationOperation(getSpecificDataModel());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.extensions.ExtendableWizard#getWizardID()
-	 */
-	public String getWizardID() {
-		return WIZARD_ID;
-	}
-
-	private FlexibleJavaProjectCreationDataModel getSpecificDataModel() {
-		return (FlexibleJavaProjectCreationDataModel) model;
-	}
+    protected IDataModelProvider getDefaultProvider() {
+        return new FlexibleJavaProjectCreationDataModelProvider();
+    }
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizardPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizardPage.java
index 0830685..1dad289 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizardPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/FlexibleProjectCreationWizardPage.java
@@ -7,10 +7,10 @@
 package org.eclipse.jst.j2ee.internal.wizard;
 
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationDataModel;
 import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.servertarget.J2EEProjectServerTargetDataModel;
+import org.eclipse.jst.j2ee.project.datamodel.properties.IFlexibleJavaProjectCreationDataModelProperties;
+import org.eclipse.jst.j2ee.project.datamodel.properties.IJ2EEProjectServerTargetDataModelProperties;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ControlEvent;
 import org.eclipse.swt.events.ControlListener;
@@ -31,11 +31,12 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPPropertyDescriptor;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizardPage;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelPropertyDescriptor;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
 import org.eclipse.wst.server.ui.ServerUIUtil;
 
-public class FlexibleProjectCreationWizardPage extends WTPWizardPage {
+public class FlexibleProjectCreationWizardPage extends DataModelWizardPage implements IFlexibleJavaProjectCreationDataModelProperties, IJ2EEProjectServerTargetDataModelProperties {
 	private static final boolean isWindows = SWT.getPlatform().toLowerCase().startsWith("win"); //$NON-NLS-1$
 
 	protected NewFlexibleProjectGroup projectNameGroup;
@@ -120,7 +121,7 @@
 	 * @param model
 	 * @param pageName
 	 */
-	public FlexibleProjectCreationWizardPage(FlexibleProjectCreationDataModel model, String pageName) {
+	public FlexibleProjectCreationWizardPage(IDataModel model, String pageName) {
 		super(model, pageName);
 		setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.FLEXIBLE_PROJECT_MAIN_PG_TITLE));
 		setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.FLEXIBLE_PROJECT_MAIN_PG_DESC));
@@ -149,7 +150,7 @@
 	}
 
 	protected void createProjectNameGroup(Composite parent) {
-		projectNameGroup = new NewFlexibleProjectGroup(parent, SWT.NULL, (FlexibleProjectCreationDataModel)model);
+		projectNameGroup = new NewFlexibleProjectGroup(parent, SWT.NULL, model, synchHelper);
 	}
 
 	/**
@@ -256,11 +257,11 @@
 		newServerTargetButton.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.NEW_THREE_DOTS_E));
 		newServerTargetButton.addSelectionListener(new SelectionAdapter() {
 			public void widgetSelected(SelectionEvent e) {
-				FlexibleProjectCreationWizardPage.launchNewRuntimeWizard(getShell(), ((FlexibleProjectCreationDataModel) model).getServerTargetDataModel());
+				FlexibleProjectCreationWizardPage.launchNewRuntimeWizard(getShell(), model.getNestedModel(NESTED_MODEL_SERVER_TARGET));
 			}
 		});
 		Control[] deps = new Control[]{label, newServerTargetButton};
-		synchHelper.synchCombo(serverTargetCombo, J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID, deps);
+		synchHelper.synchCombo(serverTargetCombo, RUNTIME_TARGET_ID, deps);
 	}
 
 	protected void addToAdvancedComposite(Composite parent) {
@@ -273,15 +274,15 @@
 	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.J2EEWizardPage#getValidationPropertyNames()
 	 */
 	protected String[] getValidationPropertyNames() {
-		return new String[]{FlexibleProjectCreationDataModel.PROJECT_NAME, FlexibleProjectCreationDataModel.PROJECT_LOCATION, FlexibleProjectCreationDataModel.SERVER_TARGET_ID};
+		return new String[]{IFlexibleJavaProjectCreationDataModelProperties.PROJECT_NAME, PROJECT_LOCATION, SERVER_TARGET_ID};
 	}
 
-	public static boolean launchNewRuntimeWizard(Shell shell, J2EEProjectServerTargetDataModel model) {
-		WTPPropertyDescriptor[] preAdditionDescriptors = model.getValidPropertyDescriptors(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID);
+	public static boolean launchNewRuntimeWizard(Shell shell, IDataModel model) {
+		DataModelPropertyDescriptor[] preAdditionDescriptors = model.getValidPropertyDescriptors(RUNTIME_TARGET_ID);
 		boolean isOK = ServerUIUtil.showNewRuntimeWizard(shell, "", "");  //$NON-NLS-1$  //$NON-NLS-2$
 		if (isOK && model != null) {
-			model.notifyValidValuesChange(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID);
-			WTPPropertyDescriptor[] postAdditionDescriptors = model.getValidPropertyDescriptors(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID);
+			model.notifyPropertyChange(RUNTIME_TARGET_ID, IDataModel.VALID_VALUES_CHG);
+			DataModelPropertyDescriptor[] postAdditionDescriptors = model.getValidPropertyDescriptors(RUNTIME_TARGET_ID);
 			Object[] preAddition = new Object[preAdditionDescriptors.length];
 			for (int i = 0; i < preAddition.length; i++) {
 				preAddition[i] = preAdditionDescriptors[i].getPropertyValue();
@@ -292,7 +293,7 @@
 			}
 			Object newAddition = ProjectUtilities.getNewObject(preAddition, postAddition);
 			if (newAddition != null)
-				model.setProperty(J2EEProjectServerTargetDataModel.RUNTIME_TARGET_ID, newAddition);
+				model.setProperty(RUNTIME_TARGET_ID, newAddition);
 		}
 		return isOK;
 	}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEArtifactCreationWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEArtifactCreationWizard.java
index 6aff263..2091f9b 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEArtifactCreationWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEArtifactCreationWizard.java
@@ -13,6 +13,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExecutableExtension;
+import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.dialogs.IDialogSettings;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jst.j2ee.internal.DelegateConfigurationElement;
@@ -22,10 +23,10 @@
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
 import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
+import org.eclipse.wst.common.componentcore.datamodel.properties.IComponentCreationDataModelProperties;
 import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizard;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard;
 
 /**
  * <p>
@@ -53,7 +54,7 @@
  * 
  * @see org.eclipse.wst.common.frameworks.ui.ExtendableWizard
  */
-public abstract class J2EEArtifactCreationWizard extends WTPWizard implements INewWizard, IExecutableExtension, IPluginContribution {
+public abstract class J2EEArtifactCreationWizard extends DataModelWizard implements INewWizard, IExecutableExtension, IPluginContribution {
 
 	/**
 	 * <p>
@@ -84,7 +85,7 @@
 	 * @param model
 	 *            used to collect information and interface with the WTP Operation
 	 */
-	public J2EEArtifactCreationWizard(WTPOperationDataModel model) {
+	public J2EEArtifactCreationWizard(IDataModel model) {
 		super(model);
 	}
 
@@ -223,7 +224,8 @@
 			BasicNewProjectResourceWizard.updatePerspective(element);
 		} else
 			BasicNewProjectResourceWizard.updatePerspective(configurationElement);
-		BasicNewResourceWizard.selectAndReveal(((ComponentCreationDataModel) model).getTargetProject(), J2EEUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow());
+        String projName = getDataModel().getStringProperty(IComponentCreationDataModelProperties.PROJECT_NAME);
+		BasicNewResourceWizard.selectAndReveal(ProjectUtilities.getProject(projName), J2EEUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow());
 	}
 
 
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationDataModelWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationDataModelWizard.java
index a10e841..dbc6473 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationDataModelWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationDataModelWizard.java
@@ -8,6 +8,7 @@
 import org.eclipse.jst.j2ee.internal.servertarget.ServerTargetDataModel;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 public abstract class J2EEComponentCreationDataModelWizard extends J2EEArtifactCreationWizard {
 
@@ -37,7 +38,7 @@
 	 *            The model parameter is used to pre-populate wizard controls and interface with the
 	 *            operation
 	 */
-	public J2EEComponentCreationDataModelWizard(J2EEComponentCreationDataModel model) {
+	public J2EEComponentCreationDataModelWizard(IDataModel model) {
 		super(model);
 	}
 
@@ -63,8 +64,8 @@
 	 *  
 	 */
 	protected void addModulesPageIfNecessary() {
-		if (model.getBooleanProperty(IJ2EEComponentCreationDataModelProperties.UI_SHOW_EAR_SECTION)) {
-			addPage(new J2EEModulesDependencyPage((J2EEComponentCreationDataModel) model, MODULE_PG));
+		if (getDataModel().getBooleanProperty(IJ2EEComponentCreationDataModelProperties.UI_SHOW_EAR_SECTION)) {
+			addPage(new J2EEModulesDependencyPage(getDataModel(), MODULE_PG));
 		}
 	}
 
@@ -126,7 +127,7 @@
 	 * @return Returns a boolean true if the module page should be shown.
 	 */
 	protected final boolean shouldShowModulesPage() {
-		return model.getBooleanProperty(J2EEComponentCreationDataModel.ADD_TO_EAR) && shouldShowModulesPageForEAR();
+		return getDataModel().getBooleanProperty(J2EEComponentCreationDataModel.ADD_TO_EAR) && shouldShowModulesPageForEAR();
 	}
 
 	/**
@@ -147,7 +148,7 @@
 		WorkbenchComponent earModule = getSelectedEARModule();
 		EARArtifactEdit earEdit = null;
 		int j2eeVersion = 0;
-		if (earModule != null && model != null) {
+		if (earModule != null && getDataModel() != null) {
 			try {
 				earEdit = EARArtifactEdit.getEARArtifactEditForRead(earModule);
 				j2eeVersion = earEdit.getJ2EEVersion();
@@ -155,9 +156,9 @@
 				if (earEdit != null)
 					earEdit.dispose();
 			}
-			model.setIntProperty(ServerTargetDataModel.J2EE_VERSION_ID, j2eeVersion);
-			model.setIntProperty(J2EEComponentCreationDataModel.J2EE_VERSION, j2eeVersion);
-			model.setProperty(J2EEComponentCreationDataModel.EAR_MODULE_NAME, earModule.getName());
+            getDataModel().setIntProperty(ServerTargetDataModel.J2EE_VERSION_ID, j2eeVersion);
+            getDataModel().setIntProperty(J2EEComponentCreationDataModel.J2EE_VERSION, j2eeVersion);
+            getDataModel().setProperty(J2EEComponentCreationDataModel.EAR_MODULE_NAME, earModule.getName());
 		}
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizard.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizard.java
index a06eb0a..c7ab965 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizard.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizard.java
@@ -10,11 +10,14 @@
  *******************************************************************************/
 package org.eclipse.jst.j2ee.internal.wizard;
 
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.componentcore.util.EARArtifactEdit;
+import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.servertarget.ServerTargetDataModel;
+import org.eclipse.ui.IWorkbench;
 import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 /**
  * <p>
@@ -30,7 +33,7 @@
  * 
  * @see org.eclipse.jst.j2ee.internal.wizard.J2EEArtifactCreationWizard
  */
-public abstract class J2EEComponentCreationWizard extends J2EEArtifactCreationWizard {
+public abstract class J2EEComponentCreationWizard extends J2EEArtifactCreationWizard implements IJ2EEComponentCreationDataModelProperties{
 
 	/**
 	 * <p>
@@ -58,7 +61,7 @@
 	 *            The model parameter is used to pre-populate wizard controls and interface with the
 	 *            operation
 	 */
-	public J2EEComponentCreationWizard(J2EEComponentCreationDataModel model) {
+	public J2EEComponentCreationWizard(IDataModel model) {
 		super(model);
 	}
 
@@ -84,8 +87,8 @@
 	 *  
 	 */
 	protected void addModulesPageIfNecessary() {
-		if (model.getBooleanProperty(J2EEComponentCreationDataModel.UI_SHOW_EAR_SECTION)) {
-			addPage(new J2EEModulesDependencyPage((J2EEComponentCreationDataModel) model, MODULE_PG));
+		if (getDataModel().getBooleanProperty(UI_SHOW_EAR_SECTION)) {
+			addPage(new J2EEModulesDependencyPage(getDataModel(), MODULE_PG));
 		}
 	}
 
@@ -147,7 +150,7 @@
 	 * @return Returns a boolean true if the module page should be shown.
 	 */
 	protected final boolean shouldShowModulesPage() {
-		return model.getBooleanProperty(J2EEComponentCreationDataModel.ADD_TO_EAR) && shouldShowModulesPageForEAR();
+		return getDataModel().getBooleanProperty(ADD_TO_EAR) && shouldShowModulesPageForEAR();
 	}
 
 	/**
@@ -168,7 +171,7 @@
 		WorkbenchComponent earModule = getSelectedEARModule();
 		EARArtifactEdit earEdit = null;
 		int j2eeVersion = 0;
-		if (earModule != null && model != null) {
+		if (earModule != null && getDataModel() != null) {
 			try {
 				earEdit = EARArtifactEdit.getEARArtifactEditForRead(earModule);
 				j2eeVersion = earEdit.getJ2EEVersion();
@@ -176,9 +179,9 @@
 				if (earEdit != null)
 					earEdit.dispose();
 			}
-			model.setIntProperty(ServerTargetDataModel.J2EE_VERSION_ID, j2eeVersion);
-			model.setIntProperty(J2EEComponentCreationDataModel.J2EE_VERSION, j2eeVersion);
-			model.setProperty(J2EEComponentCreationDataModel.EAR_MODULE_NAME, earModule.getName());
+            getDataModel().setIntProperty(ServerTargetDataModel.J2EE_VERSION_ID, j2eeVersion);
+            getDataModel().setIntProperty(COMPONENT_VERSION, j2eeVersion);
+            getDataModel().setProperty(EAR_COMPONENT_NAME, earModule.getName());
 		}
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizardPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizardPage.java
index b41e735..b3a9382 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizardPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEComponentCreationWizardPage.java
@@ -18,7 +18,7 @@
 
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
+import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.jst.j2ee.internal.servertarget.ServerTargetDataModel;
 import org.eclipse.swt.SWT;
@@ -41,14 +41,13 @@
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPPropertyDescriptor;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizardPage;
 import org.eclipse.wst.server.ui.ServerUIUtil;
 
 
-public abstract class J2EEComponentCreationWizardPage extends WTPWizardPage {
+public abstract class J2EEComponentCreationWizardPage extends DataModelWizardPage implements IJ2EEComponentCreationDataModelProperties{
 
 	private static final boolean isWindows = SWT.getPlatform().toLowerCase().startsWith("win"); //$NON-NLS-1$
 	protected static final String MODULE_VERSION = "Module Version:";
@@ -138,12 +137,12 @@
 		}
 	}
 	
-	public J2EEComponentCreationWizardPage(J2EEComponentCreationDataModel dataModel, String pageName) {
+	public J2EEComponentCreationWizardPage(IDataModel dataModel, String pageName) {
 		super(dataModel, pageName);
 	}
 	
 	protected void createProjectNameGroup(Composite parent) {
-		projectNameGroup = new NewModuleGroup(parent, SWT.NULL, (J2EEComponentCreationDataModel)model);
+		projectNameGroup = new NewModuleGroup(parent, SWT.NULL, model, synchHelper);
 	}
 
 	protected void addToAdvancedComposite(Composite advanced) {
@@ -152,19 +151,15 @@
 	}
 
 	protected void createServerEarAndStandaloneGroup(Composite parent) {
-		earGroup = new ServerEarAndStandaloneGroup(parent, getJ2EEModuleCreationDataModel());
-	}
-
-	protected J2EEComponentCreationDataModel getJ2EEModuleCreationDataModel() {
-		return (J2EEComponentCreationDataModel) model;
+		earGroup = new ServerEarAndStandaloneGroup(parent, getDataModel(), synchHelper);
 	}
 
 	protected void validatePage() {
 		super.validatePage();
-		if (!showAdvanced && !isPageComplete()) {
+/*		if (!showAdvanced && !isPageComplete()) {
 			String prop = validateControlsBase();
 			if (null != prop) {
-				String[] advancedProperties = {WTPOperationDataModel.NESTED_MODEL_VALIDATION_HOOK, ComponentCreationDataModel.COMPONENT_VERSION, J2EEComponentCreationDataModel.EAR_MODULE_NAME, J2EEComponentCreationDataModel.ADD_TO_EAR};
+				String[] advancedProperties = {NESTED_MODEL_VALIDATION_HOOK, COMPONENT_VERSION, EAR_COMPONENT_NAME, ADD_TO_EAR};
 				for (int i = 0; i < advancedProperties.length; i++) {
 					if (prop.equals(advancedProperties[i])) {
 						toggleAdvanced(true);
@@ -172,15 +167,15 @@
 					}
 				}
 			}
-		}
+		}*/
 	}
 
 	protected String[] getValidationPropertyNames() {
-		return new String[]{ComponentCreationDataModel.PROJECT_NAME, ComponentCreationDataModel.COMPONENT_VERSION, ComponentCreationDataModel.COMPONENT_NAME, J2EEComponentCreationDataModel.EAR_MODULE_NAME, J2EEComponentCreationDataModel.ADD_TO_EAR};
+		return new String[]{PROJECT_NAME, COMPONENT_VERSION, COMPONENT_NAME, EAR_COMPONENT_NAME, ADD_TO_EAR};
 	}
 
 	protected void createVersionComposite(Composite parent) {
-		createVersionComposite(parent, getVersionLabel(), ComponentCreationDataModel.COMPONENT_VERSION);
+		createVersionComposite(parent, getVersionLabel(), COMPONENT_VERSION);
 	}
 
 	protected String getVersionLabel() {
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEModulesDependencyPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEModulesDependencyPage.java
index 3b99c4e..0b8e6e8 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEModulesDependencyPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/J2EEModulesDependencyPage.java
@@ -19,8 +19,8 @@
 import org.eclipse.jface.viewers.TableLayout;
 import org.eclipse.jst.j2ee.application.internal.operations.ClassPathSelection;
 import org.eclipse.jst.j2ee.application.internal.operations.ClasspathElement;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.application.internal.operations.UpdateManifestDataModel;
+import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.swt.SWT;
@@ -36,9 +36,9 @@
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.internal.WorkbenchMessages;
-import org.eclipse.wst.common.componentcore.internal.operation.ArtifactEditOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModelEvent;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizardPage;
 
 /*
  * Created on Nov 13, 2003
@@ -53,11 +53,11 @@
  * To change the template for this generated type comment go to
  * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
  */
-public class J2EEModulesDependencyPage extends WTPWizardPage {
+public class J2EEModulesDependencyPage extends DataModelWizardPage implements IJ2EEComponentCreationDataModelProperties{
 
 	private CheckboxTableViewer availableJarsViewer;
 
-	public J2EEModulesDependencyPage(J2EEComponentCreationDataModel model, String pageName) {
+	public J2EEModulesDependencyPage(IDataModel model, String pageName) {
 		super(model, pageName);
 		setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_TITLE));
 		setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_DESC));
@@ -70,9 +70,7 @@
 
 
 	private void updateJarViewer() {
-		J2EEComponentCreationDataModel dataModel = (J2EEComponentCreationDataModel) model;
-
-		ClassPathSelection classPathSelection = dataModel.getClassPathSelection();
+        ClassPathSelection classPathSelection = (ClassPathSelection)getDataModel().getProperty(CLASSPATH_SELECTION);
 
 		if (availableJarsViewer.getInput() != classPathSelection) {
 			availableJarsViewer.setInput(classPathSelection);
@@ -91,14 +89,14 @@
 		Label projectLabel = new Label(composite, SWT.NONE);
 		projectLabel.setText(WorkbenchMessages.NewProject_title); //$NON-NLS-1$
 		Text projectText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
-		synchHelper.synchText(projectText, ArtifactEditOperationDataModel.PROJECT_NAME, null);
+		synchHelper.synchText(projectText, PROJECT_NAME, null);
 		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
 		projectText.setLayoutData(gd);
 
 		Label earLabel = new Label(composite, SWT.NONE);
 		earLabel.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_PROJECT_FOR_MODULE_CREATION));
 		Text earText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
-		synchHelper.synchText(earText, J2EEComponentCreationDataModel.EAR_MODULE_NAME, null);
+		synchHelper.synchText(earText, EAR_COMPONENT_NAME, null);
 		gd = new GridData(GridData.FILL_HORIZONTAL);
 		earText.setLayoutData(gd);
 
@@ -186,7 +184,7 @@
 		ClasspathElement element = (ClasspathElement) event.getElement();
 		element.setSelected(event.getChecked());
 		String classEntry = element.getText();
-		UpdateManifestDataModel updateManifest = ((J2EEComponentCreationDataModel) model).getUpdateManifestDataModel();
+		UpdateManifestDataModel updateManifest = (UpdateManifestDataModel)model.getProperty(NESTED_UPDATE_MANIFEST_DM);
 		List classpathList = (List) updateManifest.getProperty(UpdateManifestDataModel.JAR_LIST);
 		if (event.getChecked()) {
 			if (!classpathList.contains(classEntry)) {
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewFlexibleProjectGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewFlexibleProjectGroup.java
index 8f12868..b24956f 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewFlexibleProjectGroup.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewFlexibleProjectGroup.java
@@ -8,8 +8,8 @@
 
 import java.io.File;
 
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
+import org.eclipse.jst.j2ee.project.datamodel.properties.IFlexibleJavaProjectCreationDataModelProperties;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -20,10 +20,11 @@
 import org.eclipse.swt.widgets.DirectoryDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPDataModelSynchHelper;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
 
-public class NewFlexibleProjectGroup {
-	private FlexibleProjectCreationDataModel model;
+public class NewFlexibleProjectGroup implements IFlexibleJavaProjectCreationDataModelProperties{
+	private IDataModel model;
 	public Text projectNameField = null;
 	protected Text locationPathField = null;
 	protected Button browseButton = null;
@@ -34,15 +35,15 @@
 	private String defBrowseButtonLabel = J2EEUIMessages.getResourceString(J2EEUIMessages.BROWSE_LABEL); //$NON-NLS-1$
 	private static final String defDirDialogLabel = "Directory"; //$NON-NLS-1$
 
-	private WTPDataModelSynchHelper synchHelper;
+	private DataModelSynchHelper synchHelper;
 
 	/**
 	 * @param parent
 	 * @param style
 	 */
-	public NewFlexibleProjectGroup(Composite parent, int style, FlexibleProjectCreationDataModel model) {
+	public NewFlexibleProjectGroup(Composite parent, int style, IDataModel model, DataModelSynchHelper aHelper) {
 		this.model = model;
-		synchHelper = new WTPDataModelSynchHelper(model);
+		synchHelper = aHelper;
 		buildComposites(parent);
 	}
 
@@ -70,7 +71,7 @@
 		data.widthHint = SIZING_TEXT_FIELD_WIDTH;
 		projectNameField.setLayoutData(data);
 		new Label(parent, SWT.NONE); // pad
-		synchHelper.synchText(projectNameField, FlexibleProjectCreationDataModel.PROJECT_NAME, new Control[]{projectNameLabel});
+		synchHelper.synchText(projectNameField, PROJECT_NAME, new Control[]{projectNameLabel});
 	}
 
 	/**
@@ -97,7 +98,7 @@
 			}
 		});
 		browseButton.setEnabled(true);
-		synchHelper.synchText(locationPathField, FlexibleProjectCreationDataModel.PROJECT_LOCATION, null);
+		synchHelper.synchText(locationPathField, PROJECT_LOCATION, null);
 	}
 
 	/**
@@ -106,7 +107,7 @@
 	protected void handleLocationBrowseButtonPressed() {
 		DirectoryDialog dialog = new DirectoryDialog(locationPathField.getShell());
 		dialog.setMessage(defDirDialogLabel);
-		String dirName = model.getStringProperty(FlexibleProjectCreationDataModel.PROJECT_LOCATION);
+		String dirName = model.getStringProperty(PROJECT_LOCATION);
 		if ((dirName != null) && (dirName.length() != 0)) {
 			File path = new File(dirName);
 			if (path.exists()) {
@@ -115,13 +116,12 @@
 		}
 		String selectedDirectory = dialog.open();
 		if (selectedDirectory != null) {
-			model.setProperty(FlexibleProjectCreationDataModel.PROJECT_LOCATION, selectedDirectory);
+			model.setProperty(PROJECT_LOCATION, selectedDirectory);
 		}
 	}
 
 	public void dispose() {
 		model.removeListener(synchHelper);
-		synchHelper.dispose();
 		model = null;
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleDataModelGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleDataModelGroup.java
index b8abb25..51a8742 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleDataModelGroup.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleDataModelGroup.java
@@ -8,12 +8,7 @@
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.common.jdt.internal.integration.JavaProjectCreationDataModelProvider;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleJavaProjectCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.servertarget.J2EEProjectServerTargetDataModelProvider;
 import org.eclipse.jst.j2ee.project.datamodel.properties.IFlexibleJavaProjectCreationDataModelProperties;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
@@ -29,9 +24,7 @@
 import org.eclipse.ui.internal.Workbench;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IComponentCreationDataModelProperties;
 import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
-import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.frameworks.datamodel.properties.IFlexibleProjectCreationDataModelProperties;
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
 import org.eclipse.wst.server.core.IRuntime;
 import org.eclipse.wst.server.core.ServerCore;
@@ -174,23 +167,23 @@
 	 *
 	 */
 	private void handleNewProjectSelected() {
-		IDataModel flexibleJavaModel = DataModelFactory.createDataModel(new FlexibleJavaProjectCreationDataModelProvider());
-		IDataModel javaProjModel = DataModelFactory.createDataModel(new JavaProjectCreationDataModelProvider());
-		IDataModel serverTargetModel = DataModelFactory.createDataModel(new J2EEProjectServerTargetDataModelProvider());
-        flexibleJavaModel.addNestedModel(NESTED_MODEL_PROJECT_CREATION, javaProjModel);
-        flexibleJavaModel.addNestedModel(NESTED_MODEL_SERVER_TARGET, serverTargetModel);
-//		FlexibleJavaProjectCreationDataModel projModel = new FlexibleJavaProjectCreationDataModel();
-		FlexibleProjectCreationDataModelWizard newProjectWizard = new FlexibleProjectCreationDataModelWizard(flexibleJavaModel);
-		WizardDialog dialog = new WizardDialog(parentComposite.getShell(), newProjectWizard);
-		if (Window.OK == dialog.open()) {
-			String newProjectName = javaProjModel.getStringProperty(IFlexibleProjectCreationDataModelProperties.PROJECT_NAME);
-			projectNameCombo.add(newProjectName);
-			projectNameCombo.setText(newProjectName);
-			IProject project = ProjectUtilities.getProject(projectNameCombo.getText());
-			IRuntime runtime = ServerCore.getProjectProperties(project).getRuntimeTarget();
-			if (runtime != null)
-				serverTargetText.setText(runtime.getName());
-		}
+//		IDataModel flexibleJavaModel = DataModelFactory.createDataModel(new FlexibleJavaProjectCreationDataModelProvider());
+//		IDataModel javaProjModel = DataModelFactory.createDataModel(new JavaProjectCreationDataModelProvider());
+//		IDataModel serverTargetModel = DataModelFactory.createDataModel(new J2EEProjectServerTargetDataModelProvider());
+//        flexibleJavaModel.addNestedModel(NESTED_MODEL_PROJECT_CREATION, javaProjModel);
+//        flexibleJavaModel.addNestedModel(NESTED_MODEL_SERVER_TARGET, serverTargetModel);
+////		FlexibleJavaProjectCreationDataModel projModel = new FlexibleJavaProjectCreationDataModel();
+//	/	IDataModel newProjectWizard = new FlexibleProjectCreationDataModelWizard(flexibleJavaModel);
+//		WizardDialog dialog = new WizardDialog(parentComposite.getShell(), newProjectWizard);
+//		if (Window.OK == dialog.open()) {
+//			String newProjectName = javaProjModel.getStringProperty(IFlexibleProjectCreationDataModelProperties.PROJECT_NAME);
+//			projectNameCombo.add(newProjectName);
+//			projectNameCombo.setText(newProjectName);
+//			IProject project = ProjectUtilities.getProject(projectNameCombo.getText());
+//			IRuntime runtime = ServerCore.getProjectProperties(project).getRuntimeTarget();
+//			if (runtime != null)
+//				serverTargetText.setText(runtime.getName());
+//		}
 	}
 	
 	/**
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroup.java
index 1013164..14f83d0 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroup.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroup.java
@@ -16,63 +16,50 @@
  */
 package org.eclipse.jst.j2ee.internal.wizard;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleJavaProjectCreationDataModel;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationDataModel;
+import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.internal.Workbench;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPDataModelSynchHelper;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
 import org.eclipse.wst.server.core.IRuntime;
 import org.eclipse.wst.server.core.ServerCore;
 
 /**
  *
  */
-public class NewModuleGroup {
+public class NewModuleGroup implements IJ2EEComponentCreationDataModelProperties{
 	
-	private ComponentCreationDataModel model;
-	protected Combo projectNameCombo = null;
+	private IDataModel model;
 	protected Text moduleNameText = null;
 	protected Button newButton = null;
 	protected Text serverTargetText;
-	private WTPDataModelSynchHelper synchHelper;
+	private DataModelSynchHelper synchHelper;
 	private Composite parentComposite;
 	
 	private static final int SIZING_TEXT_FIELD_WIDTH = 305;
-	private static final String PROJECT_NAME = J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_TABLE_PROJECT)+ ":"; //$NON-NLS-1$
-	private static final String NEW_LABEL = J2EEUIMessages.getResourceString(J2EEUIMessages.NEW_THREE_DOTS_E); //$NON-NLS-1$
-	private static final String MODULE_NAME = J2EEUIMessages.getResourceString(J2EEUIMessages.MODULE_NAME); //$NON-NLS-1$
+	private static final String NEW_LABEL_UI = J2EEUIMessages.getResourceString(J2EEUIMessages.NEW_THREE_DOTS_E); //$NON-NLS-1$
+	private static final String MODULE_NAME_UI = J2EEUIMessages.getResourceString(J2EEUIMessages.MODULE_NAME); //$NON-NLS-1$
 	
 	/**
 	 * @param parent
 	 * @param style
 	 */
-	public NewModuleGroup(Composite parent, int style, ComponentCreationDataModel model) {
+	public NewModuleGroup(Composite parent, int style, IDataModel model, DataModelSynchHelper syncHelper) {
 		this.model = model;
 		this.parentComposite = parent;
-		synchHelper = new WTPDataModelSynchHelper(model);
+		synchHelper = syncHelper;
 		buildComposites(parent);
 	}
 
@@ -80,87 +67,88 @@
 	 * Create the controls within this composite
 	 */
 	public void buildComposites(Composite parent) {
-		createProjectNameGroup(parent);
-		projectNameCombo.setFocus();
-		initializeProjectList();
+		//createProjectNameGroup(parent);
+		//initializeProjectList();
+        createModuleGroup(parent);
+        addSeperator(parent,3);
 		createServerTargetComposite(parent);
-		addSeperator(parent,3);
-		createModuleGroup(parent);
+
+
 	}
 	
 	/**
 	 * 
 	 *
 	 */
-	public void initializeProjectList() {
-		IProject[] workspaceProjects = ProjectUtilities.getAllProjects();
-		List items = new ArrayList();
-		for (int i=0; i<workspaceProjects.length; i++) {
-			IProject project = workspaceProjects[i];
-			try {
-				if (project.hasNature(IModuleConstants.MODULE_NATURE_ID)) {
-					items.add(project.getName());
-				}
-			} catch (CoreException ce) {
-				//Ignore
-			}
-		}
-		String[] names = new String[items.size()];
-		for (int i=0; i<items.size(); i++) {
-			names[i]= (String) items.get(i);
-		}
-		model.setIgnorePropertyChanges(true);
-		projectNameCombo.setItems(names);
-		model.setIgnorePropertyChanges(false);
-		
-		if (!model.isSet(ComponentCreationDataModel.PROJECT_NAME) || model.getStringProperty(ComponentCreationDataModel.PROJECT_NAME).length()==0) {
-			IProject selectedProject = getSelectedProject();
-			if (selectedProject!=null) {
-				projectNameCombo.setText(selectedProject.getName());
-				model.setProperty(ComponentCreationDataModel.PROJECT_NAME,selectedProject.getName());
-			}
-			else if (names.length>0) {
-				projectNameCombo.setText(names[0]);
-				model.setProperty(ComponentCreationDataModel.PROJECT_NAME,names[0]);
-			}
-		} else {
-			projectNameCombo.add(model.getStringProperty(ComponentCreationDataModel.PROJECT_NAME));
-			projectNameCombo.setText(model.getStringProperty(ComponentCreationDataModel.PROJECT_NAME));
-		}
-	}
+//	public void initializeProjectList() {
+//		IProject[] workspaceProjects = ProjectUtilities.getAllProjects();
+//		List items = new ArrayList();
+//		for (int i=0; i<workspaceProjects.length; i++) {
+//			IProject project = workspaceProjects[i];
+//			try {
+//				if (project.hasNature(IModuleConstants.MODULE_NATURE_ID)) {
+//					items.add(project.getName());
+//				}
+//			} catch (CoreException ce) {
+//				//Ignore
+//			}
+//		}
+//		String[] names = new String[items.size()];
+//		for (int i=0; i<items.size(); i++) {
+//			names[i]= (String) items.get(i);
+//		}
+//		//model.IgnorePropertyChanges(true);
+//		projectNameCombo.setItems(names);
+//		//model.setIgnorePropertyChanges(false);
+//		
+//		if (!model.isPropertySet(PROJECT_NAME) || model.getStringProperty(PROJECT_NAME).length()==0) {
+//			IProject selectedProject = getSelectedProject();
+//			if (selectedProject!=null) {
+//				projectNameCombo.setText(selectedProject.getName());
+//				model.setProperty(PROJECT_NAME,selectedProject.getName());
+//			}
+//			else if (names.length>0) {
+//				projectNameCombo.setText(names[0]);
+//				model.setProperty(PROJECT_NAME,names[0]);
+//			}
+//		} else {
+//			projectNameCombo.add(model.getStringProperty(PROJECT_NAME));
+//			projectNameCombo.setText(model.getStringProperty(PROJECT_NAME));
+//		}
+//	}
 
 	/**
 	 *  
 	 */
-	private void createProjectNameGroup(Composite parent) {
-		// set up project name label
-		Label projectNameLabel = new Label(parent, SWT.NONE);
-		projectNameLabel.setText(PROJECT_NAME);
-		GridData data = new GridData();
-		projectNameLabel.setLayoutData(data);
-		// set up project name entry field
-		projectNameCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
-		data = new GridData(GridData.FILL_HORIZONTAL);
-		data.widthHint = SIZING_TEXT_FIELD_WIDTH;
-		projectNameCombo.setLayoutData(data);
-		projectNameCombo.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				IProject project = ProjectUtilities.getProject(projectNameCombo.getText());
-				IRuntime runtime = ServerCore.getProjectProperties(project).getRuntimeTarget();
-				if (runtime != null)
-					serverTargetText.setText(runtime.getName());
-			}
-		});
-		newButton = new Button(parent, SWT.NONE);
-		newButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-		newButton.setText(NEW_LABEL);
-		newButton.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				handleNewProjectSelected();
-			}
-		});
-		synchHelper.synchCombo(projectNameCombo, ComponentCreationDataModel.PROJECT_NAME, new Control[]{projectNameLabel});
-	}
+//	private void createProjectNameGroup(Composite parent) {
+//		// set up project name label
+//		Label projectNameLabel = new Label(parent, SWT.NONE);
+//		projectNameLabel.setText(PROJECT_NAME_UI);
+//		GridData data = new GridData();
+//		projectNameLabel.setLayoutData(data);
+//		// set up project name entry field
+//		projectNameCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY);
+//		data = new GridData(GridData.FILL_HORIZONTAL);
+//		data.widthHint = SIZING_TEXT_FIELD_WIDTH;
+//		projectNameCombo.setLayoutData(data);
+//		projectNameCombo.addSelectionListener(new SelectionAdapter() {
+//			public void widgetSelected(SelectionEvent e) {
+//				IProject project = ProjectUtilities.getProject(projectNameCombo.getText());
+//				IRuntime runtime = ServerCore.getProjectProperties(project).getRuntimeTarget();
+//				if (runtime != null)
+//					serverTargetText.setText(runtime.getName());
+//			}
+//		});
+//		newButton = new Button(parent, SWT.NONE);
+//		newButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+//		newButton.setText(NEW_LABEL_UI);
+//		newButton.addSelectionListener(new SelectionAdapter() {
+//			public void widgetSelected(SelectionEvent e) {
+//				handleNewProjectSelected();
+//			}
+//		});
+//		synchHelper.synchCombo(projectNameCombo, PROJECT_NAME, new Control[]{projectNameLabel});
+//	}
 	
 	/**
 	 * @return
@@ -183,20 +171,20 @@
 	 * 
 	 *
 	 */
-	private void handleNewProjectSelected() {
-		FlexibleJavaProjectCreationDataModel projModel = new FlexibleJavaProjectCreationDataModel();
-		FlexibleProjectCreationWizard newProjectWizard = new FlexibleProjectCreationWizard(projModel);
-		WizardDialog dialog = new WizardDialog(parentComposite.getShell(), newProjectWizard);
-		if (Window.OK == dialog.open()) {
-			String newProjectName = projModel.getStringProperty(FlexibleProjectCreationDataModel.PROJECT_NAME);
-			projectNameCombo.add(newProjectName);
-			projectNameCombo.setText(newProjectName);
-			IProject project = ProjectUtilities.getProject(projectNameCombo.getText());
-			IRuntime runtime = ServerCore.getProjectProperties(project).getRuntimeTarget();
-			if (runtime != null)
-				serverTargetText.setText(runtime.getName());
-		}
-	}
+//	private void handleNewProjectSelected() {
+//		IDataModel projModel = DataModelFactory.createDataModel(new FlexibleJavaProjectCreationDataModelProvider());
+//		FlexibleProjectCreationWizard newProjectWizard = new FlexibleProjectCreationWizard(projModel);
+//		WizardDialog dialog = new WizardDialog(parentComposite.getShell(), newProjectWizard);
+//		if (Window.OK == dialog.open()) {
+//			String newProjectName = projModel.getStringProperty(PROJECT_NAME);
+//			projectNameCombo.add(newProjectName);
+//			projectNameCombo.setText(newProjectName);
+//			IProject project = ProjectUtilities.getProject(projectNameCombo.getText());
+//			IRuntime runtime = ServerCore.getProjectProperties(project).getRuntimeTarget();
+//			if (runtime != null)
+//				serverTargetText.setText(runtime.getName());
+//		}
+//	}
 	
 	/**
 	 * 
@@ -206,13 +194,13 @@
 		GridData data = new GridData();
 		// Add the module name label
 		Label moduleNameLabel = new Label(parent, SWT.NONE);
-		moduleNameLabel.setText(MODULE_NAME);
+		moduleNameLabel.setText(MODULE_NAME_UI);
 		// Add the module name entry field
 		moduleNameText = new Text(parent, SWT.BORDER);
 		data = new GridData(GridData.FILL_HORIZONTAL);
 		data.widthHint = SIZING_TEXT_FIELD_WIDTH;
 		moduleNameText.setLayoutData(data);
-		synchHelper.synchText(moduleNameText,ComponentCreationDataModel.COMPONENT_NAME,new Control[] {});
+		synchHelper.synchText(moduleNameText,COMPONENT_NAME,new Control[] {});
 		new Label(parent,SWT.NONE);
 	}
 
@@ -233,9 +221,9 @@
 	 * 
 	 * @return
 	 */
-	public String getProjectName() {
-		return projectNameCombo.getText();
-	}
+//	public String getProjectName() {
+//		return projectNameCombo.getText();
+//	}
 	
 	/**
 	 * 
@@ -259,7 +247,7 @@
 		serverTargetText = new Text(parent, SWT.BORDER | SWT.READ_ONLY);
 		serverTargetText.setLayoutData((new GridData(GridData.FILL_HORIZONTAL)));
 		new Label(parent, SWT.NONE);
-		String projectName = projectNameCombo.getText();
+		String projectName = moduleNameText.getText();
 		if (projectName!=null && projectName.length()!=0) {
 			IProject project = ProjectUtilities.getProject(projectName);
 			if (project !=null) {
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroupEx.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroupEx.java
index a852c1b..c7bfcc4 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroupEx.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewModuleGroupEx.java
@@ -26,7 +26,7 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.j2ee.application.internal.operations.FlexibleJavaProjectCreationDataModel;
+import org.eclipse.jst.j2ee.application.internal.operations.FlexibleJavaProjectCreationDataModelProvider;
 import org.eclipse.jst.j2ee.application.internal.operations.FlexibleProjectCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.swt.SWT;
@@ -43,9 +43,9 @@
 import org.eclipse.ui.internal.Workbench;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IComponentCreationDataModelProperties;
 import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
-
 import org.eclipse.wst.server.core.IRuntime;
 import org.eclipse.wst.server.core.ServerCore;
 
@@ -186,7 +186,7 @@
 	 *
 	 */
 	private void handleNewProjectSelected() {
-		FlexibleJavaProjectCreationDataModel projModel = new FlexibleJavaProjectCreationDataModel();
+		IDataModel projModel = DataModelFactory.createDataModel(new FlexibleJavaProjectCreationDataModelProvider());
 		FlexibleProjectCreationWizard newProjectWizard = new FlexibleProjectCreationWizard(projModel);
 		WizardDialog dialog = new WizardDialog(parentComposite.getShell(), newProjectWizard);
 		if (Window.OK == dialog.open()) {
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerEarAndStandaloneGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerEarAndStandaloneGroup.java
index 40acd01..d1a0b18 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerEarAndStandaloneGroup.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerEarAndStandaloneGroup.java
@@ -12,8 +12,9 @@
 
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.earcreation.EARComponentCreationDataModel;
+import org.eclipse.jst.j2ee.datamodel.properties.IEarComponentCreationDataModelProperties;
+import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
+import org.eclipse.jst.j2ee.internal.earcreation.EarComponentCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
@@ -24,29 +25,30 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPDataModelSynchHelper;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
 
 /**
  * 
  */
-public class ServerEarAndStandaloneGroup {
+public class ServerEarAndStandaloneGroup implements IEarComponentCreationDataModelProperties {
 	
 	private Button newEAR;
 	private Combo earCombo;
 	private Label earLabel;
 	private Button addToEAR;
-	private J2EEComponentCreationDataModel model;
-	private WTPDataModelSynchHelper synchHelper;
+	private IDataModel model;
+	private DataModelSynchHelper synchHelper;
 	private Composite parentComposite;
 
 	/**
 	 *  
 	 */
-	public ServerEarAndStandaloneGroup(Composite parent, J2EEComponentCreationDataModel model) {
+	public ServerEarAndStandaloneGroup(Composite parent, IDataModel model, DataModelSynchHelper helper) {
 		this.model = model;
 		this.parentComposite = parent;
-		synchHelper = new WTPDataModelSynchHelper(model);
+		synchHelper = helper;
 		buildComposites(parent);
 	}
 
@@ -63,7 +65,7 @@
 	 */
 	protected void createEarAndStandaloneComposite(Composite parent) {
 
-		if (model.getBooleanProperty(J2EEComponentCreationDataModel.UI_SHOW_EAR_SECTION)) {
+		if (model.getBooleanProperty(UI_SHOW_EAR_SECTION)) {
 
 			Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
 			GridData gd = new GridData(GridData.FILL_HORIZONTAL);
@@ -79,7 +81,7 @@
 			gd = new GridData(GridData.FILL_HORIZONTAL);
 			gd.horizontalSpan = 2;
 			addToEAR.setLayoutData(gd);
-			synchHelper.synchCheckbox(addToEAR, J2EEComponentCreationDataModel.ADD_TO_EAR, null);
+			synchHelper.synchCheckbox(addToEAR, ADD_TO_EAR, null);
 			addToEAR.addSelectionListener(new SelectionListener() {
 				public void widgetSelected(SelectionEvent e) {
 					handleAddToEarSelection();
@@ -111,7 +113,7 @@
 			});
 
 			Control[] deps = new Control[]{earLabel, newEAR};
-			synchHelper.synchCombo(earCombo, J2EEComponentCreationDataModel.EAR_MODULE_NAME, deps);
+			synchHelper.synchCombo(earCombo, EAR_COMPONENT_NAME, deps);
 		}
 	}
 
@@ -129,14 +131,14 @@
 	 *  
 	 */
 	protected void handleNewEarSelected() {
-		J2EEComponentCreationDataModel moduleModel = model;
-		EARComponentCreationDataModel earModel = new EARComponentCreationDataModel();
-		earModel.setIntProperty(J2EEComponentCreationDataModel.J2EE_VERSION, moduleModel.getJ2EEVersion());
-		earModel.setProperty(ComponentCreationDataModel.COMPONENT_NAME, moduleModel.getProperty(J2EEComponentCreationDataModel.EAR_MODULE_NAME));
+		IDataModel moduleModel = model;
+        IDataModel earModel = DataModelFactory.createDataModel(new EarComponentCreationDataModelProvider());
+		earModel.setIntProperty(COMPONENT_VERSION, moduleModel.getIntProperty(IJ2EEComponentCreationDataModelProperties.COMPONENT_VERSION));
+		earModel.setProperty(COMPONENT_NAME, moduleModel.getProperty(IJ2EEComponentCreationDataModelProperties.EAR_COMPONENT_NAME));
 		EARComponentCreationWizard earWizard = new EARComponentCreationWizard(earModel);
 		WizardDialog dialog = new WizardDialog(parentComposite.getShell(), earWizard);
 		if (Window.OK == dialog.open()) {
-			moduleModel.setProperty(J2EEComponentCreationDataModel.EAR_MODULE_NAME, earModel.getProperty(ComponentCreationDataModel.COMPONENT_NAME));
+			moduleModel.setProperty(EAR_COMPONENT_NAME, earModel.getProperty(COMPONENT_NAME));
 		}
 	}
 
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerTargetGroup.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerTargetGroup.java
index 11cdb83..4745b42 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerTargetGroup.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/ServerTargetGroup.java
@@ -17,8 +17,7 @@
 package org.eclipse.jst.j2ee.internal.wizard;
 
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.servertarget.J2EEProjectServerTargetDataModel;
-import org.eclipse.jst.j2ee.internal.servertarget.ServerTargetDataModel;
+import org.eclipse.jst.j2ee.project.datamodel.properties.IJ2EEProjectServerTargetDataModelProperties;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -28,7 +27,8 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPDataModelSynchHelper;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
 
 
 /**
@@ -37,9 +37,9 @@
  * To change the template for this generated type comment go to Window - Preferences - Java - Code
  * Generation - Code and Comments
  */
-public class ServerTargetGroup {
-	private J2EEProjectServerTargetDataModel model;
-	private WTPDataModelSynchHelper synchHelper;
+public class ServerTargetGroup implements IJ2EEProjectServerTargetDataModelProperties{
+	private IDataModel model;
+	private DataModelSynchHelper synchHelper;
 	private Combo targetServerCombo;
 	private Button newTargetServerButton;
 	public Composite parentUI;
@@ -56,10 +56,10 @@
 	 * @param parent
 	 * @param style
 	 */
-	public ServerTargetGroup(Composite parent, int style, J2EEProjectServerTargetDataModel model) {
+	public ServerTargetGroup(Composite parent, int style, IDataModel model, DataModelSynchHelper helper) {
 		this.model = model;
 		this.parentUI = parent;
-		synchHelper = new WTPDataModelSynchHelper(model);
+		synchHelper = helper;
 		buildComposites(parent);
 	}
 
@@ -74,7 +74,6 @@
 	 * @param parent
 	 */
 	private void createServerTargetGroup(Composite parent) {
-
 		Label serverTargetLabel = new Label(parent, SWT.NONE);
 		serverTargetLabel.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.TARGET_SERVER_LBL));
 		GridData data = new GridData();
@@ -95,8 +94,7 @@
 		newTargetServerButton.setEnabled(true);
 
 		Control[] deps = new Control[]{serverTargetLabel, newTargetServerButton};
-		synchHelper.synchCombo(targetServerCombo, ServerTargetDataModel.RUNTIME_TARGET_ID, deps);
-
+		synchHelper.synchCombo(targetServerCombo, RUNTIME_TARGET_ID, deps);
 	}
 
 	/**
@@ -108,7 +106,6 @@
 
 	public void dispose() {
 		model.removeListener(synchHelper);
-		synchHelper.dispose();
 		model = null;
 	}
 
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentCreationDataModelProperties.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentCreationDataModelProperties.java
index ed73e57..1485a06 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentCreationDataModelProperties.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/datamodel/properties/IJ2EEComponentCreationDataModelProperties.java
@@ -77,5 +77,5 @@
     /**
      * type ClassPathSelection
      */
-    public static final String NESTED_CLASSPATH_SELECTION_DM = "IComponentCreationDataModelProperties.NESTED_CLASSPATH_SELECTION_DM"; //$NON-NLS-1$
+    public static final String CLASSPATH_SELECTION = "IComponentCreationDataModelProperties.CLASSPATH_SELECTION"; //$NON-NLS-1$
 }
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEComponentCreationDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEComponentCreationDataModelProvider.java
index 6353580..3014d9b 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEComponentCreationDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEComponentCreationDataModelProvider.java
@@ -30,16 +30,17 @@
 
 	public void init() {
 		super.init();
-        propertySet(COMPONENT_VERSION, getDefaultProperty(COMPONENT_VERSION));
+        model.setProperty(COMPONENT_VERSION, getDefaultProperty(COMPONENT_VERSION));
         model.setProperty(NESTED_ADD_COMPONENT_TO_EAR_DM, new AddComponentToEnterpriseApplicationDataModel());
-        model.setProperty(NESTED_CLASSPATH_SELECTION_DM, new UpdateManifestDataModel());
-        model.setBooleanProperty(USE_ANNOTATIONS, false);
+        propertySet(CLASSPATH_SELECTION, null);
+        model.setProperty(NESTED_UPDATE_MANIFEST_DM, new UpdateManifestDataModel());
+        model.setProperty(USE_ANNOTATIONS, Boolean.FALSE);
 	}
 
  	public String[] getPropertyNames() {
 		String[] props = new String[]{EAR_COMPONENT_NAME, EAR_COMPONENT_DEPLOY_NAME, ADD_TO_EAR, 
 				UI_SHOW_EAR_SECTION, DD_FOLDER, COMPONENT_VERSION, VALID_COMPONENT_VERSIONS_FOR_PROJECT_RUNTIME,
-                NESTED_ADD_COMPONENT_TO_EAR_DM, NESTED_CLASSPATH_SELECTION_DM, NESTED_EAR_COMPONENT_CREATION_DM,
+                NESTED_ADD_COMPONENT_TO_EAR_DM, CLASSPATH_SELECTION, NESTED_EAR_COMPONENT_CREATION_DM,
                 NESTED_UPDATE_MANIFEST_DM, EAR_COMPONENT_HANDLE, USE_ANNOTATIONS };
 		return combineProperties(super.getPropertyNames(), props);
 	}
@@ -69,11 +70,13 @@
                     String[] validModuleVersions = getServerVersions(getComponentID(), projProperties.getRuntimeTarget().getRuntimeType());
                     model.setProperty(VALID_COMPONENT_VERSIONS_FOR_PROJECT_RUNTIME, validModuleVersions);
                 }
-            }
+            }         
         }
         else if (propertyName.equals(EAR_COMPONENT_NAME)) {
 			model.setProperty(EAR_COMPONENT_HANDLE, computeEARHandle((String)propertyValue));
             model.setProperty(EAR_COMPONENT_DEPLOY_NAME, propertyValue);
+            IDataModel earDM = (IDataModel)model.getProperty(NESTED_EAR_COMPONENT_CREATION_DM);
+            earDM.setProperty(PROJECT_NAME, propertyValue);
 		} else if(propertyName.equals(COMPONENT_NAME)){
 			if (!model.isPropertySet(EAR_COMPONENT_NAME)) {
 				model.notifyPropertyChange(EAR_COMPONENT_NAME, IDataModel.VALID_VALUES_CHG);
@@ -116,10 +119,8 @@
 	 */
 	protected void setEARComponentIfJ2EEModuleCreationOnly(WorkbenchComponent workbenchComp, Object propertyValue) {
         getAddComponentToEARDataModel().setProperty(AddComponentToEnterpriseApplicationDataModel.ARCHIVE_MODULE, workbenchComp);
-        getAddComponentToEARDataModel().setProperty(AddComponentToEnterpriseApplicationDataModel.PROJECT_NAME,
-                model.getStringProperty(PROJECT_NAME));
-        getAddComponentToEARDataModel().setProperty(AddComponentToEnterpriseApplicationDataModel.EAR_MODULE_NAME,
-                model.getStringProperty(EAR_COMPONENT_NAME));
+        getAddComponentToEARDataModel().setProperty(AddComponentToEnterpriseApplicationDataModel.PROJECT_NAME, model.getStringProperty(PROJECT_NAME));
+        getAddComponentToEARDataModel().setProperty(AddComponentToEnterpriseApplicationDataModel.EAR_MODULE_NAME,model.getStringProperty(EAR_COMPONENT_NAME));
 		if (!model.isPropertySet(EAR_COMPONENT_NAME)) {
 			String earModuleName = model.getStringProperty(EAR_COMPONENT_NAME);
             model.notifyPropertyChange(EAR_COMPONENT_NAME, IDataModel.VALID_VALUES_CHG);
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/earcreation/DefaultJ2EEComponentCreationDataModel.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/earcreation/DefaultJ2EEComponentCreationDataModel.java
index 84e62a9..aebb9d8 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/earcreation/DefaultJ2EEComponentCreationDataModel.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/earcreation/DefaultJ2EEComponentCreationDataModel.java
@@ -9,6 +9,7 @@
 import org.eclipse.jst.j2ee.application.internal.operations.DefaultJ2EEComponentCreationOperation;
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.applicationclient.internal.creation.AppClientComponentCreationDataModel;
+import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.j2ee.internal.moduleextension.EarModuleManager;
 import org.eclipse.jst.j2ee.internal.moduleextension.EjbModuleExtension;
@@ -379,8 +380,8 @@
 		J2EEComponentCreationDataModel modModule = getNestedModel(flag);
 		if (modModule != null) {
 			String compName = ensureUniqueProjectName(name);
-            modModule.setProperty(J2EEComponentCreationDataModel.PROJECT_NAME, getStringProperty(PROJECT_NAME));
-			modModule.setProperty(J2EEComponentCreationDataModel.COMPONENT_NAME, compName);
+            modModule.setProperty(IJ2EEComponentCreationDataModelProperties.PROJECT_NAME, getStringProperty(PROJECT_NAME));
+			modModule.setProperty(IJ2EEComponentCreationDataModelProperties.COMPONENT_NAME, compName);
 		}
 	}
 
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/servertarget/J2EEProjectServerTargetDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/servertarget/J2EEProjectServerTargetDataModelProvider.java
index 0f3b905..055e89a 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/servertarget/J2EEProjectServerTargetDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/internal/servertarget/J2EEProjectServerTargetDataModelProvider.java
@@ -23,6 +23,11 @@
 
 	private static final String DEFAULT_TARGET_ID = "org.eclipse.jst.server.core.runtimeType"; //$NON-NLS-1$
 
+    public void init() {
+        model.setProperty(RUNTIME_TARGET_ID, getDefaultServerTargetID());
+        super.init();
+    }
+    
 	public IDataModelOperation getDefaultOperation() {
 		return new J2EEProjectServerTargetOp(model);
 	}
@@ -210,25 +215,38 @@
 		}
 		return null;
 	}
-
+    /**
+     * @return
+     */
+    private List getValidServerTargets() {
+        List validServerTargets = null;
+        //TODO: api is needed from the server target helper to get all server targets
+        //validServerTargets = ServerTargetHelper.getServerTargets(IServerTargetConstants.EAR_TYPE, IServerTargetConstants.J2EE_14);
+        validServerTargets = ServerTargetHelper.getServerTargets("", "");  //$NON-NLS-1$  //$NON-NLS-2$
+        if (validServerTargets != null && validServerTargets.isEmpty())
+            validServerTargets = null;
+        if (validServerTargets == null)
+            return Collections.EMPTY_LIST;
+        return validServerTargets;
+    }
 	/**
 	 * @return
 	 */
-	private List getValidServerTargets() {
-		List validServerTargets = null;
-		String type = computeTypeId();
-		if (type != null) {
-			String version = computeVersionId();
-			if (version != null) {
-				validServerTargets = ServerTargetHelper.getServerTargets(type, version);
-				if (validServerTargets != null && validServerTargets.isEmpty())
-					validServerTargets = null;
-			}
-		}
-		if (validServerTargets == null)
-			return Collections.EMPTY_LIST;
-		return validServerTargets;
-	}
+//	private List getValidServerTargets() {
+//		List validServerTargets = null;
+//		String type = computeTypeId();
+//		if (type != null) {
+//			String version = computeVersionId();
+//			if (version != null) {
+//				validServerTargets = ServerTargetHelper.getServerTargets(type, version);
+//				if (validServerTargets != null && validServerTargets.isEmpty())
+//					validServerTargets = null;
+//			}
+//		}
+//		if (validServerTargets == null)
+//			return Collections.EMPTY_LIST;
+//		return validServerTargets;
+//	}
 
 	/*
 	 * (non-Javadoc)
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java
index 6f485ca..861d456 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/actions/ConvertToWebModuleTypeAction.java
@@ -8,23 +8,16 @@
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jem.util.logger.proxy.Logger;
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.actions.AbstractOpenWizardWorkbenchAction;
 import org.eclipse.jst.j2ee.internal.project.IWebNatureConstants;
-import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.web.operations.ConvertWebProjectDataModel;
-import org.eclipse.jst.servlet.ui.internal.wizard.ConvertToWebComponentTypeWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.wst.common.internal.emfworkbench.operation.EditModelOperationDataModel;
 import org.eclipse.wst.web.internal.operation.IBaseWebNature;
-import org.eclipse.wst.web.internal.operation.StaticWebNatureRuntime;
 
 public class ConvertToWebModuleTypeAction extends AbstractOpenWizardWorkbenchAction {
 
@@ -44,7 +37,8 @@
 	}
 
 	protected Wizard createWizard() {
-		ConvertToWebComponentTypeWizard wizard = new ConvertToWebComponentTypeWizard(new ConvertWebProjectDataModel());
+        //TODO: reimplement
+/*		ConvertToWebComponentTypeWizard wizard = new ConvertToWebComponentTypeWizard(new ConvertWebProjectDataModel());
 		WebComponentCreationDataModel model = (WebComponentCreationDataModel) wizard.getModel();
 		model.setProperty(EditModelOperationDataModel.PROJECT_NAME, project.getName());
 		model.setBooleanProperty(J2EEComponentCreationDataModel.ADD_TO_EAR, true);
@@ -63,7 +57,8 @@
 
 		// wizard.setWindowTitle("Convert to Dynamic Web Project");
 
-		return wizard;
+		return wizard;*/
+        return null;
 	}
 
 	/**
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/ConvertToWebComponentTypeWizard.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/ConvertToWebComponentTypeWizard.java
index 6991046..74d5dbf 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/ConvertToWebComponentTypeWizard.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/ConvertToWebComponentTypeWizard.java
@@ -10,16 +10,11 @@
  *******************************************************************************/
 package org.eclipse.jst.servlet.ui.internal.wizard;
 
-import org.eclipse.core.resources.ICommand;
-import org.eclipse.core.resources.IProjectDescription;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationOperation;
 import org.eclipse.jst.j2ee.internal.web.operations.ConvertWebProjectDataModel;
 import org.eclipse.jst.servlet.ui.internal.plugin.WEBUIMessages;
 import org.eclipse.ui.IWorkbench;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
 
 /*
@@ -31,7 +26,7 @@
 public class ConvertToWebComponentTypeWizard extends WebComponentCreationWizard {
 	private static final String ConvertToWebModuleTypeWizard = "org.eclipse.jst.servlet.ui.internal.wizard.convertWebProjectTypeWizard"; //$NON-NLS-1$
 
-	public ConvertToWebComponentTypeWizard(ConvertWebProjectDataModel dataModel) {
+	public ConvertToWebComponentTypeWizard(IDataModel dataModel) {
 		// TODO use flexible project
 		//super(dataModel);
 	}
@@ -47,17 +42,6 @@
 		// TODO Auto-generated method stub
 		return new ConvertWebProjectDataModel();
 	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jem.util.ui.wizard.WTPWizard#createOperation()
-	 */
-	protected WTPOperation createBaseOperation() {
-		// TODO Auto-generated method stub
-		return new WebComponentCreationOperation((WebComponentCreationDataModel) model);
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -71,15 +55,6 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see com.ibm.wtp.web.ui.wizard.WEBProjectWizard#getWizardID()
-	 */
-	public String getWizardID() {
-		return ConvertToWebModuleTypeWizard;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
 	 * @see com.ibm.wtp.web.ui.wizard.WEBProjectWizard#init(org.eclipse.ui.IWorkbench,
 	 *      org.eclipse.jface.viewers.IStructuredSelection)
 	 */
@@ -93,15 +68,16 @@
 	 * @see org.eclipse.jem.util.ui.wizard.WTPWizard#prePerformFinish()
 	 */
 	protected boolean prePerformFinish() {
-		IProjectDescription desc;
+/*		IProjectDescription desc;
 		try {
-			desc = ((WebComponentCreationDataModel) model).getTargetProject().getDescription();
-			desc.setBuildSpec(new ICommand[0]);
+			//desc = ((WebComponentCreationDataModel) model).getTargetProject().getDescription();
+			//desc.setBuildSpec(new ICommand[0]);
 		} catch (CoreException e) {
 			// TODO Auto-generated catch block
 			e.printStackTrace();
 		}
 
-		return super.prePerformFinish();
+		return super.prePerformFinish();*/
+        return true;
 	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARImportPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARImportPage.java
index da51461..b11665f 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARImportPage.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WARImportPage.java
@@ -20,13 +20,10 @@
 import org.eclipse.jst.j2ee.application.internal.operations.J2EEModuleImportDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
-import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.web.archive.operations.WebModuleImportDataModel;
-import org.eclipse.jst.j2ee.internal.wizard.AnnotationsStandaloneGroup;
 import org.eclipse.jst.j2ee.internal.wizard.J2EEModuleImportPage;
 import org.eclipse.jst.servlet.ui.internal.plugin.WEBUIMessages;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.common.frameworks.internal.ui.WTPWizard;
 
 
 /**
@@ -60,10 +57,6 @@
 		return getWebDataModel().getJ2eeArtifactCreationDataModel();
 	}
 
-	protected WTPWizard getNewProjectWizard(WebComponentCreationDataModel aModel) {
-		return new WebComponentCreationWizard(aModel);
-	}
-
 	private WebModuleImportDataModel getWebDataModel() {
 		return (WebModuleImportDataModel) model;
 	}
@@ -78,7 +71,8 @@
 	 * @see org.eclipse.jst.j2ee.internal.internal.internal.ui.wizard.J2EEModuleImportPage#createAnnotationsStandaloneGroup(org.eclipse.swt.widgets.Composite)
 	 */
 	protected void createAnnotationsStandaloneGroup(Composite composite) {
-		new AnnotationsStandaloneGroup(composite, getWebDataModel(), false);
+        //TODO: implement with new import wizards
+		//new AnnotationsStandaloneGroup(composite, getWebDataModel(), false);
 	}
 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizard.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizard.java
index 90bb84c..c893590 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizard.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizard.java
@@ -15,11 +15,12 @@
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
 import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationOperation;
+import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationDataModelProvider;
 import org.eclipse.jst.j2ee.internal.wizard.J2EEComponentCreationWizard;
 import org.eclipse.jst.servlet.ui.internal.plugin.WEBUIMessages;
 import org.eclipse.ui.INewWizard;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
 import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
 
 /**
@@ -58,7 +59,7 @@
 	 * </p>
 	 * @param model The model parameter is used to pre-populate wizard controls and interface with the operation
 	 */
-	public WebComponentCreationWizard(WebComponentCreationDataModel model) {
+	public WebComponentCreationWizard(IDataModel model) {
 		super(model);
 	}
 
@@ -77,20 +78,6 @@
 		aModel.setBooleanProperty(J2EEComponentCreationDataModel.ADD_TO_EAR, false);
 		return aModel;
 	}
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * <p>
-	 * Overridden to return an {@link WebProjectCreationOperation}. 
-	 * </p>
-	 * 
-	 * @return Returns the specific operation for the creation of J2EE Web modules
-	 */
-	protected WTPOperation createBaseOperation() {
-		return new WebComponentCreationOperation(getSpecificDataModel());
-	}
-
 	/** 
 	 * {@inheritDoc}   
 	 * 
@@ -98,7 +85,6 @@
 	 * Sets up the dialog window title and default page image. 
 	 * </p> 
 	 * 
-	 * @see J2EEArtifactCreationWizard#doInit()
 	 */
 	protected void doInit() {
 		setWindowTitle(WEBUIMessages.getResourceString(WEBUIMessages.WEB_MODULE_WIZ_TITLE));
@@ -113,23 +99,13 @@
 	 * </p>
 	 */
 	protected void doAddPages() {
-		WebComponentCreationWizardPage page = new WebComponentCreationWizardPage(getSpecificDataModel(), MAIN_PG);
+		WebComponentCreationWizardPage page = new WebComponentCreationWizardPage(getDataModel(), MAIN_PG);
 		page.setInfopopID("org.eclipse.jst.j2ee.ui.webw1000"); //$NON-NLS-1$
 		addPage(page);
 		super.doAddPages();
-	} 
-	
-	/**
-	 * {@inheritDoc}
-	 * 
-	 * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.extensions.ExtendableWizard#getWizardID()
-	 */
-	public String getWizardID() {
-		return WIZARD_ID;
-	} 
-	
-	private WebComponentCreationDataModel getSpecificDataModel() {
-		return (WebComponentCreationDataModel) getModel();
 	}
 
+    protected IDataModelProvider getDefaultProvider() {
+        return new WebComponentCreationDataModelProvider();
+    } 
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizardPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizardPage.java
index 6e3dee4..734fea9 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizardPage.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/WebComponentCreationWizardPage.java
@@ -11,13 +11,11 @@
 
 package org.eclipse.jst.servlet.ui.internal.wizard;
 
-import org.eclipse.jst.j2ee.application.internal.operations.AddWebModuleToEARDataModel;
-import org.eclipse.jst.j2ee.application.internal.operations.J2EEComponentCreationDataModel;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPluginIcons;
-import org.eclipse.jst.j2ee.internal.web.archive.operations.WebComponentCreationDataModel;
-import org.eclipse.jst.j2ee.internal.wizard.AnnotationsStandaloneGroup;
+import org.eclipse.jst.j2ee.internal.wizard.DataModelAnnotationsStandaloneGroup;
 import org.eclipse.jst.j2ee.internal.wizard.J2EEComponentCreationWizardPage;
+import org.eclipse.jst.j2ee.web.datamodel.properties.IWebComponentCreationDataModelProperties;
 import org.eclipse.jst.servlet.ui.internal.plugin.WEBUIMessages;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
@@ -25,25 +23,24 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.componentcore.internal.operation.ComponentCreationDataModel;
-import org.eclipse.wst.common.frameworks.internal.operations.WTPOperationDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
 /**
  * 
  */
-public class WebComponentCreationWizardPage extends J2EEComponentCreationWizardPage {
+public class WebComponentCreationWizardPage extends J2EEComponentCreationWizardPage implements IWebComponentCreationDataModelProperties{
 
 	public Text contextRootNameField = null;
 	public Label contextRootLabel = null;
 
 	private static final int SIZING_TEXT_FIELD_WIDTH = 250;
-	private AnnotationsStandaloneGroup annotationsGroup;
+	private DataModelAnnotationsStandaloneGroup annotationsGroup;
 	
 	/**
 	 * @param model
 	 * @param pageName
 	 */
-	public WebComponentCreationWizardPage(WebComponentCreationDataModel  model, String pageName) {
+	public WebComponentCreationWizardPage(IDataModel model, String pageName) {
 		super(model, pageName);
 		setTitle(WEBUIMessages.getResourceString(WEBUIMessages.WEB_PROJECT_MAIN_PG_TITLE));
 		setDescription(WEBUIMessages.getResourceString(WEBUIMessages.WEB_PROJECT_MAIN_PG_DESC));
@@ -67,22 +64,18 @@
 		data = new GridData(GridData.FILL_HORIZONTAL);
 		data.widthHint = SIZING_TEXT_FIELD_WIDTH;
 		contextRootNameField.setLayoutData(data);
-		synchHelper.synchText(contextRootNameField, WebComponentCreationDataModel.CONTEXT_ROOT, new Control[]{contextRootLabel});
+		synchHelper.synchText(contextRootNameField, CONTEXT_ROOT, new Control[]{contextRootLabel});
 		
 		createAnnotationsGroup(advanced);
 	}
 
 	private void createAnnotationsGroup(Composite parent) {
-		annotationsGroup = new AnnotationsStandaloneGroup(parent, getJ2EEModuleCreationDataModel(), false);
-	}
-	
-	WebComponentCreationDataModel getWebProjectCreationDataModel() {
-		return (WebComponentCreationDataModel) model;
+		annotationsGroup = new DataModelAnnotationsStandaloneGroup(parent, getDataModel(), false, synchHelper);
 	}
 
 	//TODO: utility to handle additions
 	protected String[] getValidationPropertyNames() {
-		return new String[]{ComponentCreationDataModel.PROJECT_NAME, ComponentCreationDataModel.COMPONENT_NAME, ComponentCreationDataModel.COMPONENT_VERSION, WTPOperationDataModel.NESTED_MODEL_VALIDATION_HOOK, J2EEComponentCreationDataModel.ADD_TO_EAR, AddWebModuleToEARDataModel.CONTEXT_ROOT};
+		return new String[]{PROJECT_NAME, COMPONENT_NAME, COMPONENT_VERSION, ADD_TO_EAR, CONTEXT_ROOT};
 	}
 
 	public void dispose() {