diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
index 2b2c407..ea63ac1 100644
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
@@ -52,7 +52,6 @@
 public class GenericServerRuntimeWizardFragment extends ServerDefinitionTypeAwareWizardFragment {
 	
 	private GenericServerRuntime fRuntimeDelegate;
-    
 	private GenericServerCompositeDecorator[] fDecorators;
 	
 	/**
@@ -75,15 +74,15 @@
 	public void createContent(Composite parent, IWizardHandle handle) {
         Map properties= null;
 		ServerRuntime definition=null;
-        if(getRuntimeDelegate()!=null)
-		{
-			properties = getRuntimeDelegate().getServerInstanceProperties();
+        if(getRuntimeDelegate()!=null){
+ 			properties = getRuntimeDelegate().getServerInstanceProperties();
 			definition = getServerTypeDefinition(getServerDefinitionId(),properties);
 		}
-		fDecorators =new GenericServerCompositeDecorator[2]; 
+		fDecorators= new GenericServerCompositeDecorator[2]; 
 		fDecorators[0]= new JRESelectDecorator(getRuntimeDelegate());
 		fDecorators[1]= new ServerTypeDefinitionRuntimeDecorator(definition,properties,getWizard(),getRuntimeDelegate());
 		GenericServerComposite composite = new GenericServerComposite(parent,fDecorators);
+		
 	}
 
 	
@@ -104,7 +103,8 @@
 	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#enter()
 	 */
 	public void enter() {
-		getRuntimeDelegate().getRuntimeWorkingCopy().setName(createName());
+	    if(getRuntimeDelegate()!=null)
+			getRuntimeDelegate().getRuntimeWorkingCopy().setName(createName());
 		for (int i = 0; i < fDecorators.length; i++) {
 			if(fDecorators[i].validate())
 				return;
@@ -150,7 +150,9 @@
 		    IRuntimeWorkingCopy wc = (IRuntimeWorkingCopy)getTaskModel().getObject(TaskModel.TASK_RUNTIME);
 		    if(wc==null)
 		        return null;
-		    fRuntimeDelegate = (GenericServerRuntime)wc.getAdapter(RuntimeDelegate.class);
+		    fRuntimeDelegate = (GenericServerRuntime)wc.getAdapter(GenericServerRuntime.class);
+		    if(fRuntimeDelegate==null)
+		    	fRuntimeDelegate= (GenericServerRuntime)wc.loadAdapter(GenericServerRuntime.class,new NullProgressMonitor());
 		}
 		return fRuntimeDelegate;
 	}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
index 1dd060d..c5a8bd5 100644
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
+++ b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
@@ -32,11 +32,12 @@
 
 import java.util.Map;
 
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jst.server.generic.core.internal.GenericServer;
 import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
 import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
+import org.eclipse.wst.server.core.IRuntime;
 import org.eclipse.wst.server.core.IServerWorkingCopy;
 import org.eclipse.wst.server.core.TaskModel;
 import org.eclipse.wst.server.ui.wizard.IWizardHandle;
@@ -79,8 +80,10 @@
     private ServerRuntime getServerTypeDefinitionFor(IServerWorkingCopy server) {        
         GenericServerRuntime runtime = (GenericServerRuntime)server.getRuntime().getAdapter(GenericServerRuntime.class);
         if(runtime==null){
-            IRuntimeWorkingCopy wc = (IRuntimeWorkingCopy)getTaskModel().getObject(TaskModel.TASK_RUNTIME);
+            IRuntime wc = (IRuntime)getTaskModel().getObject(TaskModel.TASK_RUNTIME);
             runtime= (GenericServerRuntime)wc.getAdapter(GenericServerRuntime.class);
+            if(runtime==null)
+            	runtime= (GenericServerRuntime)wc.loadAdapter(GenericServerRuntime.class,new NullProgressMonitor());
         }        
         String id = runtime.getRuntime().getRuntimeType().getId();
         if(id==null){   
