diff --git a/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/internal/ejb/project/EJBNatureRuntime.java b/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/internal/ejb/project/EJBNatureRuntime.java
index 9e88b94..2b874f6 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/internal/ejb/project/EJBNatureRuntime.java
+++ b/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/internal/ejb/project/EJBNatureRuntime.java
@@ -45,6 +45,7 @@
 import org.eclipse.jst.j2ee.internal.project.J2EEModuleNature;
 import org.eclipse.jst.j2ee.internal.project.J2EEModuleWorkbenchURIConverterImpl;
 import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.jst.j2ee.internal.webservices.WebServiceEditModel;
 import org.eclipse.wst.common.internal.emfworkbench.integration.ComposedEditModel;
 import org.eclipse.wst.common.internal.emfworkbench.integration.EditModel;
 
@@ -460,20 +461,16 @@
 	 * increments the use count of this model. When you are done accessing the model, call
 	 * releaseAccess()!
 	 */
-	// TODO WebServices for M3
-//	public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
-//		return (WebServiceEditModel) getEditModelForRead(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
-//	}
+	public WebServiceEditModel getWebServiceEditModelForRead(Object accessorKey, Map params) {
+		return (WebServiceEditModel) getEditModelForRead(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
+	}
 
 	/**
 	 * Return an editing model used to edit web service resources. Important!!! Calling this method
 	 * increments the use count of this model. When you are done accessing the model, call
 	 * releaseAccess()!
 	 */
-	// TODO WebServices for M3
-//	public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
-//		return (WebServiceEditModel) getEditModelForWrite(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
-//	}
-
-
+	public WebServiceEditModel getWebServiceEditModelForWrite(Object accessorKey, Map params) {
+		return (WebServiceEditModel) getEditModelForWrite(WEB_SERVICE_EDIT_MODEL_ID, accessorKey, params);
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.j2ee.ejb/ejbedit/org/eclipse/jst/j2ee/internal/ejb/provider/EnterpriseBeanItemProvider.java b/plugins/org.eclipse.jst.j2ee.ejb/ejbedit/org/eclipse/jst/j2ee/internal/ejb/provider/EnterpriseBeanItemProvider.java
index 59e8985..b0d9811 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/ejbedit/org/eclipse/jst/j2ee/internal/ejb/provider/EnterpriseBeanItemProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.ejb/ejbedit/org/eclipse/jst/j2ee/internal/ejb/provider/EnterpriseBeanItemProvider.java
@@ -30,7 +30,9 @@
 import org.eclipse.jst.j2ee.common.internal.provider.JNDIEnvRefsGroupItemProvider;
 import org.eclipse.jst.j2ee.ejb.EjbPackage;
 import org.eclipse.jst.j2ee.ejb.EnterpriseBean;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
+import org.eclipse.jst.j2ee.internal.webservices.WebServicesManager;
 
 import com.ibm.wtp.common.logger.proxy.Logger;
 
@@ -259,9 +261,8 @@
 		if (bean == null || bean.getEjbJar() == null)
 			return myChildren;
 		try {
-			// TODO WebServices for M3
-//			if (bean.getEjbJar().getJ2EEVersionID() <= J2EEVersionConstants.J2EE_1_3_ID)
-//				myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(bean));
+			if (bean.getEjbJar().getJ2EEVersionID() <= J2EEVersionConstants.J2EE_1_3_ID)
+				myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(bean));
 		} catch (RuntimeException re) {
 			Logger.getLogger().logError(re);
 		}
@@ -277,9 +278,8 @@
 		Collection myChildren = super.getChildren(object);
 		EnterpriseBean bean = (EnterpriseBean) object;
 		try {
-			// TODO WebServices for M3
-//			if (bean.getEjbJar().getJ2EEVersionID() <= J2EEVersionConstants.J2EE_1_3_ID)
-//				myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(bean));
+			if (bean.getEjbJar().getJ2EEVersionID() <= J2EEVersionConstants.J2EE_1_3_ID)
+				myChildren.addAll(WebServicesManager.getInstance().get13ServiceRefs(bean));
 		} catch (RuntimeException re) {
 			Logger.getLogger().logError(re);
 		}
