removed saveReg call from stop()
proper validation to handle new project wizard finish when empty reg
create a defaultImpl on load, if not set
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/JSFCorePlugin.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/JSFCorePlugin.java
index 40153dc..d2534c4 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/JSFCorePlugin.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/JSFCorePlugin.java
@@ -109,7 +109,6 @@
 	 * @throws Exception 
 	 */
 	public void stop(BundleContext context) throws Exception {
-		saveJSFLibraryRegistry();
 		super.stop(context);
 		plugin = null;
 	}
@@ -163,7 +162,13 @@
 			}
 			//add adapter to maintain default implementation
 			if (jsfLibraryRegistry != null) {
+				//check that a default impl is set.   if not pick first one if available.
+				JSFLibrary defLib = jsfLibraryRegistry.getDefaultImplementation();
+				if (defLib == null && jsfLibraryRegistry.getImplJSFLibraries().size() > 0){
+					jsfLibraryRegistry.setDefaultImplementation((JSFLibrary)jsfLibraryRegistry.getImplJSFLibraries().get(0));
+				}
 				jsfLibraryRegistry.eAdapters().add(MaintainDefaultImplementationAdapter.getInstance());
+
 			}
 		} catch(MalformedURLException mue) {
 			log(IStatus.ERROR, Messages.JSFLibraryRegistry_ErrorCreatingURL, mue);
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
index e51105c..ae7f40e 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/jsflibraryconfig/JSFLibraryConfigDialogSettingData.java
@@ -31,7 +31,7 @@
 
 	final private JSFLibraryRegistryUtil jsfLibReg;
 	final private boolean dftImplLibDeployFlag;
-	final private String[] savedCompLibs;
+	private String[] savedCompLibs;
 	private JSFLibraryReference selJSFLibImpl;	// lazy initialized	
 	private List selJSFLibComp;							// lazy initialized
 	
@@ -120,19 +120,32 @@
 	 * Only need to verify component library availability from sticky settings.
 	 */
  	private void verifySavedLibAvailability() {
+ 		List validLibs = new ArrayList();
 		if (savedCompLibs != null && savedCompLibs.length > 0) {
 			String item = null;
 			String[] attributes;
-
+			boolean invalidRefs = false;
 			for (int i = 0; i < savedCompLibs.length; i++) {
 				item = savedCompLibs[i];
 				attributes = item.split(SEPARATOR);
 													
-				if (jsfLibReg.getJSFLibraryReferencebyID(attributes[0]) == null) {
-					JSFCorePlugin.log(IStatus.INFO, Messages.JSFLibCfgDialogSettingData_Sticky_Component_Lib_Not_Exist);
+				if (jsfLibReg.getJSFLibraryReferencebyID(attributes[0]) != null) {
+					validLibs.add(item);
+				} else {
+					invalidRefs = true;
+//					JSFCorePlugin.log(IStatus.INFO, Messages.JSFLibCfgDialogSettingData_Sticky_Component_Lib_Not_Exist);
 				}
 			}  				
+			if (invalidRefs){
+				String [] validCompLibs = (String[])validLibs.toArray(new String[validLibs.size()]);
+				if (validCompLibs.length > 0)
+					System.arraycopy(validCompLibs, 0, savedCompLibs, 0, validCompLibs.length);
+				else
+					savedCompLibs = new String[]{};
+			}
 		}	
+		
+
  	}
 	
 }
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
index 56f8d1f..edd520e 100644
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
+++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/project/facet/JSFFacetInstallDataModelProvider.java
@@ -99,7 +99,7 @@
 	}
 	public IStatus validate(String name) {
 		errorMessage = null;
-		if (name.equals(IMPLEMENTATION_LIBRARIES) && getBooleanProperty(DEPLOY_IMPLEMENTATION)) {
+		if (name.equals(IMPLEMENTATION)) {//&& getBooleanProperty(DEPLOY_IMPLEMENTATION)
 			List libs = JSFLibraryRegistryUtil.getInstance().getJSFLibraryRegistry().getJSFLibrariesByName(getStringPropertyWithDefaultStripped(IMPLEMENTATION_LIBRARIES));
 			JSFLibrary lib = ! libs.isEmpty() ? (JSFLibrary)libs.get(0) : null; 
 			IStatus status = validateImpl(lib);
@@ -331,8 +331,10 @@
 		List list = new ArrayList();
 		if (JSFCorePlugin.getDefault().getJSFLibraryRegistry() != null) {
 			JSFLibrary jsfLib = JSFCorePlugin.getDefault().getJSFLibraryRegistry().getDefaultImplementation();
-			JSFLibraryReference prjJSFLib = new JSFLibraryReference(jsfLib, true, true);
-			list.add(prjJSFLib);			
+			if (jsfLib != null){
+				JSFLibraryReference prjJSFLib = new JSFLibraryReference(jsfLib, true, true);
+				list.add(prjJSFLib);
+			}
 		}
 		return list;
 	}