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;
 	}	
