This commit was manufactured by cvs2svn to create tag 'R1_0_2'.
diff --git a/bundles/org.eclipse.jst.jsp.core/.options b/bundles/org.eclipse.jst.jsp.core/.options
index 30e9fad..4da1fdb 100644
--- a/bundles/org.eclipse.jst.jsp.core/.options
+++ b/bundles/org.eclipse.jst.jsp.core/.options
@@ -31,6 +31,4 @@
 org.eclipse.jst.jsp.core/debug/jspjavamapping=false
 
 org.eclipse.jst.jsp.core/debug/jspvalidator=false
-org.eclipse.jst.jsp.core/debug/taglibvars=false
-
-org.eclipse.jst.jsp.core/debug/taglibclassloader
\ No newline at end of file
+org.eclipse.jst.jsp.core/debug/taglibvars=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index afa5c91..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:32 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs
index 9dd3d0d..517fce1 100644
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Thu Mar 02 00:44:42 EST 2006

+#Sat Oct 01 19:06:11 EDT 2005

 eclipse.preferences.version=1

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

@@ -68,7 +68,6 @@
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore

 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled

 org.eclipse.jdt.core.compiler.problem.unusedImport=error

-org.eclipse.jdt.core.compiler.problem.unusedLabel=error

 org.eclipse.jdt.core.compiler.problem.unusedLocal=error

 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index ef2ac65..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:39 EDT 2006
-eclipse.preferences.version=1
-internal.default.compliance=default
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.ltk.core.refactoring.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.ltk.core.refactoring.prefs
deleted file mode 100644
index c59368c..0000000
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.ltk.core.refactoring.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:32 EDT 2006
-eclipse.preferences.version=1
-org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs
index 110ca2e..42fb716 100644
--- a/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.jst.jsp.core/.settings/org.eclipse.pde.prefs
@@ -1,5 +1,4 @@
-#Tue Apr 04 01:41:15 EDT 2006
-compilers.p.build=0
+#Fri May 27 23:56:32 EDT 2005
 compilers.p.deprecated=1
 compilers.p.illegal-att-value=0
 compilers.p.no-required-att=0
diff --git a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
index f3b3a77..975e202 100644
--- a/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.jsp.core/META-INF/MANIFEST.MF
@@ -2,39 +2,37 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.jsp.core; singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.0.2.qualifier
 Bundle-Activator: org.eclipse.jst.jsp.core.internal.JSPCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.jst.jsp.core.internal;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentmodel;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentmodel.tld;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contentproperties;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.contenttype;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.document;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.domdocument;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.encoding;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.java;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.java.jspel;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.java.search;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.modelhandler;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.modelquery;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.parser;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.parser.internal;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.preferences;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.provisional;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.provisional.contenttype;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.provisional.text;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.regions;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.taglib;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.tasks;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.text;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.util;x-friends:="org.eclipse.jst.jsp.ui",
- org.eclipse.jst.jsp.core.internal.validation;x-friends:="org.eclipse.jst.jsp.ui",
+Export-Package: org.eclipse.jst.jsp.core.internal,
+ org.eclipse.jst.jsp.core.internal.contentmodel,
+ org.eclipse.jst.jsp.core.internal.contentmodel.tld,
+ org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional,
+ org.eclipse.jst.jsp.core.internal.contenttype,
+ org.eclipse.jst.jsp.core.internal.document,
+ org.eclipse.jst.jsp.core.internal.domdocument,
+ org.eclipse.jst.jsp.core.internal.encoding,
+ org.eclipse.jst.jsp.core.internal.java,
+ org.eclipse.jst.jsp.core.internal.java.jspel,
+ org.eclipse.jst.jsp.core.internal.java.search,
+ org.eclipse.jst.jsp.core.internal.modelhandler,
+ org.eclipse.jst.jsp.core.internal.modelquery,
+ org.eclipse.jst.jsp.core.internal.parser,
+ org.eclipse.jst.jsp.core.internal.parser.internal,
+ org.eclipse.jst.jsp.core.internal.preferences,
+ org.eclipse.jst.jsp.core.internal.provisional,
+ org.eclipse.jst.jsp.core.internal.provisional.contenttype,
+ org.eclipse.jst.jsp.core.internal.provisional.text,
+ org.eclipse.jst.jsp.core.internal.regions,
+ org.eclipse.jst.jsp.core.internal.taglib,
+ org.eclipse.jst.jsp.core.internal.tasks,
+ org.eclipse.jst.jsp.core.internal.text,
+ org.eclipse.jst.jsp.core.internal.util,
+ org.eclipse.jst.jsp.core.internal.validation,
  org.eclipse.jst.jsp.core.jspel,
- org.eclipse.jst.jsp.core.taglib,
- org.eclipse.jst.jsp.core.text
+ org.eclipse.jst.jsp.core.taglib
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.core.filebuffers,
@@ -45,6 +43,5 @@
  org.eclipse.text,
  org.eclipse.wst.common.uriresolver,
  org.eclipse.wst.validation,
- org.eclipse.tomcat;resolution:=optional,
- org.eclipse.wst.sse.ui
-Eclipse-LazyStart: true; exceptions="org.eclipse.jst.jsp.core.internal.contenttype"
+ org.eclipse.tomcat;resolution:=optional
+Eclipse-AutoStart: true; exceptions="org.eclipse.jst.jsp.core.internal.contenttype"
diff --git a/bundles/org.eclipse.jst.jsp.core/plugin.properties b/bundles/org.eclipse.jst.jsp.core/plugin.properties
index d72a934..9d662e3 100644
--- a/bundles/org.eclipse.jst.jsp.core/plugin.properties
+++ b/bundles/org.eclipse.jst.jsp.core/plugin.properties
@@ -10,13 +10,12 @@
 ###############################################################################
 providerName=Eclipse.org
 pluginName=Structured Source JSP Model
+nlFeatureName=Structured Source JSP Model NL Support
 Structured_JSP_Document_Factory_Extension.name=Structured JSP Document Factory Extension
 JSP_Content_Type_Extension_Element.name=JSP
 JSP_Tag_Content_Type_Extension_Element.name=JSP Tag Definition
 JSP_Fragment_Content_Type_Extension_Element.name=JSP Fragment
 JSP_Syntax_Validator.name=JSP Syntax Validator
-JSP_Directive_Validator.name=JSP Directive Validator
 EL_Syntax_Validator.name=EL Syntax Validator
 Structured_JSP_Document_Setup_participant.name=Structured JSP Document Setup Participant
-
-extension-point.name.0 = org.eclipse.jst.jsp.core.eltranslator
+JSP_EL_Translator=JSP EL Translator
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/plugin.xml b/bundles/org.eclipse.jst.jsp.core/plugin.xml
index 9324934..8684199 100644
--- a/bundles/org.eclipse.jst.jsp.core/plugin.xml
+++ b/bundles/org.eclipse.jst.jsp.core/plugin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?eclipse version="3.0"?>
 <plugin>
-   <extension-point id="elTranslator" name="%extension-point.name.0" schema="schema/eltranslator.exsd"/>
+   <extension-point id="elTranslator" name="%JSP_EL_Translator" schema="schema/eltranslator.exsd"/>
 
 	<extension point="org.eclipse.wst.sse.core.modelHandler">
 		<modelHandler
@@ -85,7 +85,7 @@
 	</extension>
 
 	<extension point="org.eclipse.core.runtime.contentTypes">
-		<!-- create content type for JSP files -->
+		<!-- associate JSP file types -->
 		<content-type
 			file-extensions="jsp,jsv,jtpl,jspx"
 			priority="high"
@@ -96,7 +96,6 @@
 			<describer
 				class="org.eclipse.jst.jsp.core.internal.contenttype.ContentDescriberForJSP" />
 		</content-type>
-		<!-- create content type for JSP fragment files -->
 		<content-type
 			file-extensions="jspf,jsf"
 			priority="high"
@@ -107,22 +106,19 @@
 			<describer
 				class="org.eclipse.jst.jsp.core.internal.contenttype.ContentDescriberForJSP" />
 		</content-type>
-		<!-- create content type for JSP 2.0 Tag file types -->
+		<!-- associate JSP 2.0 Tag file types -->
 		<content-type
 			file-extensions="tag,tagx,tagf"
 			priority="high"
 			name="%JSP_Tag_Content_Type_Extension_Element.name"
 			id="tagsource"
 			base-type="org.eclipse.jst.jsp.core.jspsource"
-			default-charset="UTF-8"/>
-		<!-- create content type for .tld files -->
-		<content-type
-			file-extensions="tld"
-			priority="high"
-			name="%JSP_TLD_Content_Type_Extension_Element.name"
-			id="tldsource"
-			base-type="org.eclipse.core.runtime.xml"
-			default-charset="UTF-8"/>
+			default-charset="UTF-8">
+		</content-type>
+		<!-- associate .tld files with the XML content type -->
+		<file-association
+			content-type="org.eclipse.core.runtime.xml"
+			file-extensions="tld" />
 	</extension>
 
 	<!-- initialize jsp core preferences -->
@@ -131,9 +127,7 @@
 			class="org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceInitializer" />
 	</extension>
 
-	<!--======================================================================================-->
-	<!-- JSP EL batch validator				                                                  -->
-	<!--======================================================================================-->
+
 	<extension
 		id="JSPELValidator"
 		name="%EL_Syntax_Validator.name"
@@ -172,10 +166,10 @@
 	</extension>
 
 	<!--======================================================================================-->
-	<!-- JSP batch validation                                       						  -->
+	<!-- Workbench validation                                       						  -->
 	<!--======================================================================================-->
 	<extension
-		id="JSPJavaValidator"
+		id="JSPValidator"
 		name="%JSP_Syntax_Validator.name"
 		point="org.eclipse.wst.validation.validator">
 		<validator>
@@ -207,59 +201,17 @@
 			</helper>
 			<run
 				enabled="true"
-				class="org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator">
+				class="org.eclipse.jst.jsp.core.internal.validation.JSPValidator">
 			</run>
 		</validator>
 	</extension>
-	
 	<!--======================================================================================-->
-	<!-- JSP directive batch validation                                						  -->
-	<!--======================================================================================-->
-	<extension
-		id="JSPDirectiveValidator"
-		name="%JSP_Directive_Validator.name"
-		point="org.eclipse.wst.validation.validator">
-		<validator>
-			<projectNature id="org.eclipse.wst.common.modulecore.ModuleCoreNature" />
-			<projectNature id="org.eclipse.jdt.core.javanature" />
-
-			<filter
-				objectClass="org.eclipse.core.resources.IFile"
-				nameFilter="*.jsp">
-			</filter>
-			<filter
-				objectClass="org.eclipse.core.resources.IFile"
-				nameFilter="*.jspf">
-			</filter>
-			<filter
-				objectClass="org.eclipse.core.resources.IFile"
-				nameFilter="*.jsf">
-			</filter>
-			<filter
-				objectClass="org.eclipse.core.resources.IFile"
-				nameFilter="*.jsv">
-			</filter>
-			<filter
-				objectClass="org.eclipse.core.resources.IFile"
-				nameFilter="*.jtpl">
-			</filter>
-			<helper
-				class="org.eclipse.wst.validation.internal.operations.WorkbenchContext">
-			</helper>
-			<run
-				enabled="true"
-				class="org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator">
-			</run>
-		</validator>
-	</extension>
-	
-	<!--======================================================================================-->
-	<!-- source (as you type) validation for JSP Java				   						  -->
+	<!-- source validation for JSP Java				   										  -->
 	<!--======================================================================================-->
 	<extension point="org.eclipse.wst.sse.ui.sourcevalidation">
 		<validator
 			scope="total"
-			class="org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator"
+			class="org.eclipse.jst.jsp.core.internal.validation.JSPValidator"
 			id="org.eclipse.jst.jsp.jspsourcevalidator">
 			<contentTypeIdentifier
 				id="org.eclipse.jst.jsp.core.jspsource">
@@ -289,24 +241,6 @@
 			</contentTypeIdentifier>
 		</validator>
 	</extension>
-	<!--======================================================================================-->
-	<!-- source (as you type) validation for JSP directive			   						  -->
-	<!--======================================================================================-->
-	<extension point="org.eclipse.wst.sse.ui.sourcevalidation">
-		<validator
-			scope="partial"
-			class="org.eclipse.jst.jsp.core.internal.validation.JSPDirectiveValidator"
-			id="org.eclipse.jst.jsp.tldsourcevalidator">
-			<contentTypeIdentifier
-				id="org.eclipse.jst.jsp.core.jspsource">
-				<partitionType id="org.eclipse.jst.jsp.DEFAULT_JSP">
-				</partitionType>
-				<partitionType id="org.eclipse.jst.jsp.JSP_DIRECTIVE">
-				</partitionType>
-			</contentTypeIdentifier>
-		</validator>
-	</extension>
-	
     <extension
        point="org.eclipse.jst.jsp.core.elTranslator">
        <elTranslator
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java
index e447cb7..2ddc9b7 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCoreMessages.java
@@ -28,8 +28,6 @@
 	public static String JSPEL_Syntax;
 	public static String JSPEL_Token;
 	public static String JSPDocumentLoader_1;
-	public static String JSPFContentPropertiesManager_Updating;
-	public static String JSPFContentPropertiesManager_Problems_Updating;
 	
 	private JSPCoreMessages() {
 	}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java
index 3956bb3..d0b1047 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePlugin.java
@@ -13,7 +13,6 @@
 import org.eclipse.core.runtime.Plugin;
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jst.jsp.core.internal.contentmodel.TaglibController;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentPropertiesManager;
 import org.eclipse.jst.jsp.core.internal.java.search.JSPIndexManager;
 import org.eclipse.jst.jsp.core.internal.taglib.TaglibHelperManager;
 import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
@@ -23,8 +22,8 @@
  * The main plugin class to be used in the desktop.
  */
 public class JSPCorePlugin extends Plugin {
-	// The shared instance.
-	private static JSPCorePlugin plugin;
+	//The shared instance.
+	private static JSPCorePlugin plugin;	
 
 	/**
 	 * The constructor.
@@ -36,54 +35,43 @@
 
 	/**
 	 * Returns the shared instance.
-	 * 
-	 * @deprecated - will be removed. Currently used to get "model
-	 *             preferences", but there are other, better ways.
+	 * @deprecated - will be removed. Currently used to get 
+	 * "model preferences", but there are other, better ways. 
 	 */
 	public static JSPCorePlugin getDefault() {
 		return plugin;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
+	/* (non-Javadoc)
 	 * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
 	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
-
+		
 		TaglibIndex.startup();
 		// JSPIndexManager depends on TaglibController, so TaglibController
 		// should be started first
 		TaglibController.startup();
-
+		
 		// listen for classpath changes
 		JavaCore.addElementChangedListener(TaglibHelperManager.getInstance());
-
-
+		
+		
 		JSPIndexManager.getInstance().initialize();
-
-		// listen for resource changes to update content properties keys
-		JSPFContentPropertiesManager.startup();
-
+		
 	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
+	
+	/* (non-Javadoc)
 	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext context) throws Exception {
-		// stop listenning for resource changes to update content properties
-		// keys
-		JSPFContentPropertiesManager.shutdown();
 
 		// stop any indexing
 		JSPIndexManager.getInstance().shutdown();
-
+		
 		// stop listening for classpath changes
 		JavaCore.removeElementChangedListener(TaglibHelperManager.getInstance());
-
+		
 		// stop taglib controller
 		TaglibController.shutdown();
 		TaglibIndex.shutdown();
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties
index afe9594..199cf6a 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/JSPCorePluginResources.properties
@@ -15,5 +15,3 @@
 JSPEL_Syntax=EL Syntax Error 
 JSPEL_Token=Unable to analyse EL expression due to lexical analysis error
 MESSAGE_JSP_VALIDATING_MESSAGE_UI_=JSP Validator validating {0}
-JSPFContentPropertiesManager_Updating=Updating JSP Fragment Content Settings
-JSPFContentPropertiesManager_Problems_Updating=Problem saving JSP Fragment Content Settings for {0}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java
index ea5999e..c018b77 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMAttributeDeclarationImpl.java
@@ -17,7 +17,7 @@
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDAttributeDeclaration;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java
index 9f47c7b..7516441 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMDocumentImpl.java
@@ -21,7 +21,7 @@
 import org.eclipse.jst.jsp.core.internal.Logger;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDValidator;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNamespace;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java
index 9866be3..fbc9cfc 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/CMElementDeclarationImpl.java
@@ -19,7 +19,7 @@
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDDocument;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMContent;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
index a5f2d62..39c745c 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDCMDocumentManager.java
@@ -27,6 +27,7 @@
 import java.util.Map;
 import java.util.Stack;
 
+import org.eclipse.core.filebuffers.FileBuffers;
 import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
@@ -62,7 +63,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
 import org.eclipse.wst.sse.core.internal.util.Assert;
 import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
@@ -251,15 +252,15 @@
 				IPath root = TaglibIndex.getContextRoot(TaglibController.getFileBuffer(TLDCMDocumentManager.this).getLocation());
 				// strip any extraneous quotes and white space
 				includedFile = StringUtils.strip(includedFile).trim();
-				IPath filePath = null;
+				IPath fileLocation = null;
 				if (includedFile.startsWith("/")) { //$NON-NLS-1$
-					filePath = root.append(includedFile);
+					fileLocation = root.append(includedFile);
 				}
 				else {
-					filePath = new Path(URIHelper.normalize(includedFile, TaglibController.getFileBuffer(TLDCMDocumentManager.this).getLocation().toString(), root.toString()));
+					fileLocation = new Path(URIHelper.normalize(includedFile, TaglibController.getFileBuffer(TLDCMDocumentManager.this).getLocation().toString(), root.toString()));
 				}
 				// check for "loops"
-				if (!getIncludes().contains(filePath) && filePath != null && !filePath.equals(TaglibController.getFileBuffer(TLDCMDocumentManager.this).getLocation())) {
+				if (!getIncludes().contains(fileLocation) && fileLocation != null && !fileLocation.equals(TaglibController.getFileBuffer(TLDCMDocumentManager.this).getLocation())) {
 					/*
 					 * Prevent slow performance when editing scriptlet part of
 					 * the JSP by only processing includes if they've been
@@ -268,13 +269,13 @@
 					 * prefix/tagdir allows us to just enable the CMDocument
 					 * when the previously parsed files.
 					 */
-					if (hasAnyIncludeBeenModified(filePath)) {
-						getIncludes().push(filePath);
+					if (hasAnyIncludeBeenModified(fileLocation.toString())) {
+						getIncludes().push(fileLocation);
 						if (getParser() != null) {
 							IncludeHelper includeHelper = new IncludeHelper(anchorStructuredDocumentRegion, getParser());
-							includeHelper.parse(filePath);
+							includeHelper.parse(FileBuffers.normalizeLocation(fileLocation).toString());
 							List references = includeHelper.taglibReferences;
-							fTLDCMReferencesMap.put(filePath.toString(), references);
+							fTLDCMReferencesMap.put(fileLocation.toString(), references);
 						}
 						else
 							Logger.log(Logger.WARNING, "Warning: parser text was requested by " + getClass().getName() + " but none was available; taglib support disabled"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -282,7 +283,7 @@
 					}
 					else {
 						// Add from that saved list of uris/prefixes/documents
-						List references = (List) fTLDCMReferencesMap.get(filePath.toString());
+						List references = (List) fTLDCMReferencesMap.get(fileLocation.toString());
 						for (int i = 0; references != null && i < references.size(); i++) {
 							TLDCMDocumentReference reference = (TLDCMDocumentReference) references.get(i);
 							enableTaglibFromURI(reference.prefix, reference.uri, includeStructuredDocumentRegion);
@@ -292,7 +293,7 @@
 				}
 				else {
 					if (Debug.debugTokenizer)
-						System.out.println("LOOP IN @INCLUDES FOUND: " + filePath); //$NON-NLS-1$
+						System.out.println("LOOP IN @INCLUDES FOUND: " + fileLocation); //$NON-NLS-1$
 				}
 			}
 		}
@@ -540,9 +541,9 @@
 			return ResourcesPlugin.getEncoding();
 		}
 
-		protected String getContents(IPath filePath) {
+		protected String getContents(String fileName) {
 			StringBuffer s = new StringBuffer();
-			IFile iFile = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
+			IFile iFile = FileBuffers.getWorkspaceFileAtLocation(new Path(fileName));
 			if (iFile != null && iFile.exists()) {
 				String charset = detectCharset(iFile);
 				InputStream contents = null;
@@ -558,7 +559,7 @@
 				}
 				catch (Exception e) {
 					if (Debug.debugStructuredDocument)
-						Logger.log(Logger.WARNING, "An exception occured while scanning " + filePath, e); //$NON-NLS-1$
+						Logger.log(Logger.WARNING, "An exception occured while scanning " + fileName, e); //$NON-NLS-1$
 				}
 				finally {
 					try {
@@ -578,7 +579,7 @@
 				File file = null;
 				FileInputStream fis = null;
 				try {
-					file = new File(filePath.toString());
+					file = new File(fileName);
 					length = (int) file.length();
 					fis = new FileInputStream(file);
 					while (((c = fis.read()) >= 0) && (count < length)) {
@@ -588,7 +589,7 @@
 				}
 				catch (FileNotFoundException e) {
 					if (Debug.debugStructuredDocument)
-						System.out.println("File not found : \"" + filePath + "\""); //$NON-NLS-2$//$NON-NLS-1$
+						System.out.println("File not found : \"" + fileName + "\""); //$NON-NLS-2$//$NON-NLS-1$
 				}
 				catch (ArrayIndexOutOfBoundsException e) {
 					if (Debug.debugStructuredDocument)
@@ -643,14 +644,19 @@
 			}
 		}
 
-		/**
-		 * @param path - the fullpath for the resource to be parsed 
-		 */
-		void parse(IPath path) {
+		public void parse(String filename) {
 			JSPSourceParser p = new JSPSourceParser();
 			fLocalParser = p;
 			List blockTags = fParentParser.getBlockMarkers();
-			String s = getContents(path);
+			String includedFilename = filename;
+			File baseFile = FileBuffers.getSystemFileAtLocation(new Path(includedFilename));
+			try {
+				if (baseFile != null)
+					includedFilename = baseFile.getCanonicalPath();
+			}
+			catch (IOException e) {
+			}
+			String s = getContents(includedFilename);
 			fLocalParser.addStructuredDocumentRegionHandler(this);
 			fLocalParser.reset(s);
 			for (int i = 0; i < blockTags.size(); i++) {
@@ -697,7 +703,7 @@
 	private Hashtable fDocuments = null;
 	// timestamp cache to prevent excessive reparsing
 	// of included files
-	// IPath (filepath) > Long (modification stamp)
+	// String (filepath) > Long (modification stamp)
 	HashMap fInclude2TimestampMap = new HashMap();
 	private Stack fIncludes = null;
 
@@ -890,20 +896,21 @@
 	}
 
 	/**
-	 * @param filePath the path to check for modification
+	 * @param fileLocation
+	 *            the "root" file
 	 */
-	boolean hasAnyIncludeBeenModified(IPath filePath) {
+	boolean hasAnyIncludeBeenModified(String fileLocation) {
 
 		boolean result = false;
 		// check the top level
-		if (hasBeenModified(filePath)) {
+		if (hasBeenModified(fileLocation)) {
 			result = true;
 		}
 		else {
 			// check all includees
 			Iterator iter = fInclude2TimestampMap.keySet().iterator();
 			while (iter.hasNext()) {
-				if (hasBeenModified((IPath) iter.next())) {
+				if (hasBeenModified((String) iter.next())) {
 					result = true;
 					break;
 				}
@@ -916,30 +923,32 @@
 	 * @param filename
 	 * @return
 	 */
-	boolean hasBeenModified(IPath filePath) {
+	boolean hasBeenModified(String filename) {
+
 		boolean result = false;
 		// quick filename/timestamp cache check here...
-		IFile f = null;
+		IPath filePath = new Path(filename);
+		IFile f = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(filePath);
 		if (f == null && filePath.segmentCount() > 1) {
 			f = ResourcesPlugin.getWorkspace().getRoot().getFile(filePath);
 		}
 		if (f != null && f.exists()) {
 			Long currentStamp = new Long(f.getModificationStamp());
-			Object o = fInclude2TimestampMap.get(filePath);
+			Object o = fInclude2TimestampMap.get(filename);
 			if (o != null) {
 				Long previousStamp = (Long) o;
 				// stamps don't match, file changed
 				if (currentStamp.longValue() != previousStamp.longValue()) {
 					result = true;
 					// store for next time
-					fInclude2TimestampMap.put(filePath, currentStamp);
+					fInclude2TimestampMap.put(filename, currentStamp);
 				}
 			}
 			else {
 				// return true, since we've not encountered this file yet.
 				result = true;
 				// store for next time
-				fInclude2TimestampMap.put(filePath, currentStamp);
+				fInclude2TimestampMap.put(filename, currentStamp);
 			}
 		}
 		return result;
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java
index 451b2a2..7edf467 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDInitParamImpl.java
@@ -17,7 +17,7 @@
 package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
 
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDInitParam;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 
 
 public class TLDInitParamImpl implements TLDInitParam {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java
index 011ae6f..517b319 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDListenerImpl.java
@@ -17,7 +17,7 @@
 package org.eclipse.jst.jsp.core.internal.contentmodel.tld;
 
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDListener;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 
 
 public class TLDListenerImpl implements TLDListener {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java
index 16b6f20..55badba 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDValidatorImpl.java
@@ -20,7 +20,7 @@
 import java.util.List;
 
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDValidator;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 
 
 public class TLDValidatorImpl implements TLDValidator {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java
index 7998305..f6c0525 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/TLDVariableImpl.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.JSP12TLDNames;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDVariable;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 
 
 public class TLDVariableImpl implements TLDVariable {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java
index 395cbab..d079058 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentmodel/tld/provisional/TLDVariable.java
@@ -21,18 +21,15 @@
 	 */
 	boolean getDeclare();
 
-	/**
-	 * @returnthe the description for this variable
-	 */
 	String getDescription();
 
 	/**
-	 * The name of an attribute whose (translation time) value will give the name of the variable, or null of the name is not to be obtained this way.
+	 * The name of an attribute whose (translation time) value will give the name of the variable.
 	 */
 	String getNameFromAttribute();
 
 	/**
-	 * The variable name given as a constant, or null of the name is not specified.
+	 * The variable name given as a constant
 	 */
 	String getNameGiven();
 	
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentProperties.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentProperties.java
deleted file mode 100644
index 2ece904..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentProperties.java
+++ /dev/null
@@ -1,213 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.jsp.core.internal.contentproperties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * Properties constants used by JSP Fragments. Clients should only read and
- * modify the JSP Fragment properties programmatically using this class.
- * 
- * @since 1.1
- */
-public class JSPFContentProperties {
-	static final String JSPCORE_ID = JSPCorePlugin.getDefault().getBundle().getSymbolicName();
-	private static final String PROJECT_KEY = "<project>"; //$NON-NLS-1$
-
-	/**
-	 * A named key that controls the default language for JSP Fragments
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 * 
-	 * @since 1.1
-	 */
-	public static final String JSPLANGUAGE = "jsp-language"; //$NON-NLS-1$
-	/**
-	 * A named key that controls the default content type for JSP Fragments
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 * 
-	 * @since 1.1
-	 */
-	public static final String JSPCONTENTTYPE = "jsp-content-type"; //$NON-NLS-1$
-	/**
-	 * Indicates if JSP fragments should be compiled/validated. JSP fragments
-	 * will be validated when true.
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 * 
-	 * @since 1.1
-	 */
-	public static final String VALIDATE_FRAGMENTS = "validateFragments";//$NON-NLS-1$
-
-	/**
-	 * Generates a preference key based on resourcePath
-	 * 
-	 * @param resourcePath
-	 *            the path the key will be based off of
-	 * @return preference key based on resourcePath (basically the
-	 *         resourcePath without the filename); PROJECT_KEY if resourcePath
-	 *         is null
-	 */
-	static String getKeyFor(IPath resourcePath) {
-		String key = PROJECT_KEY;
-		if (resourcePath != null && resourcePath.segmentCount() > 1) {
-			key = resourcePath.removeFirstSegments(1).toString();
-		}
-		return key;
-	}
-
-	/**
-	 * Get the preferences node associated with the given project scope and
-	 * preference key (subNode) If create is true, the preference node will be
-	 * created if one does not already exist
-	 * 
-	 * @param project
-	 *            the project the preference node is under
-	 * @param preferenceKey
-	 *            the subnode/category the preference node is located in
-	 * @param create
-	 *            if true, a preference node will be created if one does not
-	 *            already exist
-	 * @return Preferences associated with the given project scope and
-	 *         preference key. null if one could not be found and create is
-	 *         false
-	 */
-	static Preferences getPreferences(IProject project, String preferenceKey, boolean create) {
-		if (create)
-			// create all nodes down to the one we are interested in
-			return new ProjectScope(project).getNode(JSPCORE_ID).node(preferenceKey);
-		// be careful looking up for our node so not to create any nodes as
-		// side effect
-		Preferences node = Platform.getPreferencesService().getRootNode().node(ProjectScope.SCOPE);
-		try {
-			// TODO once bug 90500 is fixed, should be as simple as this:
-			// String path = project.getName() + IPath.SEPARATOR +
-			// ResourcesPlugin.PI_RESOURCES + IPath.SEPARATOR +
-			// ENCODING_PREF_NODE;
-			// return node.nodeExists(path) ? node.node(path) : null;
-			// for now, take the long way
-			if (!node.nodeExists(project.getName()))
-				return null;
-			node = node.node(project.getName());
-			if (!node.nodeExists(JSPCORE_ID))
-				return null;
-			node = node.node(JSPCORE_ID);
-			if (!node.nodeExists(preferenceKey))
-				return null;
-			return node.node(preferenceKey);
-		}
-		catch (BackingStoreException e) {
-			// nodeExists failed
-			Logger.log(Logger.WARNING_DEBUG, "Could not retrieve preference node", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the value for the given key in the given context.
-	 * 
-	 * @param key
-	 *            The property key
-	 * @param resource
-	 *            The current context or <code>null</code> if no context is
-	 *            available and the workspace setting should be taken. Note
-	 *            that passing <code>null</code> should be avoided.
-	 * @param recurse
-	 *            whether the parent should be queried till property is found
-	 * @return Returns the current value for the key.
-	 * @since 1.1
-	 */
-	public static String getProperty(String key, IResource resource, boolean recurse) {
-		String val = null;
-		if (resource != null) {
-			IProject project = resource.getProject();
-			if (project != null) {
-				Preferences preferences = getPreferences(project, key, false);
-				if (preferences != null) {
-					val = internalGetProperty(resource, recurse, preferences);
-				}
-			}
-		}
-		// no preferences found - for performance reasons,
-		// short-circuit
-		// lookup by falling back to workspace's default
-		// setting
-		if (val == null && recurse)
-			val = getWorkbenchPreference(key);
-		return val;
-	}
-
-	private static String getWorkbenchPreference(String key) {
-		return Platform.getPreferencesService().getString(JSPCORE_ID, key, null, null);
-	}
-
-	private static String internalGetProperty(IResource resource, boolean recurse, Preferences preferences) {
-		String value = preferences.get(getKeyFor(resource.getFullPath()), null);
-		if (value == null && resource != resource.getProject() && recurse) {
-			value = preferences.get(getKeyFor(null), null);
-		}
-
-		return value;
-	}
-
-	/**
-	 * Sets the value for the given key in the given context.
-	 * 
-	 * @param key
-	 *            The property key
-	 * @param resource
-	 *            The current context. Note context cannot be
-	 *            <code>null</code>.
-	 * @param value
-	 *            The value to set for the key. If value is <code>null</code>
-	 *            the key is removed from properties.
-	 * @since 1.1
-	 */
-	public static void setProperty(String key, IResource resource, String value) throws CoreException {
-		if (resource != null) {
-			IProject project = resource.getProject();
-			if (project != null) {
-				Preferences preferences = getPreferences(project, key, true);
-				if (value == null || value.trim().length() == 0)
-					preferences.remove(getKeyFor(resource.getFullPath()));
-				else
-					preferences.put(getKeyFor(resource.getFullPath()), value);
-				try {
-					// save changes
-					preferences.flush();
-				}
-				catch (BackingStoreException e) {
-					throw new CoreException(new Status(IStatus.ERROR, JSPCORE_ID, IStatus.ERROR, "Unable to set property", e)); //$NON-NLS-1$
-				}
-			}
-		}
-		// Workbench preference may not be needed so leave out for now
-		// just set a preference in the instance scope
-		// if (!preferenceFound) {
-		// setWorkbenchPreference(key);
-		// }
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentPropertiesManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentPropertiesManager.java
deleted file mode 100644
index d3cd4cf..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/contentproperties/JSPFContentPropertiesManager.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.jsp.core.internal.contentproperties;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-public class JSPFContentPropertiesManager {
-	public JSPFContentPropertiesManager() {
-		super();
-		fResourceChangeListener = new ResourceChangeListener();
-		fJob = new ContentPropertiesManagerJob();
-	}
-
-	private static JSPFContentPropertiesManager _instance = null;
-	private IResourceChangeListener fResourceChangeListener;
-	ContentPropertiesManagerJob fJob;
-
-	/**
-	 * This job implementation is used to allow the resource change listener
-	 * to schedule operations that need to modify the workspace.
-	 */
-	private class ContentPropertiesManagerJob extends Job {
-		private static final int PROPERTIES_UPDATE_DELAY = 500;
-		private List asyncChanges = new ArrayList();
-
-		public ContentPropertiesManagerJob() {
-			super(JSPCoreMessages.JSPFContentPropertiesManager_Updating);
-			setSystem(true);
-			setPriority(Job.INTERACTIVE);
-		}
-
-		public void addChanges(Set newChanges) {
-			if (newChanges.isEmpty())
-				return;
-			synchronized (asyncChanges) {
-				asyncChanges.addAll(newChanges);
-				asyncChanges.notify();
-			}
-			schedule(PROPERTIES_UPDATE_DELAY);
-		}
-
-		public IProject getNextChange() {
-			synchronized (asyncChanges) {
-				return asyncChanges.isEmpty() ? null : (IProject) asyncChanges.remove(asyncChanges.size() - 1);
-			}
-		}
-
-		protected IStatus run(IProgressMonitor monitor) {
-			MultiStatus result = new MultiStatus(JSPFContentProperties.JSPCORE_ID, IResourceStatus.FAILED_SETTING_CHARSET, JSPCoreMessages.JSPFContentPropertiesManager_Updating, null);
-			monitor = monitor == null ? new NullProgressMonitor() : monitor;
-			try {
-				monitor.beginTask(JSPCoreMessages.JSPFContentPropertiesManager_Updating, asyncChanges.size());
-				try {
-					IProject next;
-					while ((next = getNextChange()) != null) {
-						// just exit if the system is shutting down or has
-						// been shut down
-						// it is too late to change the workspace at this
-						// point anyway
-						if (Platform.getBundle("org.eclipse.osgi").getState() != Bundle.ACTIVE) //$NON-NLS-1$
-							return Status.OK_STATUS;
-						try {
-							// save the preferences nodes
-							if (next.isAccessible()) {
-								// save content type preferences
-								Preferences projectPrefs = JSPFContentProperties.getPreferences(next, JSPFContentProperties.JSPCONTENTTYPE, false);
-								if (projectPrefs != null)
-									projectPrefs.flush();
-								// save language preferences
-								projectPrefs = JSPFContentProperties.getPreferences(next, JSPFContentProperties.JSPLANGUAGE, false);
-								if (projectPrefs != null)
-									projectPrefs.flush();
-
-							}
-						}
-						catch (BackingStoreException e) {
-							// we got an error saving
-							String detailMessage = NLS.bind(JSPCoreMessages.JSPFContentPropertiesManager_Problems_Updating, next.getFullPath());
-							result.add(new Status(1 << (IResourceStatus.FAILED_SETTING_CHARSET % 100 / 33), ResourcesPlugin.PI_RESOURCES, IResourceStatus.FAILED_SETTING_CHARSET, detailMessage, e));
-						}
-					}
-					monitor.worked(1);
-				}
-				catch (OperationCanceledException e) {
-					throw e;
-				}
-			}
-			finally {
-				monitor.done();
-			}
-			return result;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-		 */
-		public boolean shouldRun() {
-			synchronized (asyncChanges) {
-				return !asyncChanges.isEmpty();
-			}
-		}
-	}
-
-	class ResourceChangeListener implements IResourceChangeListener {
-		private void processEntryChanges(IResourceDelta projectDelta, Set projectsToSave) {
-			// check each resource with jsp fragment setting to see if it has
-			// been moved/deleted
-			boolean resourceChanges = false;
-			boolean resourceChanges2 = false;
-
-			// project affected
-			IProject currentProject = (IProject) projectDelta.getResource();
-
-			resourceChanges = processPreferences(currentProject, JSPFContentProperties.JSPCONTENTTYPE, projectDelta, projectsToSave);
-			resourceChanges2 = processPreferences(currentProject, JSPFContentProperties.JSPLANGUAGE, projectDelta, projectsToSave);
-
-			// if there was a preference key change, need to save preferences
-			if (resourceChanges || resourceChanges2)
-				projectsToSave.add(currentProject);
-		}
-
-		/**
-		 * Goes through all the resource-dependent preferences associated with
-		 * currentProject & key and updates the preference keys if needed
-		 * based on projectDelta
-		 * 
-		 * @param currentProject
-		 *            current project of the preferences to be looked at
-		 * @param key
-		 *            current key/subcategory of the preferences to be looked
-		 *            at
-		 * @param projectDelta
-		 *            the changes to process the preference keys against
-		 * @param projectsToSave
-		 *            the projects that need to be updated/saved
-		 * @return true if currentProject's preferences were modified
-		 */
-		private boolean processPreferences(IProject currentProject, String key, IResourceDelta projectDelta, Set projectsToSave) {
-			boolean resourceChanges = false;
-
-			// get the project-key preference node
-			Preferences projectPrefs = JSPFContentProperties.getPreferences(currentProject, key, false);
-			if (projectPrefs == null)
-				// no preferences for this project-key, just bail
-				return false;
-			String[] affectedResources;
-			try {
-				affectedResources = projectPrefs.keys();
-			}
-			catch (BackingStoreException e) {
-				// problems with the project scope... we gonna miss the
-				// changes (but will log)
-				Logger.log(Logger.WARNING_DEBUG, "Problem retreiving JSP Fragment preferences", e); //$NON-NLS-1$
-				return false;
-			}
-
-			// go through each preference key (which is really a file name)
-			for (int i = 0; i < affectedResources.length; i++) {
-				// see if preference key/file name was file that was changed
-				IResourceDelta memberDelta = projectDelta.findMember(new Path(affectedResources[i]));
-				// no changes for the given resource
-				if (memberDelta == null)
-					continue;
-				if (memberDelta.getKind() == IResourceDelta.REMOVED) {
-					resourceChanges = true;
-					// remove the setting for the original location
-					String currentValue = projectPrefs.get(affectedResources[i], null);
-					projectPrefs.remove(affectedResources[i]);
-					if ((memberDelta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
-						// if moving, copy the setting for the new location
-						IProject targetProject = ResourcesPlugin.getWorkspace().getRoot().getProject(memberDelta.getMovedToPath().segment(0));
-						Preferences targetPrefs = JSPFContentProperties.getPreferences(targetProject, key, true);
-						targetPrefs.put(JSPFContentProperties.getKeyFor(memberDelta.getMovedToPath()), currentValue);
-						if (targetProject != currentProject)
-							projectsToSave.add(targetProject);
-					}
-				}
-			}
-			return resourceChanges;
-		}
-
-		/**
-		 * For any change to the encoding file or any resource with encoding
-		 * set, just discard the cache for the corresponding project.
-		 */
-		public void resourceChanged(IResourceChangeEvent event) {
-			IResourceDelta delta = event.getDelta();
-			if (delta == null)
-				return;
-			IResourceDelta[] projectDeltas = delta.getAffectedChildren();
-			// process each project in the delta
-			Set projectsToSave = new HashSet();
-			for (int i = 0; i < projectDeltas.length; i++)
-				// nothing to do if a project has been added/removed/moved
-				if (projectDeltas[i].getKind() == IResourceDelta.CHANGED && (projectDeltas[i].getFlags() & IResourceDelta.OPEN) == 0)
-					processEntryChanges(projectDeltas[i], projectsToSave);
-			fJob.addChanges(projectsToSave);
-		}
-	}
-
-	public synchronized static void startup() {
-		_instance = new JSPFContentPropertiesManager();
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(_instance.fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
-	}
-
-	public synchronized static void shutdown() {
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(_instance.fResourceChangeListener);
-		_instance = null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java
index 831215b..e69d9cb 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapter.java
@@ -14,6 +14,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.internal.contentproperties.IContentSettingsListener;
 
 /**
  * Classes which implement this interface have two responsibilities. 
@@ -23,7 +24,7 @@
  * a change in embedded type is is made, it will signal 
  * the structuredModel that it needs to reinitialize itself.
  */
-public interface PageDirectiveAdapter extends INodeAdapter {
+public interface PageDirectiveAdapter extends INodeAdapter, IContentSettingsListener {
 
 	public String getContentType();
 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java
index f20707e..adb695f 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterFactory.java
@@ -15,6 +15,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapterFactory;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
+import org.eclipse.wst.sse.internal.contentproperties.ContentSettingsChangeSubject;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 import org.w3c.dom.Node;
 
@@ -54,6 +55,7 @@
 			IDOMNode node = (IDOMNode) target;
 			if (node.getNodeType() == Node.DOCUMENT_NODE) {
 				result = getAdapterInstance(target);
+				ContentSettingsChangeSubject.getSubject().addListener(result);
 			}
 
 		}
@@ -62,6 +64,7 @@
 
 	public void release() {
 		if (pageDirectiveAdapterInstance != null) {
+			ContentSettingsChangeSubject.getSubject().removeListener(pageDirectiveAdapterInstance);
 			pageDirectiveAdapterInstance.release();
 		}
 	}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java
index 66a8b72..b388c1a 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/document/PageDirectiveAdapterImpl.java
@@ -16,12 +16,13 @@
 import java.util.StringTokenizer;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.text.IDocumentExtension3;
 import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
 import org.eclipse.jst.jsp.core.internal.modelhandler.EmbeddedTypeStateData;
 import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP;
 import org.eclipse.wst.sse.core.internal.ltk.modelhandler.EmbeddedTypeHandler;
@@ -33,17 +34,18 @@
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning;
 import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 
 /**
- * This class has the responsibility to provide an embedded factory registry
- * for JSP Aware INodeAdapter Factories to use.
+ * This class has the responsibility to provide 
+ * an embedded factory registry for JSP Aware INodeAdapter Factories
+ * to use. 
  * 
- * Typically, the embedded type is to be considered a feature of the document,
- * so JSP Aware AdpaterFactories should call
- * getAdapter(PageDirectiveAdapter.class) directoy on the document (or owning
- * document) node.
+ * Typically, the embedded type is to be considered a feature of 
+ * the document, so JSP Aware AdpaterFactories should call
+ * getAdapter(PageDirectiveAdapter.class) directoy on the document
+ * (or owning document) node.
  */
 public class PageDirectiveAdapterImpl implements PageDirectiveAdapter {
 
@@ -59,7 +61,7 @@
 	public PageDirectiveAdapterImpl(INodeNotifier target) {
 		super();
 		notifierAtCreation = target;
-		// we need to remember our instance of model,
+		// we need to remember our instance of model, 
 		// in case we need to "signal" a re-init needed.
 		if (target instanceof IDOMNode) {
 			IDOMNode node = (IDOMNode) target;
@@ -69,11 +71,11 @@
 	}
 
 	/**
-	 * parses the full contentType value into its two parts the contentType,
-	 * and the charset, if present. Note: this method is a lightly modified
-	 * version of a method in AbstractHeadParser. There, we're mostly
-	 * interested in the charset part of contentTypeValue. Here, we're mostly
-	 * interested in the mimeType part.
+	 * parses the full contentType value into its two parts
+	 * the contentType, and the charset, if present. Note: this 
+	 * method is a lightly modified version of a method in AbstractHeadParser.
+	 * There, we're mostly interested in the charset part of contentTypeValue. 
+	 * Here, we're mostly interested in the mimeType part.
 	 */
 	private String getMimeTypeFromContentTypeValue(String contentTypeValue) {
 		if (contentTypeValue == null)
@@ -81,8 +83,7 @@
 		String cleanContentTypeValue = StringUtils.stripNonLetterDigits(contentTypeValue);
 		StringTokenizer tokenizer = new StringTokenizer(cleanContentTypeValue, ";= \t\n\r\f"); //$NON-NLS-1$
 		int tLen = tokenizer.countTokens();
-		// if contains encoding should have three tokens, the mimetype, the
-		// word 'charset', and the encoding value
+		// if contains encoding should have three tokens, the mimetype, the word 'charset', and the encoding value
 		String[] tokens = new String[tLen];
 		int j = 0;
 		while (tokenizer.hasMoreTokens()) {
@@ -90,9 +91,9 @@
 			j++;
 		}
 		// 
-		// Following is the common form for target expression
+		// Following is the common form for target expression		
 		// <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-		// But apparrently is also valid without the content type there,
+		// But apparrently is also valid without the content type there, 
 		// just the charset, as follows:
 		// <META http-equiv="Content-Type" content="charset=UTF-8">
 		// So we'll loop through tokens and key off of 'charset'
@@ -104,21 +105,21 @@
 				break;
 			}
 		}
-		// String charset = null;
+		//String charset = null;
 		String contentType = null;
 		if (charsetPos > -1) {
 			// case where charset was present
-			// int charsetValuePos = charsetPos + 1;
-			// if (charsetValuePos < tokens.length) {
-			// charset = tokens[charsetValuePos];
-			// }
+			//			int charsetValuePos = charsetPos + 1;
+			//			if (charsetValuePos < tokens.length) {
+			//				charset = tokens[charsetValuePos];
+			//			}
 			int contentTypeValuePos = charsetPos - 1;
 			if (contentTypeValuePos > -1) {
 				contentType = tokens[contentTypeValuePos];
 			}
 		}
 		else {
-			// charset was not present, so if there's
+			// charset was not present, so if there's 
 			// a value, we assume its the contentType value
 			if (tokens.length > 0) {
 				contentType = tokens[0];
@@ -136,6 +137,8 @@
 	private int firstLanguagePosition = -1;
 	private int firstContentTypePosition = -1;
 
+	private boolean reinitializing;
+
 	/*
 	 * @see INodeAdapter#isAdapterForType(Object)
 	 */
@@ -144,8 +147,7 @@
 	}
 
 	/*
-	 * @see INodeAdapter#notifyChanged(INodeNotifier, int, Object, Object,
-	 *      Object, int)
+	 * @see INodeAdapter#notifyChanged(INodeNotifier, int, Object, Object, Object, int)
 	 */
 	public void notifyChanged(INodeNotifier notifier, int eventType, Object changedFeature, Object oldValue, Object newValue, int pos) {
 	}
@@ -155,7 +157,7 @@
 		if (embeddedTypeHandler == handler) {
 			return;
 		}
-		// then one exists, and the new one is truely different, so we need to
+		// then one exists, and the new one is truely different, so we need to 
 		// release and remove current factories
 		if (embeddedTypeHandler != null) {
 			Iterator list = embeddedFactoryRegistry.iterator();
@@ -185,7 +187,7 @@
 	 */
 	public INodeAdapter adapt(INodeNotifier notifier, Object type) {
 		INodeAdapter result = null;
-		// if embeddedContentType hasn't been set,
+		// if embeddedContentType hasn't been set, 
 		// then we can not adapt it.
 		if (embeddedTypeHandler != null) {
 			if (embeddedFactoryRegistry != null) {
@@ -219,90 +221,77 @@
 		embeddedFactoryRegistry.add(factory);
 	}
 
-	// /**
-	// * Used by PageDirectiveWatchers to signal that some important attribute
-	// has changed, and
-	// * any cached values should be re-calcuated
-	// */
-	// void changed() {
-	// // we won't actually check if change is needed, if the model state is
-	// already changing.
-	// if (!model.isReinitializationNeeded()) {
-	// // go through our list of page watcher adapters, and updates the
-	// attributes
-	// // we're interested in, if and only if they are the earliest occurance
-	// in the resource
-	// String potentialContentType = null;
-	// String potentialLanguage = null;
-	// int contentTypePosition = -1;
-	// int languagePosition = -1;
-	// Iterator iterator = pageDirectiveWatchers.iterator();
-	// while (iterator.hasNext()) {
-	// PageDirectiveWatcher pdWatcher = (PageDirectiveWatcher)
-	// iterator.next();
-	// String contentType = pdWatcher.getContentType();
-	// String language = pdWatcher.getLanguage();
-	// int offset = pdWatcher.getOffset();
-	// if (potentialContentType == null || (hasValue(contentType) && (offset <
-	// contentTypePosition))) {
-	// potentialContentType = contentType;
-	// contentTypePosition = offset;
-	// }
-	// }
-	// // now we have the best candiates for cached values, let's see if
-	// they've really changed from
-	// // what we had. If so, note we go through the setters so side effects
-	// can take place there.
-	// potentialContentType =
-	// getMimeTypeFromContentTypeValue(potentialContentType);
-	// if (potentialContentType == null || potentialContentType.length() == 0)
-	// {
-	// //potentialContentType = getDefaultContentType();
-	// } else {
-	// setCachedContentType(potentialContentType);
-	// }
+	//	/**
+	//	 * Used by PageDirectiveWatchers to signal that some important attribute has changed, and 
+	//	 * any cached values should be re-calcuated
+	//	 */
+	//	void changed() {
+	//		// we won't actually check if change is needed, if the model state is already changing.
+	//		if (!model.isReinitializationNeeded()) {
+	//			// go through our list of page watcher adapters, and updates the attributes 
+	//			// we're interested in, if and only if they are the earliest occurance in the resource
+	//			String potentialContentType = null;
+	//			String potentialLanguage = null;
+	//			int contentTypePosition = -1;
+	//			int languagePosition = -1;
+	//			Iterator iterator = pageDirectiveWatchers.iterator();
+	//			while (iterator.hasNext()) {
+	//				PageDirectiveWatcher pdWatcher = (PageDirectiveWatcher) iterator.next();
+	//				String contentType = pdWatcher.getContentType();
+	//				String language = pdWatcher.getLanguage();
+	//				int offset = pdWatcher.getOffset();
+	//				if (potentialContentType == null || (hasValue(contentType) && (offset < contentTypePosition))) {
+	//					potentialContentType = contentType;
+	//					contentTypePosition = offset;
+	//				}
+	//			}
+	//			// now we have the best candiates for cached values, let's see if they've really changed from 
+	//			// what we had. If so, note we go through the setters so side effects can take place there.
+	//			potentialContentType = getMimeTypeFromContentTypeValue(potentialContentType);
+	//			if (potentialContentType == null || potentialContentType.length() == 0) {
+	//				//potentialContentType = getDefaultContentType();
+	//			} else {
+	//				setCachedContentType(potentialContentType);
+	//			}
 	//
-	// if (potentialLanguage != null && hasValue(potentialLanguage)) {
-	// setCachedLanguage(potentialLanguage);
-	// }
-	// }
-	// }
+	//			if (potentialLanguage != null && hasValue(potentialLanguage)) {
+	//				setCachedLanguage(potentialLanguage);
+	//			}
+	//		}
+	//	}
 	void changedContentType(int elementOffset, String newValue) {
-		// only need to process if this new value is
+		// only need to process if this new value is 
 		// earlier in the file than our current value
 		if (firstContentTypePosition == -1 || elementOffset <= firstContentTypePosition) {
-			// dw_TODO: update embedded partitioner in JSP document
-			// partitioner
-			// nsd_TODO: update embedded partitioner in JSP document
-			// partitioner
+			// dw_TODO: update embedded partitioner in JSP document partitioner
+			// nsd_TODO: update embedded partitioner in JSP document partitioner
 
-			// no need to change current value, if we're told some
+			// no need to change current value, if we're told some 
 			// earlier value is null or blank (sounds like an error, anyway)
 			if (hasValue(newValue)) {
 				firstContentTypePosition = elementOffset;
 				String potentialContentType = getMimeTypeFromContentTypeValue(newValue);
 				// only do the set processing if different
 				// from what it already is
-				// if (!potentialContentType.equalsIgnoreCase(cachedLanguage))
-				// {
+				//	if (!potentialContentType.equalsIgnoreCase(cachedLanguage)) {
 				setCachedContentType(potentialContentType);
-				// }
+				//	}
 			}
 		}
 	}
 
 	/**
-	 * Used by PageDirectiveWatchers to signal that some important attribute
-	 * has changed, and any cached values should be re-calcuated
+	 * Used by PageDirectiveWatchers to signal that some important attribute has changed, and 
+	 * any cached values should be re-calcuated
 	 */
 	void changedLanguage(int elementOffset, String newValue) {
-		// only need to process if this new value is
+		// only need to process if this new value is 
 		// earlier in the file than our current value
-		// has to be less than or equal to, in case our previous earliest one,
+		// has to be less than or equal to, in case our previous earliest one, 
 		// is itself changing!
 		if (firstLanguagePosition == -1 || elementOffset <= firstLanguagePosition) {
 
-			// no need to change current value, if we're told some
+			// no need to change current value, if we're told some 
 			// earlier value is null or blank (sounds like an error, anyway)
 			if (hasValue(newValue)) {
 				firstLanguagePosition = elementOffset;
@@ -319,21 +308,20 @@
 	}
 
 	/**
-	 * Used by PageDirectiveWatchers to signal that some important attribute
-	 * has changed, and any cached values should be re-calcuated
+	 * Used by PageDirectiveWatchers to signal that some important attribute has changed, and 
+	 * any cached values should be re-calcuated
 	 */
 	void changedPageEncoding(int elementOffset, String newValue) {
 
 		// we don't currently track active value, since
-		// just need during read and write (where its
-		// calculated. We will need in future, to
-		// acurately clone a model and to display
+		// just need during read and write (where its 
+		// calculated. We will need in future, to 
+		// acurately clone a model and to display 
 		// "current encoding" to user in status bar.
 	}
 
 	/**
 	 * Method hasValue.
-	 * 
 	 * @param contentType
 	 * @return boolean
 	 */
@@ -346,7 +334,6 @@
 
 	/**
 	 * Returns the cachedContentType.
-	 * 
 	 * @return String
 	 */
 	public String getContentType() {
@@ -358,23 +345,14 @@
 
 	/**
 	 * Method getDefaultContentType.
-	 * 
 	 * @return String
 	 */
 	private String getDefaultContentType() {
-		String type = null;
-		IFile file = getFile(model);
-		if (file != null) {
-			type = JSPFContentProperties.getProperty(JSPFContentProperties.JSPCONTENTTYPE, file, true);
-		}
-		else
-			type = "text/html"; //$NON-NLS-1$
-		return type;
+		return "text/html"; //$NON-NLS-1$
 	}
 
 	/**
 	 * Returns the cachedLanguage.
-	 * 
 	 * @return String
 	 */
 	public String getLanguage() {
@@ -385,81 +363,62 @@
 
 	/**
 	 * Method getDefaultLanguage.
-	 * 
 	 * @return String
 	 */
 	private String getDefaultLanguage() {
-		String language = null;
-		IFile file = getFile(model);
-		if (file != null) {
-			language = JSPFContentProperties.getProperty(JSPFContentProperties.JSPLANGUAGE, file, true);
-		}
-		else
-			language = "java"; //$NON-NLS-1$
-		return language;
+		return "java"; //$NON-NLS-1$
 	}
 
 	/**
 	 * Sets the cachedContentType.
-	 * 
-	 * @param cachedContentType
-	 *            The cachedContentType to set
+	 * @param cachedContentType The cachedContentType to set
 	 */
 	public void setCachedContentType(String newContentType) {
-		// if the passed in value is the same as existing, there's nothing to
-		// do.
+		// if the passed in value is the same as existing, there's nothing to do.
 		// if its different, then we need to change the contentHandler as well
 		// and, more to the point, signal a re-initializtation is needed.
-		// Note: if the value we're getting set to does not have a handler in
-		// the registry,
-		// we'll actually not set it to null or anything, we'll just continue
-		// on with the one
-		// we have. This is pretty important to avoid re-initializing on every
-		// key stroke if someone
-		// is typing in a new content type, but haven't yet finished the whole
-		// "word".
-		// However, if an contentType is not recognized, the registry returns
-		// the one
+		// Note: if the value we're getting set to does not have a handler in the registry, 
+		// we'll actually not set it to null or anything, we'll just continue on with the one
+		// we have. This is pretty important to avoid re-initializing on every key stroke if someone 
+		// is typing in a new content type, but haven't yet finished the whole "word".
+		// However, if an contentType is not recognized, the registry returns the one 
 		// for XML.
-		// if (this.cachedContentType != null &&
-		// this.cachedContentType.equalsIgnoreCase(newContentType)) { // then
-		// do nothing
-		// } else {
+		//		if (this.cachedContentType != null && this.cachedContentType.equalsIgnoreCase(newContentType)) { // then do nothing
+		//		} else {
 		this.cachedContentType = newContentType;
 		// see if we can update embedded handler
-		// if (this.cachedContentType == null ||
-		// this.cachedContentType.length() == 0) { // do nothing, don't can't
-		// get a new handler, so we'll keep what we have
-		// } else {
+		//		if (this.cachedContentType == null || this.cachedContentType.length() == 0) { // do nothing, don't can't get a new handler, so we'll keep what we have
+		//		} else {
 
-		// getHandler should always return something (never null), based
-		// on the rules in the factory.
+		// getHandler should always return something (never null), based 
+		// on the rules in the factory. 
 		EmbeddedTypeHandler handler = getHandlerFor(this.cachedContentType);
-		// we do this check for re-init here, instead of in setEmbeddedType,
-		// since setEmbeddedType is called during the normal initializtion
+		// we do this check for re-init here, instead of in setEmbeddedType, 
+		// since setEmbeddedType is called during the normal initializtion 
 		// process, when re-init is not needed (since there is no content)
 		if (embeddedTypeHandler != null && handler != null && embeddedTypeHandler != handler) {
-			// changing this embedded handler here may
+			// changing this embedded handler here may 
 			// be in the middle of anotify loop, not sure
 			// if that'll cause problems.
-
+			
 			// be sure to hold oldHandler in temp var
 			// or else setEmbeddedType will "reset" it
 			// before modelReinitNeeded(oldHandler, handler) is called
-			EmbeddedTypeHandler oldHandler = embeddedTypeHandler;
+		    EmbeddedTypeHandler oldHandler = embeddedTypeHandler;
 			setEmbeddedType(handler);
 			modelReinitNeeded(oldHandler, handler);
 		}
-		// }
+		//		}
 
-		// }
+		//		}
 
 	}
 
 	/**
-	 * This method is used to re-init based on embeddedTypeHandler changing.
-	 * It is given priority over the language change, since there its more
-	 * important to have old and new handlers's in the stateData field.
+	 * This method is used to re-init based on embeddedTypeHandler
+	 * changing. It is given priority over the language change, since
+	 * there its more important to have old and new handlers's in the 
+	 * stateData field.
 	 */
 	private void modelReinitNeeded(EmbeddedTypeHandler oldHandler, EmbeddedTypeHandler newHandler) {
 		if (model.isReinitializationNeeded()) {
@@ -480,8 +439,7 @@
 	 * Method modelReinitNeeded.
 	 */
 	private void modelReinitNeeded(String oldlanguage, String newLanguage) {
-		// bit of a short cut for now .... we dont' need language at the
-		// moment,
+		// bit of a short cut for now .... we dont' need language at the moment, 
 		// but should set the state data
 		if (model.isReinitializationNeeded()) {
 			if (Debug.displayWarnings) {
@@ -490,7 +448,7 @@
 		}
 		else {
 			try {
-				// if already being re-initialized, we don't want to
+				// if already being re-initialized, we don't want to 
 				// reset the data in the stateData field.
 				model.aboutToChangeModel();
 				model.setReinitializeStateData(newLanguage);
@@ -503,29 +461,15 @@
 	}
 
 	public void setCachedLanguage(String newLanguage) {
-		if (cachedLanguage != null && languageStateChanged(cachedLanguage, newLanguage)) { // a
-			// complete
-			// re-init
-			// overkill
-			// in
-			// current
-			// system,
-			// since
-			// really
-			// just
-			// need
-			// for
-			// the line style providers,
-			// BUT, a change in language could effect other things,
-			// and we don't expect to happen often so a little overkill isn't
-			// too bad.
-			// The deep problem is that there is no way to get at the "edit
-			// side" adpapters
+		if (cachedLanguage != null && languageStateChanged(cachedLanguage, newLanguage)) { // a complete re-init overkill in current system, since really just need for 
+			// the line style providers, 
+			// BUT, a change in language could effect other things, 
+			// and we don't expect to happen often so a little overkill isn't too bad.
+			// The deep problem is that there is no way to get at the "edit side" adpapters
 			// specifically here in model class.
-			// we have to do the model changed sequence to get the
+			// we have to do the model changed sequence to get the 
 			// screen to update.
-			// do not signal again, if signaled once (the reinit state data
-			// will be wrong.
+			// do not signal again, if signaled once (the reinit state data will be wrong.
 			// (this needs to be improved in future)
 			if (!model.isReinitializationNeeded()) {
 				modelReinitNeeded(cachedLanguage, newLanguage);
@@ -535,8 +479,8 @@
 	}
 
 	/**
-	 * This is public access method, used especially from loader, for JSP
-	 * Fragment support.
+	 * This is public access method, used especially
+	 * from loader, for JSP Fragment support. 
 	 */
 	public void setLanguage(String newLanguage) {
 		this.cachedLanguage = newLanguage;
@@ -548,14 +492,12 @@
 
 	/**
 	 * Method languageStateChange.
-	 * 
 	 * @param cachedLanguage
 	 * @param newLanguage
 	 * @return boolean
 	 */
 	private boolean languageStateChanged(String cachedLanguage, String newLanguage) {
-		boolean result = false; // languages are equal, then no change in
-		// state
+		boolean result = false; // languages are equal, then no change in state
 		if (!cachedLanguage.equalsIgnoreCase(newLanguage)) {
 			boolean oldLanguageKnown = languageKnown(cachedLanguage);
 			boolean newLanguageKnown = languageKnown(newLanguage);
@@ -566,7 +508,6 @@
 
 	/**
 	 * Method languageKnown.
-	 * 
 	 * @param cachedLanguage
 	 * @return boolean
 	 */
@@ -576,11 +517,9 @@
 
 	private IFile getFile(IStructuredModel model) {
 		String location = model.getBaseLocation();
-		if (location != null) {
-			IPath path = new Path(location);
-			if (!path.toFile().exists() && path.segmentCount() > 1) {
-				return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-			}
+		IPath path = new Path(location);
+		if (!path.toFile().exists() && path.segmentCount() > 1) {
+			return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
 		}
 		return null;
 	}
@@ -595,7 +534,6 @@
 
 	/**
 	 * Gets the embeddedContentTypeRegistry.
-	 * 
 	 * @return Returns a EmbeddedContentTypeRegistry
 	 */
 	private EmbeddedTypeRegistry getEmbeddedContentTypeRegistry() {
@@ -603,9 +541,11 @@
 	}
 
 	/**
-	 * For JSP files, text/html is the default content type. This may want
-	 * this different for types like jsv (jsp for voice xml) For now, hard
-	 * code to new instance. In future, should get instance from registry.
+	 * For JSP files, text/html is the default 
+	 * content type. This may want this different 
+	 * for types like jsv (jsp for voice xml)
+	 * For now, hard code to new instance.
+	 * In future, should get instance from registry.
 	 * 
 	 * Specification cites HTML as the default contentType.
 	 */
@@ -613,6 +553,43 @@
 		return getHandlerFor(getDefaultContentType());
 	}
 
+	public void contentSettingsChanged(IResource resource) {
+		// Note: we currently get notified multiple times, 
+		// I assume since there's mulitple fields in the properties.
+		// For now, I'll assume that once we get notified, all the 
+		// fields are accurate, so if we're reinitializing, don't 
+		// check any further. To NOT do this causes concurrent modification
+		// exceptions. To do it, may cause us to miss when user changes
+		// two fields at once. Will need to test. 
+		if (reinitializing)
+			return;
+		if (resource == null)
+			return;
+		IFile file = getFile(model);
+		if (file == null)
+			return;
+		//        String filename = null;
+		//        if (resource.FILE == resource.getType()) {
+		//        	filename = resource.getLocation().toString();
+		//        }
+		IProject project = file.getProject();
+		if (project == null)
+			return;
+		if (!project.equals(resource.getProject()))
+			return;
+		// Note: these change notifications appear to be coming 
+		// in based on any change in project. I'm not sure how
+		// to tell if they are for my particular file, or 
+		// if there's some other error I'm making in listeners.
+		// the setters below should be smart enough 
+		// to know if a meaningful change occurred, or 
+		// not. Note: we seem to get called a lot (for resources other than our own?)
+		// with lots of 'null' values. The logic below may prevent the correct unsetting
+		// of a property (such as changing from a language setting back to 'none'). 
+		// We may need a 'none' id, or something, to help detect that case, since we can't 
+		// always assume the 'null' is accurate.
+	}
+
 	public INodeNotifier getTarget() {
 		return notifierAtCreation;
 	}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
index cdd117f..05d71b7 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslation.java
@@ -82,8 +82,6 @@
 	private IProgressMonitor fProgressMonitor = null;
 	/** lock to synchronize access to the compilation unit **/
 	private byte[] fLock = null;
-	private String fMangledName;
-	private String fJspName;
 
 	public JSPTranslation(IJavaProject javaProj, JSPTranslator translator) {
 
@@ -347,57 +345,6 @@
 		}
 		return fCompilationUnit;
 	}
-
-	private String getMangledName() {
-		return fMangledName;
-	}
-	private void setMangledName(String mangledName) {
-		fMangledName = mangledName;
-	}
-	private String getJspName() {
-		return fJspName;
-	}
-
-	private void setJspName(String jspName) {
-		fJspName = jspName;
-	}
-
-	/**
-	 * Replaces mangled (servlet) name with jsp file name.
-	 * 
-	 * @param displayString
-	 * @return
-	 */
-	public String fixupMangledName(String displayString) {
-		
-		if(displayString == null)
-			return null;
-		
-		if(getJspName() == null || getMangledName() == null) {
-			// names not set yet
-			initJspAndServletNames();
-		}
-		return displayString.replaceAll(getMangledName(), getJspName());
-	}
-
-	private void initJspAndServletNames() {
-		ICompilationUnit cu = getCompilationUnit();
-		if(cu != null) {
-			String cuName = null;
-			synchronized(cu) {
-				// set some names for fixing up mangled name in proposals
-				// set mangled (servlet) name
-				 cuName = cu.getPath().lastSegment();
-			}
-			if(cuName != null) {
-				setMangledName(cuName.substring(0, cuName.lastIndexOf('.')));
-				// set name of jsp file
-				String unmangled = JSP2ServletNameUtil.unmangle(cuName);
-				setJspName(unmangled.substring(unmangled.lastIndexOf('/') + 1, unmangled.lastIndexOf('.')));
-			}
-		}
-	}
-
 	
 	/**
 	 * Originally from ReconcileStepForJava.  Creates an ICompilationUnit from the contents of the JSP document.
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java
index 2570ea5..265259d 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationExtension.java
@@ -15,7 +15,6 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.StringTokenizer;
 
 import org.eclipse.core.filebuffers.ITextFileBuffer;
 import org.eclipse.core.resources.IFile;
@@ -29,9 +28,7 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.TextUtilities;
 import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
 import org.eclipse.text.edits.DeleteEdit;
 import org.eclipse.text.edits.InsertEdit;
 import org.eclipse.text.edits.MalformedTreeException;
@@ -39,12 +36,9 @@
 import org.eclipse.text.edits.ReplaceEdit;
 import org.eclipse.text.edits.TextEdit;
 import org.eclipse.text.edits.UndoEdit;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.FileBufferModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 
 
 /**
@@ -187,11 +181,6 @@
 				}
 				else {
 					replaceText = newJavaText.substring(deltas[i].postOffset, deltas[i].postOffset + deltas[i].postLength);
-					
-					// get rid of pre and post white space or fine tuned adjustment later.
-					// fix text here...
-					replaceText = fixJspReplaceText(replaceText, jspPos.offset);
-					
 					jspEdits.add(new ReplaceEdit(jspPos.offset, jspPos.length, replaceText));
 				}
 				if(DEBUG) 
@@ -229,109 +218,6 @@
 		return allJspEdits;
 	}
 	
-	private String fixJspReplaceText(String replaceText, int jspOffset) {
-		
-		// result is the text inbetween the delimiters
-		// eg.
-		// 
-		// <%  result 
-		// %>
-		String result = replaceText.trim();
-		String preDelimiterWhitespace = "";
-		
-		IDocument jspDoc = getJspDocument();
-		if(jspDoc instanceof IStructuredDocument) {
-			IStructuredDocument sDoc = (IStructuredDocument)jspDoc;
-			IStructuredDocumentRegion[] regions = sDoc.getStructuredDocumentRegions(0, jspOffset);
-			IStructuredDocumentRegion lastRegion = regions[regions.length-1];
-			
-			// only specifically modify scriptlets
-			if(lastRegion != null && lastRegion.getType() == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
-				for (int i = regions.length-1; i >= 0; i--) {
-					IStructuredDocumentRegion region = regions[i];
-					
-					// is there a better way to check whitespace?
-					if(region.getType() == DOMRegionContext.XML_CONTENT && region.getFullText().trim().equals("")) {
-						
-						preDelimiterWhitespace = region.getFullText();
-						preDelimiterWhitespace = preDelimiterWhitespace.replaceAll("\r", "");
-						preDelimiterWhitespace = preDelimiterWhitespace.replaceAll("\n", "");
-						
-						// need to determine indent for that first line...
-						 String initialIndent = getInitialIndent(result);
-						 
-						 // fix the first line of java code
-						result = TextUtilities.getDefaultLineDelimiter(sDoc) 
-									+ initialIndent 
-									+ result;
-						
-						result = adjustIndent(result, preDelimiterWhitespace, TextUtilities.getDefaultLineDelimiter(sDoc));
-						
-						// add whitespace before last delimiter to match
-					    // it w/ the opening delimiter
-						result = result + TextUtilities.getDefaultLineDelimiter(sDoc) + preDelimiterWhitespace;
-						break;
-					}
-				}
-			}
-		}
-		return result;
-	}
-	
-	private String adjustIndent(String textBefore, String indent, String delim) {
-		
-		// first replace multiple indent with single indent
-		// the triple indent occurs because the scriptlet code
-		// actually occurs under:
-		// 
-		//    class
-		//       method
-		//          code
-		// 
-		// in the translated java document
-		
-		textBefore = textBefore.replaceAll("\t\t\t", "\t");
-		
-		// get indent after 2nd line break
-		StringBuffer textAfter = new StringBuffer();
-		// will this work on mac?
-		textBefore = textBefore.replaceAll("\r", "");
-		StringTokenizer st = new StringTokenizer(textBefore, "\n", true);
-		while(st.hasMoreTokens()) {
-			String tok = st.nextToken();
-			if(tok.equals("\n")) {
-				textAfter.append(delim);
-			}
-			else {
-				// prepend each line w/ specified indent
-				textAfter.append(indent);
-				textAfter.append(tok);
-			}
-		}
-		return textAfter.toString();
-		
-	}
-	
-	private String getInitialIndent(String result) {
-		
-		// get indent after 2nd line break
-		String indent = "";
-		StringTokenizer st = new StringTokenizer(result, "\r\n", false);
-		if(st.countTokens() > 1) {
-			String tok = st.nextToken();
-			tok = st.nextToken();
-			int index =0;
-			if(tok != null) {
-				while(tok.charAt(index) == ' ' || tok.charAt(index) == '\t') {
-					indent += tok.charAt(index);
-					index++;
-				}
-			}
-		}
-		return indent;
-	}
-
-
 	/**
 	 * Combines an array of edits into one MultiTextEdit (with the appropriate coverage region)
 	 * @param edits
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java
index 7b64c8d..d652586 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslationUtil.java
@@ -21,8 +21,8 @@
 import org.eclipse.text.edits.MultiTextEdit;
 import org.eclipse.text.edits.ReplaceEdit;
 import org.eclipse.text.edits.TextEdit;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
index 639ec4f..41c770d 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/JSPTranslator.java
@@ -46,17 +46,17 @@
 import org.eclipse.jst.jsp.core.internal.taglib.TaglibHelperManager;
 import org.eclipse.jst.jsp.core.internal.taglib.TaglibVariable;
 import org.eclipse.jst.jsp.core.jspel.IJSPELTranslator;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.sse.core.internal.util.URIResolver;
-import org.eclipse.wst.sse.core.utils.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
 import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer;
@@ -73,23 +73,22 @@
  * @author pavery
  */
 public class JSPTranslator {
+	
+	private static final String EL_TRANSLATOR_EXTENSION_NAME = "elTranslator"; //$NON-NLS-1$ 
 
-	// the name of the element in the extension point
-	private static final String EL_TRANSLATOR_EXTENSION_NAME = "elTranslator"; //$NON-NLS-1$
-
-	private static final String ELTRANSLATOR_PROP_NAME = "ELTranslator"; //$NON-NLS-1$
+	private static final String ELTRANSLATOR_PROP_NAME = "ELTranslator"; //$NON-NLS-1$ 
 
 	// Default EL Translator
-	private static final String DEFAULT_JSP_EL_TRANSLATOR_ID = "org.eclipse.jst.jsp.defaultJSP20"; //$NON-NLS-1$
-
+	private static final String DEFAULT_JSP_EL_TRANSLATOR_ID = "org.eclipse.jst.jsp.defaultJSP20"; //$NON-NLS-1$ 
+	
 	// handy plugin ID constant
-	private static final String JSP_CORE_PLUGIN_ID = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$
+	private static final String JSP_CORE_PLUGIN_ID = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$ 
 
 	// for debugging
 	private static final boolean DEBUG;
 
 	private IJSPELTranslator fELTranslator = null;
-
+	
 	static {
 		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspjavamapping"); //$NON-NLS-1$
 		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
@@ -99,11 +98,11 @@
 
 	private String fClassHeader = "public class _JSPServlet extends "; //$NON-NLS-1$
 	private String fClassname = "_JSPServlet"; //$NON-NLS-1$
-
+    
 	private String fImplicitImports = "import javax.servlet.*;" + ENDL + //$NON-NLS-1$
-				"import javax.servlet.http.*;" + ENDL + //$NON-NLS-1$
-				"import javax.servlet.jsp.*;" + ENDL + ENDL; //$NON-NLS-1$
-
+										"import javax.servlet.http.*;" + ENDL +  //$NON-NLS-1$
+										"import javax.servlet.jsp.*;" + ENDL + ENDL; //$NON-NLS-1$
+    
 	private String fServiceHeader = "public void _jspService(javax.servlet.http.HttpServletRequest request," + //$NON-NLS-1$
 				" javax.servlet.http.HttpServletResponse response)" + ENDL + //$NON-NLS-1$
 				"\t\tthrows java.io.IOException, javax.servlet.ServletException {" + ENDL + //$NON-NLS-1$
@@ -163,7 +162,7 @@
 	protected final static int DECLARATION = 2;
 	protected final static int EXPRESSION = 4;
 	protected final static int SCRIPTLET = 8;
-
+	
 	/** used to avoid infinite looping include files */
 	private Stack fIncludes = null;
 	/** mostly for helper classes, so they parse correctly */
@@ -196,9 +195,9 @@
 	private HashMap fDeclarationRanges = new HashMap();
 
 	private HashMap fUseBeanRanges = new HashMap();
-
+	
 	private HashMap fUserELRanges = new HashMap();
-
+	
 	/**
 	 * ranges that don't directly map from java code to JSP code (eg.
 	 * <%@include file="included.jsp"%>
@@ -212,9 +211,9 @@
 	 * the file or strucdtured document depending what is available
 	 */
 	private StringBuffer fJspTextBuffer = new StringBuffer();
+	
 
-
-	/**
+	/** 
 	 * List of EL problems to be translated
 	 */
 	private ArrayList fELProblems = new ArrayList();
@@ -235,8 +234,10 @@
 		fProgressMonitor = monitor;
 		fStructuredModel = node.getModel();
 		String baseLocation = fStructuredModel.getBaseLocation();
-
+		
 		fELTranslatorID = getELTranslatorProperty(baseLocation);
+		
+		// fPositionNode = node;
 
 		fStructuredDocument = fStructuredModel.getStructuredDocument();
 
@@ -259,9 +260,8 @@
 		// fStructuredModel, fPositionNode, fModelQuery, fStructuredDocument
 		// are all null
 		fProgressMonitor = monitor;
-
+		
 		fELTranslatorID = getELTranslatorProperty(jspFile);
-
 		String className = createClassname(jspFile);
 		if (className.length() > 0) {
 			setClassname(className);
@@ -294,46 +294,39 @@
 	}
 
 	/**
-	 * Get the value of the ELTranslator property from a workspace relative
+	 * Get the value of the ELTranslator property from a workspace relative 
 	 * path string
 	 * 
-	 * @param baseLocation
-	 *            Workspace-relative string path
+	 * @param baseLocation Workspace-relative string path
 	 * @return Value of the ELTranslator property associated with the project.
 	 */
-	private String getELTranslatorProperty(String baseLocation) {
+	private String getELTranslatorProperty(String baseLocation){
 		IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
 		String elTranslatorValue = null;
 		IFile file = workspaceRoot.getFile(new Path(baseLocation));
-		if (file != null) {
-			elTranslatorValue = getELTranslatorProperty(file);
-		}
+		elTranslatorValue = getELTranslatorProperty(file);
 		return elTranslatorValue;
 	}
 
 	/**
 	 * Get the value of the ELTranslator property from an IFile
-	 * 
-	 * @param file
-	 *            IFile
+	 *  
+	 * @param file IFile 
 	 * @return Value of the ELTranslator property associated with the project.
 	 */
 	private String getELTranslatorProperty(IFile file) {
 		String elTranslatorValue = null;
-		if (file != null) {
-			if (file.exists()) {
-				try {
-					elTranslatorValue = file.getPersistentProperty(new QualifiedName(JSP_CORE_PLUGIN_ID, ELTRANSLATOR_PROP_NAME));
-					if (null == elTranslatorValue) {
-
-						elTranslatorValue = file.getProject().getPersistentProperty(new QualifiedName(JSP_CORE_PLUGIN_ID, ELTRANSLATOR_PROP_NAME));
-					}
-				}
-				catch (CoreException e) {
-					// ISSUE: why do we log this here? Instead of allowing to throwup?
-					Logger.logException(e);
-				}
-
+		try {
+			elTranslatorValue = file.getPersistentProperty(new QualifiedName(JSP_CORE_PLUGIN_ID, ELTRANSLATOR_PROP_NAME)); //$NON-NLS-1$
+		} catch (CoreException e) {
+			Logger.logException(e);
+		}
+		
+		if(null == elTranslatorValue) {
+			try {
+				elTranslatorValue = file.getProject().getPersistentProperty(new QualifiedName(JSP_CORE_PLUGIN_ID, ELTRANSLATOR_PROP_NAME)); //$NON-NLS-1$
+			} catch (CoreException e) {
+				Logger.logException(e);
 			}
 		}
 		return elTranslatorValue;
@@ -447,9 +440,9 @@
 		fIndirectRanges.clear();
 
 		fJspTextBuffer = new StringBuffer();
-
+		
 		fELProblems = new ArrayList();
-
+		
 	}
 
 	/**
@@ -483,12 +476,12 @@
 					+ fUserCode.length() + fTryCatchEnd.length() // try/catch
 					// end
 					+ fFooter.length());
-
+		
 		int javaOffset = 0;
-
+		
 		fResult.append(fImplicitImports);
 		javaOffset += fImplicitImports.length();
-
+		
 		// updateRanges(fIndirectImports, javaOffset);
 		updateRanges(fImportRanges, javaOffset);
 		// user imports
@@ -505,7 +498,7 @@
 		// user declarations
 		append(fUserDeclarations);
 		javaOffset += fUserDeclarations.length();
-
+		
 		updateRanges(fUserELRanges, javaOffset);
 		append(fUserELExpressions);
 		javaOffset += fUserELExpressions.length();
@@ -540,7 +533,7 @@
 		fJava2JspRanges.putAll(fDeclarationRanges);
 		fJava2JspRanges.putAll(fCodeRanges);
 		fJava2JspRanges.putAll(fUserELRanges);
-
+		
 	}
 
 	/**
@@ -637,13 +630,13 @@
 
 	/**
 	 * Only valid after a configure(...), translate(...) or
-	 * translateFromFile(...) call
+	 * translateFromFile(...) call	
 	 * 
 	 * @return the current result (java translation) buffer
 	 */
 	public final StringBuffer getTranslation() {
 
-		if (DEBUG) {
+		if (DEBUG) {	
 			StringBuffer debugString = new StringBuffer();
 			try {
 				Iterator it = fJava2JspRanges.keySet().iterator();
@@ -663,7 +656,7 @@
 					debugString.append("\n"); //$NON-NLS-1$
 				}
 			}
-			catch (Exception e) {
+			catch(Exception e) {
 				Logger.logException("JSPTranslation error", e); //$NON-NLS-1$
 			}
 			Logger.log(Logger.INFO_DEBUG, debugString.toString());
@@ -681,13 +674,13 @@
 	public final String getJspText() {
 		return fJspTextBuffer.toString();
 	}
-
+	
 	protected void addTaglibVariables(String tagToAdd) {
 		IFile f = getFile();
-
-		if (f == null || !f.exists())
+		
+		if(f == null || !f.exists()) 
 			return;
-
+		
 		TaglibHelper helper = TaglibHelperManager.getInstance().getTaglibHelper(f);
 		IStructuredDocumentRegion customTag = getCurrentNode();
 		TaglibVariable[] taglibVars = helper.getTaglibVariables(tagToAdd, getStructuredDocument(), customTag);
@@ -697,16 +690,16 @@
 			appendToBuffer(decl, fUserCode, false, fCurrentNode);
 		}
 	}
-
+	
 	private IFile getFile() {
 		IFile f = null;
 		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(getStructuredDocument());
 		try {
-			if (sModel != null)
+			if(sModel != null) 
 				f = FileBuffers.getWorkspaceFileAtLocation(new Path(sModel.getBaseLocation()));
 		}
 		finally {
-			if (sModel != null)
+			if(sModel != null)
 				sModel.releaseFromRead();
 		}
 		return f;
@@ -815,13 +808,13 @@
 
 		// custom tags need their own scope {}
 		handleScopingIfNecessary(containerRegion);
-
+		
 		Iterator regions = containerRegion.getRegions().iterator();
 		ITextRegion region = null;
 		while (regions.hasNext()) {
-
+			
 			region = (ITextRegion) regions.next();
-
+			
 			String type = region.getType();
 
 			// content assist was not showing up in JSP inside a javascript
@@ -857,31 +850,31 @@
 		// code within a custom tag gets its own scope
 		// so if we encounter a start of a custom tag, we add '{'
 		// and for the end of a custom tag we add '}'
-		if (containerRegion.getFirstRegion().getType() == DOMRegionContext.XML_TAG_OPEN) {
+		if(containerRegion.getFirstRegion().getType() == DOMRegionContext.XML_TAG_OPEN) {
 			// don't add '{' if it's a self closing tag
-			if (!isSelfClosingTag(containerRegion)) {
-				if (isCustomTag(containerRegion)) {
+			if(!isSelfClosingTag(containerRegion)) {
+				if(isCustomTag(containerRegion)) {
 					startScope();
 				}
 			}
 		}
-		else if (containerRegion.getFirstRegion().getType() == DOMRegionContext.XML_END_TAG_OPEN) {
-			if (isCustomTag(containerRegion)) {
+		else if(containerRegion.getFirstRegion().getType() == DOMRegionContext.XML_END_TAG_OPEN) {
+			if(isCustomTag(containerRegion)) {
 				endScope();
 			}
 		}
 	}
 
 	private void startScope() {
-		// fScopeDepth++;
+		//fScopeDepth++;
 		StringBuffer text = new StringBuffer();
-		// for(int i=0; i<fScopeDepth; i++) text.append(" "); //$NON-NLS-1$
+		//for(int i=0; i<fScopeDepth; i++) text.append(" "); //$NON-NLS-1$
 		text.append("{ // <"); //$NON-NLS-1$
 		text.append(getRegionName(fCurrentNode));
 		text.append(">\n"); //$NON-NLS-1$
 		appendToBuffer(text.toString(), fUserCode, false, fCurrentNode); //$NON-NLS-1$
 	}
-
+	
 	private void endScope() {
 		StringBuffer text = new StringBuffer();
 		text.append("} // </"); //$NON-NLS-1$
@@ -889,42 +882,41 @@
 		text.append(">\n"); //$NON-NLS-1$
 		appendToBuffer(text.toString(), fUserCode, false, fCurrentNode); //$NON-NLS-1$
 	}
-
+	
 	private boolean isSelfClosingTag(ITextRegionCollection containerRegion) {
-
-		if (containerRegion == null)
+		
+		if(containerRegion == null)
 			return false;
-
+		
 		ITextRegionList regions = containerRegion.getRegions();
-		ITextRegion r = regions.get(regions.size() - 1);
+		ITextRegion r = regions.get(regions.size()-1);
 		return r.getType() == DOMRegionContext.XML_EMPTY_TAG_CLOSE;
 	}
 
 	private boolean isCustomTag(ITextRegionCollection containerRegion) {
 		String tagName = getRegionName(containerRegion);
-
-		if (tagName == null)
+		
+		if(tagName == null)
 			return false;
-
-		if (tagName.indexOf(":") > 0 && !tagName.startsWith("jsp")) //$NON-NLS-1$  //$NON-NLS-2$
+		
+		if(tagName.indexOf(":") > 0 && !tagName.startsWith("jsp"))  //$NON-NLS-1$  //$NON-NLS-2$
 			return true;
-
+		
 		return false;
 	}
-
+	
 	private String getRegionName(ITextRegionCollection containerRegion) {
 		ITextRegionList regions = containerRegion.getRegions();
 		ITextRegion nameRegion = null;
 		for (int i = 0; i < regions.size(); i++) {
 			ITextRegion r = regions.get(i);
-			if (r.getType() == DOMRegionContext.XML_TAG_NAME) {
+			if(r.getType() == DOMRegionContext.XML_TAG_NAME) {
 				nameRegion = r;
 				break;
 			}
 		}
 		return nameRegion != null ? containerRegion.getText(nameRegion).trim() : null;
 	}
-
 	/*
 	 * ////////////////////////////////////////////////////////////////////////////////// **
 	 * TEMP WORKAROUND FOR CMVC 241882 Takes a String and blocks out
@@ -941,6 +933,7 @@
 		helper.reset(blockText, startOfBlock);
 		// force parse
 		helper.forceParse();
+		helper.writeToBuffers();
 	}
 
 	/*
@@ -996,7 +989,7 @@
 		if (regions.hasNext()) {
 			r = (ITextRegion) regions.next();
 			// <jsp:directive.xxx > comes in as this
-			if (r.getType() == DOMRegionContext.XML_TAG_NAME || r.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME)
+			if (r.getType() == DOMRegionContext.XML_TAG_NAME || r.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) 
 
 			{
 				String fullTagName = container.getFullText(r).trim();
@@ -1008,7 +1001,7 @@
 				{
 					if (st.hasMoreTokens()) {
 						String jspTagName = st.nextToken();
-
+						
 						if (jspTagName.equals("scriptlet")) //$NON-NLS-1$
 						{
 							translateXMLJSPContent(SCRIPTLET);
@@ -1032,7 +1025,7 @@
 								else if (directiveName.equals("include")) { //$NON-NLS-1$
 
 									String fileLocation = ""; //$NON-NLS-1$
-
+									
 									// skip to required "file" attribute,
 									// should be safe because
 									// "file" is the only attribute for the
@@ -1053,7 +1046,7 @@
 									// setCurrentNode(getCurrentNode().getNext());
 									if (getCurrentNode() != null) {
 										// 'regions' contain the attrs
-										translatePageDirectiveAttributes(regions);
+										translatePageDirectiveAttributes(regions); 
 									}
 								}
 							}
@@ -1062,25 +1055,25 @@
 							// <jsp:include page="filename") />
 							checkAttributeValueContainer(regions, "page"); //$NON-NLS-1$
 						}
-						else if (jspTagName.equals("forward")) { //$NON-NLS-1$
+						else if(jspTagName.equals("forward")) { //$NON-NLS-1$
 							checkAttributeValueContainer(regions, "page"); //$NON-NLS-1$
 						}
-						else if (jspTagName.equals("param")) { //$NON-NLS-1$
+						else if(jspTagName.equals("param")) { //$NON-NLS-1$
 							checkAttributeValueContainer(regions, "value"); //$NON-NLS-1$
 						}
-						else if (jspTagName.equals("setProperty")) { //$NON-NLS-1$
+						else if(jspTagName.equals("setProperty")) { //$NON-NLS-1$
 							checkAttributeValueContainer(regions, "value"); //$NON-NLS-1$
 						}
 						else if (jspTagName.equals("useBean")) //$NON-NLS-1$
 						{
 							checkAttributeValueContainer(regions, "name"); //$NON-NLS-1$
 							// https://bugs.eclipse.org/bugs/show_bug.cgi?id=103004
-							// advanceNextNode(); // get the content
+							//advanceNextNode(); // get the content
 							if (getCurrentNode() != null) {
 								translateUseBean(container); // 'regions'
 							}
 						}
-
+	
 					}
 				}
 				else {
@@ -1089,7 +1082,6 @@
 			}
 		}
 	}
-
 	/**
 	 * translates embedded containers for ALL attribute values
 	 * 
@@ -1126,10 +1118,9 @@
 			}
 		}
 	}
-
+	
 	/**
 	 * translates embedded container for specified attribute
-	 * 
 	 * @param regions
 	 * @param attrName
 	 */
@@ -1139,51 +1130,59 @@
 			r = (ITextRegion) regions.next();
 			if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME && getCurrentNode().getText(r).equals(attrName)) { //$NON-NLS-1$
 				// skip to attribute value
-				while (regions.hasNext() && (r = (ITextRegion) regions.next()) != null) {
-					if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)
+				while((r = (ITextRegion)regions.next()) != null) {
+					if( r.getType() ==  DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE)
 						break;
 				}
 				// forces embedded region to be translated
-				if (r instanceof ContextRegionContainer) {
-					translateEmbeddedJSPInAttribute((ContextRegionContainer) r);
+				if(r instanceof ContextRegionContainer) {
+					translateEmbeddedJSPInAttribute((ContextRegionContainer)r);
 				}
 				break;
 			}
 		}
 	}
-
-	/*
+	
+	/* 
 	 * example:
 	 * 
-	 * <jsp:scriptlet>scriptlet jsp-java content <![CDATA[ more jsp java ]]>
-	 * jsp-java content... <![CDATA[ more jsp java ]]> </jsp:scriptlet>
-	 * 
+	 * <jsp:scriptlet>scriptlet
+	 * jsp-java content
+	 * <![CDATA[ 
+	 *   more jsp java
+	 *  ]]>
+	 * jsp-java content...
+	 *   <![CDATA[ 
+	 *      more jsp java
+	 *    ]]>
+	 * </jsp:scriptlet>
+	 *
 	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=93366
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=88590 translate
-	 * everything inbetween <scriptlet> tags, which may be more than one
-	 * region (esp. CDATA)
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=88590
+	 * translate everything inbetween <scriptlet> tags, which may 
+	 * be more than one region (esp. CDATA)
 	 * 
 	 */
 	private void translateXMLJSPContent(int type) {
-
+		
 		IStructuredDocumentRegion sdr = getCurrentNode().getNext();
 		int start = sdr.getStartOffset();
 		int end = sdr.getEndOffset();
 		String sdrText = ""; //$NON-NLS-1$
-
-		// read structured document regions until
+		
+		// read structured document regions until 
 		// </jsp:scriptlet> or EOF
-		while (sdr != null && sdr.getType() != DOMRegionContext.XML_TAG_NAME) {
-
+		while(sdr != null && sdr.getType() != DOMRegionContext.XML_TAG_NAME) {
+			
 			// setup for next region
 			start = sdr.getStartOffset();
 			sdrText = sdr.getText();
-
-			if (sdr.getType() == DOMRegionContext.XML_CDATA_TEXT) {
-
+			
+			if(sdr.getType() == DOMRegionContext.XML_CDATA_TEXT){
+				
 				// just to be safe, make sure CDATA start & end are there
-				if (sdrText.startsWith("<![CDATA[") && sdrText.endsWith("]]>")) { //$NON-NLS-1$ //$NON-NLS-2$
-
+				if(sdrText.startsWith("<![CDATA[") && sdrText.endsWith("]]>")) { //$NON-NLS-1$ //$NON-NLS-2$
+					
 					start = sdr.getStartOffset() + 9; // <![CDATA[
 					end = sdr.getEndOffset() - 3; // ]]>
 					sdrText = sdrText.substring(9, sdrText.length() - 3);
@@ -1191,9 +1190,9 @@
 				}
 			}
 			else {
-
+				
 				// handle entity references
-				sdrText = EscapedTextUtil.getUnescapedText(sdrText);
+				sdrText = EscapedTextUtil.getUnescapedText(sdrText);		
 				end = sdr.getEndOffset();
 				writeToBuffer(type, sdrText, start, end);
 			}
@@ -1204,15 +1203,15 @@
 	}
 
 	private void writeToBuffer(int type, String content, int jspStart, int jspEnd) {
-		switch (type) {
-			case SCRIPTLET :
-				translateScriptletString(content, getCurrentNode(), jspStart, jspEnd - jspStart);
+		switch(type) {
+			case SCRIPTLET:
+				translateScriptletString(content, getCurrentNode(), jspStart, jspEnd-jspStart);
 				break;
-			case EXPRESSION :
-				translateExpressionString(content, getCurrentNode(), jspStart, jspEnd - jspStart);
+			case EXPRESSION:
+				translateExpressionString(content, getCurrentNode(), jspStart, jspEnd-jspStart);
 				break;
-			case DECLARATION :
-				translateDeclarationString(content, getCurrentNode(), jspStart, jspEnd - jspStart);
+			case DECLARATION:
+				translateDeclarationString(content, getCurrentNode(), jspStart, jspEnd-jspStart);
 				break;
 		}
 	}
@@ -1271,67 +1270,57 @@
 				setCursorOwner(getJSPTypeForRegion(region));
 			}
 		}
-	}
+ }
 
-
+	
 	private void translateEL(String elText, String delim, IStructuredDocumentRegion currentNode, int contentStart, int contentLength) {
 		IJSPELTranslator translator = getELTranslator();
-		if (null != translator) {
+		if(null != translator) {
 			translator.translateEL(elText, delim, currentNode, contentStart, contentLength, fUserELExpressions, fUserELRanges, fStructuredDocument);
 		}
 	}
-
+	
 	/**
 	 * Discover and instantiate an EL translator.
 	 */
 	public IJSPELTranslator getELTranslator() {
-		if (fELTranslator == null) {
+		if(fELTranslator == null) {
+			
+			IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(
+					JSP_CORE_PLUGIN_ID, // name of plugin that exposes this extension point
+					EL_TRANSLATOR_EXTENSION_NAME); // - extension id
 
-			IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(JSP_CORE_PLUGIN_ID, // name
-						// of
-						// plugin
-						// that
-						// exposes
-						// this
-						// extension
-						// point
-						EL_TRANSLATOR_EXTENSION_NAME); // - extension id
-
-			// Iterate over all declared extensions of this extension point.
-			// A single plugin may extend the extension point more than once,
-			// although it's not recommended.
+			// Iterate over all declared extensions of this extension point.  
+			// A single plugin may extend the extension point more than once, although it's not recommended.
 			IConfigurationElement bestTranslator = null;
 			IExtension[] extensions = extensionPoint.getExtensions();
-			for (int curExtension = 0; curExtension < extensions.length; curExtension++) {
+			for(int curExtension=0; curExtension < extensions.length; curExtension++) {
 				IExtension extension = extensions[curExtension];
-
+				
 				IConfigurationElement[] translators = extension.getConfigurationElements();
-				for (int curTranslator = 0; curTranslator < translators.length; curTranslator++) {
-
+				for(int curTranslator = 0; curTranslator < translators.length; curTranslator++) {
+					
 					IConfigurationElement elTranslator = translators[curTranslator];
-
-					if (!EL_TRANSLATOR_EXTENSION_NAME.equals(elTranslator.getName())) { // -
-						// name
-						// of
-						// configElement
+					
+					if (!EL_TRANSLATOR_EXTENSION_NAME.equals(elTranslator.getName())) { // - name of configElement 
 						continue;
 					}
-
+					
 					String idString = elTranslator.getAttribute("id"); //$NON-NLS-1$
-					if (null != idString && idString.equals(fELTranslatorID) || (null == bestTranslator && DEFAULT_JSP_EL_TRANSLATOR_ID.equals(idString))) {
+					if(null != idString && idString.equals(fELTranslatorID) || 
+							(null == bestTranslator && DEFAULT_JSP_EL_TRANSLATOR_ID.equals(idString))) {
 						bestTranslator = elTranslator;
 					}
 				}
 			}
 
-			if (null != bestTranslator) {
+			if(null != bestTranslator) {
 				try {
 					Object execExt = bestTranslator.createExecutableExtension("class"); //$NON-NLS-1$
 					if (execExt instanceof IJSPELTranslator) {
-						return fELTranslator = (IJSPELTranslator) execExt;
-					}
-				}
-				catch (CoreException e) {
+						return fELTranslator = (IJSPELTranslator)execExt;
+					} 
+				} catch (CoreException e) {
 					Logger.logException(e);
 				}
 			}
@@ -1362,7 +1351,7 @@
 	 * for example: <a href="index.jsp?p=<%=abc%>b=<%=xyz%>">abc</a>
 	 */
 	private void translateEmbeddedJSPInAttribute(ITextRegionCollection embeddedContainer) {
-		// THIS METHOD IS A FIX FOR
+		// THIS METHOD IS A FIX FOR 
 		// jsp embedded in attribute regions
 		// loop all regions
 		ITextRegionList embeddedRegions = embeddedContainer.getRegions();
@@ -1380,7 +1369,7 @@
 				String regionType = embeddedRegions.get(i + 1).getType();
 				if (regionType == DOMJSPRegionContexts.JSP_CONTENT || regionType == DOMJSPRegionContexts.JSP_EL_CONTENT)
 					content = embeddedRegions.get(i + 1);
-
+				
 			}
 
 			if (content != null) {
@@ -1394,23 +1383,19 @@
 
 				if (type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN) {
 					fLastJSPType = EXPRESSION;
-					// translateExpressionString(embeddedContainer.getText(content),
-					// fCurrentNode, contentStart, content.getLength());
+					//translateExpressionString(embeddedContainer.getText(content), fCurrentNode, contentStart, content.getLength());
 					translateExpressionString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength());
 				}
 				else if (type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN) {
 					fLastJSPType = SCRIPTLET;
-					// translateScriptletString(embeddedContainer.getText(content),
-					// fCurrentNode, contentStart, content.getLength());
+					//translateScriptletString(embeddedContainer.getText(content), fCurrentNode, contentStart, content.getLength());
 					translateScriptletString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength());
 				}
 				else if (type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN) {
 					fLastJSPType = DECLARATION;
-					// translateDeclarationString(embeddedContainer.getText(content),
-					// fCurrentNode, contentStart, content.getLength());
+					//translateDeclarationString(embeddedContainer.getText(content), fCurrentNode, contentStart, content.getLength());
 					translateDeclarationString(embeddedContainer.getText(content), embeddedContainer, contentStart, content.getLength());
-				}
-				else if (type == DOMJSPRegionContexts.JSP_EL_OPEN) {
+				} else if (type == DOMJSPRegionContexts.JSP_EL_OPEN) {
 					fLastJSPType = EXPRESSION;
 					translateEL(embeddedContainer.getText(content), embeddedContainer.getText(delim), fCurrentNode, contentStart, content.getLength());
 				}
@@ -1520,10 +1505,9 @@
 			while (it.hasNext()) {
 				tracker = (CMDocumentTracker) it.next();
 				sdRegion = tracker.getStructuredDocumentRegion();
-				// since may be call from another thread (like a background
-				// job)
+				// since may be call from another thread (like a background job)
 				// this check is to be safer
-				if (sdRegion != null && !sdRegion.isDeleted()) {
+				if(sdRegion != null && !sdRegion.isDeleted()) {
 					taglibRegions = sdRegion.getRegions().iterator();
 					while (sdRegion != null && !sdRegion.isDeleted() && taglibRegions.hasNext()) {
 						r = (ITextRegion) taglibRegions.next();
@@ -1650,6 +1634,7 @@
 				getIncludes().push(fileLocation);
 				JSPIncludeRegionHelper helper = new JSPIncludeRegionHelper(this);
 				helper.parse(fileLocation);
+				helper.writeToBuffers();
 				getIncludes().pop();
 			}
 		}
@@ -1755,9 +1740,9 @@
 	 * @param addToMap
 	 */
 	private void appendToBuffer(String newText, StringBuffer buffer, boolean addToMap, ITextRegionCollection jspReferenceRegion, int jspPositionStart, int jspPositionLength, boolean isIndirect) {
-
+		
 		int origNewTextLength = newText.length();
-
+		
 		// nothing to append
 		if (jspReferenceRegion == null)
 			return;
@@ -1816,9 +1801,6 @@
 		boolean isUseBean = false;
 		for (int i = 0; i < regions.size(); i++) {
 			r = regions.get(i);
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=128490
-			// length of 11 is the length of jsp:useBean
-			// and saves the expensive getText.equals call
 			if(r.getType() == DOMRegionContext.XML_TAG_NAME) {
 				if (r.getTextLength() == 11 && jspReferenceRegion.getText(r).equals("jsp:useBean")) { //$NON-NLS-1$
 					isUseBean = true;
@@ -2172,7 +2154,7 @@
 		}
 		else if (r != null && r.getType() == DOMRegionContext.XML_CDATA_TEXT) {
 			if (r instanceof ITextRegionContainer) // only interested in
-			// contents
+													// contents
 			{
 				// navigate to next region container (which should be a JSP
 				// region)
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
index 583ec8c..6a7ae9d 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/XMLJSPRegionHelper.java
@@ -11,6 +11,7 @@
 package org.eclipse.jst.jsp.core.internal.java;
 
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
@@ -20,7 +21,6 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jst.jsp.core.internal.Logger;
 import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
 import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
 import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandler;
@@ -29,7 +29,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
 import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
@@ -47,6 +47,10 @@
 	protected String fTextToParse = null;
 	// need this if not at the start of the document (eg. parsing just a script block)
 	protected int fStartOfTextToParse = 0;
+	// buffers for text that this class parses	
+	protected List fScriptlets = new ArrayList();
+	protected List fExpressions = new ArrayList();
+	protected List fDeclarations = new ArrayList();
 	// name of the open tag that was last handled (if we are interested in it)
 	protected String fTagname = null;
 	protected String fTextBefore = ""; //$NON-NLS-1$
@@ -100,6 +104,23 @@
 		forceParse();
 	}
 
+	/*
+	 * writes out scriptlet, expression, and declaration buffers
+	 * to the ongoing buffers in the JSPTranslator (calls to outer JSPTranslator methods)
+	 */
+	public void writeToBuffers() {
+		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
+		// currentNode should be the <%@page include="xxx"%> StructuredDocumentRegion
+		for (int i = 0; i < fScriptlets.size(); i++) {
+			this.fTranslator.translateScriptletString((String) fScriptlets.get(i), currentNode, currentNode.getStartOffset(), currentNode.getLength());
+		}
+		for (int i = 0; i < fExpressions.size(); i++) {
+			this.fTranslator.translateExpressionString((String) fExpressions.get(i), currentNode, currentNode.getStartOffset(), currentNode.getLength());
+		}
+		for (int i = 0; i < fDeclarations.size(); i++) {
+			this.fTranslator.translateDeclarationString((String) fDeclarations.get(i), currentNode, currentNode.getStartOffset(), currentNode.getLength());
+		}
+	}
 
 	/*
 	 * listens to parser node parsed events
@@ -118,23 +139,8 @@
 					fTagname = nameStr;
 				else
 					fTagname = null;
-				
-
-				// this section assumes important content (to translate)
-				// IS the opening tag
-				
-				// handle include and directive
-				if(fTagname != null && sdRegion.getFirstRegion().getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN) {
-					processOtherRegions(sdRegion);	
-				}
-				// handle jsp:useBean
-				if(fTagname != null && fTagname.equals(JSP11Namespace.ElementName.USEBEAN)) {
-					processUseBean(sdRegion);
-				}
 			}
 			else if (sdRegion.getFirstRegion().getType() == DOMJSPRegionContexts.JSP_CONTENT || sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_CONTENT) {
-				// this section assumes important content (to translate)
-				// is AFTER the opening tag
 				if (fTagname != null) {
 					// assign contents to one of the tables
 					if (isScriptlet(fTagname)) {
@@ -146,8 +152,20 @@
 					else if (isDeclaration(fTagname)) {
 						processDeclaration(sdRegion);
 					}
+					else {
+						if (fTagname != null) {
+							processUseBean(sdRegion);
+							processOtherRegions(sdRegion);
+						}
+					}
 				}
 			}
+//			else if (sdRegion.getFirstRegion().getType() == DOMRegionContext.XML_CONTENT) {
+//				if (fTagname != null) {
+//					processUseBean(sdRegion);
+//					processOtherRegions(sdRegion);
+//				}
+//			}
 			else {
 				fTagname = null;
 			}
@@ -199,23 +217,23 @@
 	}
 
 	private void startScope(String tagName) {
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
+		//IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
 		StringBuffer text = new StringBuffer();
 		text.append("{ // <"); //$NON-NLS-1$
 		text.append(tagName);
 		text.append(">\n"); //$NON-NLS-1$
-		this.fTranslator.translateScriptletString(text.toString(), currentNode, currentNode.getStartOffset(), currentNode.getLength()); //$NON-NLS-1$
-
+		//this.fTranslator.translateScriptletString(text.toString(), currentNode, currentNode.getStartOffset(), currentNode.getLength()); //$NON-NLS-1$
+		fScriptlets.add(text.toString());
 	}
 
 	private void endScope(String tagName) {
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
+		//IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
 		StringBuffer text = new StringBuffer();
 		text.append("} // </"); //$NON-NLS-1$
 		text.append(tagName);
 		text.append(">\n"); //$NON-NLS-1$
-		this.fTranslator.translateScriptletString(text.toString(), currentNode, currentNode.getStartOffset(), currentNode.getLength()); //$NON-NLS-1$
-
+		//this.fTranslator.translateScriptletString(text.toString(), currentNode, currentNode.getStartOffset(), currentNode.getLength()); //$NON-NLS-1$
+		fScriptlets.add(text.toString());
 	}
 
 	public void resetNodes() {
@@ -242,22 +260,19 @@
 
 	protected void processDeclaration(IStructuredDocumentRegion sdRegion) {
 		prepareText(sdRegion);
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-		this.fTranslator.translateDeclarationString(fStrippedText, currentNode, currentNode.getStartOffset(), currentNode.getLength());
+		fDeclarations.add(fStrippedText);
 		fPossibleOwner = JSPTranslator.DECLARATION;
 	}
 
 	protected void processExpression(IStructuredDocumentRegion sdRegion) {
 		prepareText(sdRegion);
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-		this.fTranslator.translateExpressionString(fStrippedText, currentNode, currentNode.getStartOffset(), currentNode.getLength());
+		fExpressions.add(fStrippedText);
 		fPossibleOwner = JSPTranslator.EXPRESSION;
 	}
 
 	protected void processScriptlet(IStructuredDocumentRegion sdRegion) {
 		prepareText(sdRegion);
-		IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-		this.fTranslator.translateScriptletString(fStrippedText, currentNode, currentNode.getStartOffset(), currentNode.getLength());
+		fScriptlets.add(fStrippedText);
 		fPossibleOwner = JSPTranslator.SCRIPTLET;
 	}
 
@@ -274,7 +289,8 @@
 
 	protected void processUseBean(IStructuredDocumentRegion sdRegion) {
 		if (fTagname != null && isUseBean(fTagname)) {
-
+			// previous region has the actual attributes
+			sdRegion = sdRegion.getPrevious();
 			String beanClass, beanType, beanId, beanDecl = ""; //$NON-NLS-1$
 			beanClass = getAttributeValue("class", sdRegion); //$NON-NLS-1$
 			beanType = getAttributeValue("type", sdRegion); //$NON-NLS-1$
@@ -289,9 +305,8 @@
 					suffix = "new " + beanClass + "();\n"; //$NON-NLS-1$ //$NON-NLS-2$
 				beanDecl = prefix + suffix;
 			}	
-
-			IStructuredDocumentRegion currentNode = fTranslator.getCurrentNode();
-			this.fTranslator.translateScriptletString(beanDecl, currentNode, currentNode.getStartOffset(), currentNode.getLength());
+			
+			fScriptlets.add(beanDecl);
 			fPossibleOwner = JSPTranslator.SCRIPTLET;
 		}
 	}
@@ -367,7 +382,7 @@
 		while (it.hasNext()) {
 			nameRegion = (ITextRegion) it.next();
 			if (nameRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-				textRegionText = sdRegionText.substring(nameRegion.getStart(), nameRegion.getTextEnd());
+				textRegionText = sdRegionText.substring(nameRegion.getStart(), nameRegion.getEnd());
 				if (textRegionText.equalsIgnoreCase(attrName)) {
 					while (it.hasNext()) {
 						valueRegion = (ITextRegion) it.next();
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
index e488b6a..8c92898 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/ELGeneratorVisitor.java
@@ -68,7 +68,7 @@
 	private StringBuffer fResult;
 	private Map fCodeMap;
 	private int fOffsetInUserCode;
-	private static int methodCounter = 0;
+	private int methodCounter = 0;
 	private IStructuredDocument fDocument = null;
 	private int fContentStart;
 	private static Map fOperatorMap;
@@ -199,10 +199,6 @@
 		return(node.childrenAccept(this, data));
 	}
 
-	static synchronized int getMethodCounter() {
-		return methodCounter++;
-	}
-	
 	/**
 	 * Handle top-level expression
 	 */
@@ -210,7 +206,7 @@
 		int start = node.getFirstToken().beginColumn - 1;
 		int end = node.lastToken.endColumn - 1;
 		append(fExpressionHeader1, start, start);
-		append(Integer.toString(getMethodCounter()), start, start);
+		append(Integer.toString(methodCounter++), start, start);
 		append(fExpressionHeader2, start, start);
 		
 		Object retval = node.childrenAccept(this, data);
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
index cc1e711..74a473d 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/jspel/JSPELParserTokenManager.java
@@ -372,8 +372,7 @@
       if (curChar < 64)
       {
          long l = 1L << curChar;
-        // MatchLoop: 
-        	 do
+         do
          {
             switch(jjstateSet[--i])
             {
@@ -542,8 +541,7 @@
       else if (curChar < 128)
       {
          long l = 1L << (curChar & 077);
-         //MatchLoop: 
-        	 do
+         do
          {
             switch(jjstateSet[--i])
             {
@@ -623,8 +621,7 @@
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;
          long l2 = 1L << (curChar & 077);
-         //MatchLoop: 
-        	 do
+         do
          {
             switch(jjstateSet[--i])
             {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java
index 1964108..1db9f99 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchDocument.java
@@ -28,10 +28,10 @@
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapterFactory;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.exceptions.UnsupportedCharsetExceptionWithDetail;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
@@ -51,9 +51,7 @@
 	private String fJSPPathString = UNKNOWN_PATH;
 	private String fCUPath = UNKNOWN_PATH;
 	private SearchParticipant fParticipant = null;
-	private long fLastModifiedStamp;
-	private char[] fCachedCharContents;
-	
+
 	/**
 	 * @param file
 	 * @param participant
@@ -73,13 +71,8 @@
 	 * @see org.eclipse.jdt.core.search.SearchDocument#getCharContents()
 	 */
 	public char[] getCharContents() {
-		
-		if(fCachedCharContents == null || isDirty()) {
-		    JSPTranslation trans = getJSPTranslation();    
-		    fCachedCharContents = trans != null ? trans.getJavaText().toCharArray() : new char[0];
-		    fCUPath = trans.getJavaPath();
-		}
-		return fCachedCharContents;
+		JSPTranslation trans = getJSPTranslation();
+		return trans != null ? trans.getJavaText().toCharArray() : new char[0];
 	}
 
 	public String getJavaText() {
@@ -153,16 +146,12 @@
 	 * @see org.eclipse.jdt.core.search.SearchDocument#getPath()
 	 */
 	public String getPath() {
-	    // caching the path since it's expensive to get translation
-		// important that isDirty() check is second to cache modification stamp
-	    if(this.fCUPath == null || isDirty() || this.fCUPath == UNKNOWN_PATH) {
-	        JSPTranslation trans = getJSPTranslation();
-	        if(trans != null) {
-	            this.fCUPath = trans.getJavaPath();
-	            // save since it's expensive to calculate again later
-	            fCachedCharContents = trans.getJavaText().toCharArray();
-	        }
-	    }
+		JSPTranslation trans = getJSPTranslation();
+		// caching the path since it's expensive to get translation
+		if (this.fCUPath == null || this.fCUPath == UNKNOWN_PATH) {
+			if (trans != null)
+				this.fCUPath = trans.getJavaPath();
+		}
 		return fCUPath != null ? fCUPath : UNKNOWN_PATH;
 	}
 
@@ -208,19 +197,6 @@
 		return jspFile;
 	}
 
-	
-	private boolean isDirty() {
-		boolean modified = false;
-		IFile f = getFile();
-		if(f != null) {
-			long currentStamp = f.getModificationStamp();
-			if(currentStamp != fLastModifiedStamp)
-				modified = true;
-			fLastModifiedStamp = currentStamp;
-		}
-		return modified;
-	}
-	
 	public void release() {
 		// nothing to do now since JSPTranslation is created on the fly
 	}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java
index ce48e1a..f582593 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/java/search/JSPSearchSupport.java
@@ -284,7 +284,7 @@
      * @throws CoreException
      */
     public SearchDocument addJspFile(IFile file) {
-        if (JSPSearchSupport.getInstance().isCanceled() || !file.isAccessible()) {
+        if (JSPSearchSupport.getInstance().isCanceled()) {
             return null;
         }
 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java
index b8a0765..12bdd4b 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/modelhandler/JSPModelLoader.java
@@ -18,9 +18,6 @@
 
 import org.eclipse.core.filebuffers.FileBuffers;
 import org.eclipse.core.filebuffers.ITextFileBuffer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.content.IContentDescription;
@@ -28,7 +25,6 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IDocumentPartitioner;
 import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
 import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapter;
 import org.eclipse.jst.jsp.core.internal.document.PageDirectiveAdapterFactory;
 import org.eclipse.jst.jsp.core.internal.document.PageDirectiveWatcherFactory;
@@ -112,19 +108,9 @@
 	 * 
 	 * Specification cites HTML as the default contentType.
 	 */
-	private EmbeddedTypeHandler getJSPDefaultEmbeddedType(IStructuredModel model) {
+	private EmbeddedTypeHandler getJSPDefaultEmbeddedType() {
 		EmbeddedTypeRegistry reg = getEmbeddedContentTypeRegistry();
-
-		String mimeType = null;
-		// default embedded type for fragments
-		if (model != null) {
-			IFile file = getFile(model);
-			if (file != null) {
-				mimeType = JSPFContentProperties.getProperty(JSPFContentProperties.JSPCONTENTTYPE, file, true);
-			}
-		}
-		mimeType = mimeType == null ? getDefaultMimeType() : mimeType;
-		return reg.getTypeFor(mimeType);
+		return reg.getTypeFor(getDefaultMimeType());
 	}
 
 	/**
@@ -156,7 +142,7 @@
 		// even though this is an "empty model" ... we want it to have at
 		// least the
 		// default embeddeded content type handler
-		EmbeddedTypeHandler embeddedType = getJSPDefaultEmbeddedType(null);
+		EmbeddedTypeHandler embeddedType = getJSPDefaultEmbeddedType();
 		embeddedType.initializeParser((JSPCapableParser) structuredDocument.getParser());
 		return structuredDocument;
 	}
@@ -279,19 +265,6 @@
 		return desc;
 	}
 
-	private IFile getFile(IStructuredModel model) {
-		if (model != null) {
-			String location = model.getBaseLocation();
-			if (location != null) {
-				IPath path = new Path(location);
-				if (!path.toFile().exists() && path.segmentCount() > 1) {
-					return ResourcesPlugin.getWorkspace().getRoot().getFile(path);
-				}
-			}
-		}
-		return null;
-	}
-
 	/**
 	 * Method getLanguage.
 	 * 
@@ -306,10 +279,6 @@
 		// language, we'll even return it,
 		// since who knows what future holds.
 
-		// get default language specified in properties page
-		IFile file = getFile(model);
-		result = JSPFContentProperties.getProperty(JSPFContentProperties.JSPLANGUAGE, file, true);
-
 		// always return something
 		if (result == null) {
 			result = DEFAULT_LANGUAGE;
@@ -512,7 +481,7 @@
 		}
 		else {
 			// use default embeddedType if it couldn't determine one
-			embeddedContentType = getJSPDefaultEmbeddedType(model);
+			embeddedContentType = getJSPDefaultEmbeddedType();
 			pageDirectiveAdapter.setEmbeddedType(embeddedContentType);
 			embeddedContentType.initializeFactoryRegistry(model.getFactoryRegistry());
 		}
@@ -521,7 +490,6 @@
 	protected void initEmbeddedTypePost(IStructuredModel model) {
 		// should already be initialized (from initEmbeddedTypePre)
 		// via IContentDescription
-		setLanguageInPageDirective(model);
 	}
 
 	/**
@@ -537,8 +505,8 @@
 		else {
 			// initEmbeddedType(newModel);
 			initCloneOfEmbeddedType(newModel, existingEmbeddedType, newEmbeddedContentType);
-			setLanguageInPageDirective(newModel);
 		}
+		setLanguageInPageDirective(newModel);
 	}
 
 	protected void setLanguageInPageDirective(IStructuredModel newModel) {
@@ -616,28 +584,28 @@
 		// For JSPs, the ModelQueryAdapter must be "attached" to the document
 		// before content is set in the model, so taglib initization can
 		// take place.
-		// In this "clone model" case, we create a ModelQuery adapter
-		// create a new instance from the old data. Note: I think this
-		// "forced fit" only works here since the implimentaiton of
-		// ModelQueryAdatper does not
-		// have to be released.
-
-		ModelQueryAdapter modelQueryAdapter = getModelQueryAdapter(model);
+		// In this "clone model" case, we create a ModelQuery adapter 
+		// create a new instance from the old data. Note: I think this 
+		// "forced fit" only works here since the implimentaiton of 
+		// ModelQueryAdatper does not 
+		// have to be released. 
+		
+		ModelQueryAdapter modelQueryAdapter =  getModelQueryAdapter(model);
 		if (modelQueryAdapter == null) {
 			modelQueryAdapter = getModelQueryAdapter(oldModel);
 			IDOMDocument document = ((IDOMModel) model).getDocument();
 			document.addAdapter(new JSPModelQueryAdapterImpl(modelQueryAdapter.getCMDocumentCache(), modelQueryAdapter.getModelQuery(), modelQueryAdapter.getIdResolver()));
-
+			
 		}
 
-
-
+		
+		
 		return model;
 	}
 
 	private ModelQueryAdapter getModelQueryAdapter(IStructuredModel model) {
 		IDOMDocument document = ((IDOMModel) model).getDocument();
-
+		
 		ModelQueryAdapter modelQueryAdapter = (ModelQueryAdapter) ((INodeNotifier) document).getAdapterFor(ModelQueryAdapter.class);
 		return modelQueryAdapter;
 	}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
index fdb1db0..8ba4ecb 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/JSPSourceParser.java
@@ -31,7 +31,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
 import org.eclipse.wst.sse.core.internal.text.IRegionComparible;
 import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.parser.XMLSourceParser;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
index 020ae97..2e921cc 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/parser/internal/JSPTokenizer.java
@@ -27,7 +27,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
 import org.eclipse.wst.sse.core.internal.util.Debug;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.parser.ContextRegionContainer;
 import org.eclipse.wst.xml.core.internal.parser.IntStack;
 
@@ -873,7 +873,7 @@
 
 	private JSPParserRegionFactory fRegionFactory = new JSPParserRegionFactory();
 
-	//private static final String rcsver = "$Id: JSPTokenizer.java,v 1.13 2006/02/27 09:08:41 david_williams Exp $";//$NON-NLS-1$
+	//private static final String rcsver = "$Id: JSPTokenizer.java,v 1.12 2005/10/01 22:56:24 david_williams Exp $";//$NON-NLS-1$
 
 	/**
 	 * user method 
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java
index a0f009e..45150ef 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 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
@@ -27,7 +27,7 @@
 
 		// compiler/validation preferences
 		node.putBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS, true);
-
+		
 		// code generation preferences
 		node.put(CommonEncodingPreferenceNames.INPUT_CODESET, ""); //$NON-NLS-1$
 		String defaultEnc = "ISO-8859-1";//$NON-NLS-1$
@@ -37,9 +37,5 @@
 		}
 		node.put(CommonEncodingPreferenceNames.OUTPUT_CODESET, defaultEnc);
 		node.put(CommonEncodingPreferenceNames.END_OF_LINE_CODE, ""); //$NON-NLS-1$
-
-		// this could be made smarter by actually looking up the content
-		// type's valid extensions
-		node.put(JSPCorePreferenceNames.DEFAULT_EXTENSION, "jsp"); //$NON-NLS-1$
 	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java
index 04a4406..bda4dd0 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/preferences/JSPCorePreferenceNames.java
@@ -1,14 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.jsp.core.internal.preferences;
 
 /**
@@ -20,15 +9,6 @@
 	}
 
 	/**
-	 * The default extension to use when none is specified in the New JSP File
-	 * Wizard.
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 */
-	public static final String DEFAULT_EXTENSION = "defaultExtension"; //$NON-NLS-1$
-
-	/**
 	 * Indicates if JSP fragments should be compiled/validated. JSP fragments
 	 * will be validated when true.
 	 * <p>
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java
index 179e3a5..1146bc8 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/provisional/text/IJSPPartitionTypes.java
@@ -6,7 +6,7 @@
  * It defines the partition types for JSP.
  * Clients should reference the partition type Strings defined here directly.
  * 
- * @deprecated use org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitions
+ * @plannedfor 1.0
  */
 public interface IJSPPartitionTypes {
 
@@ -18,7 +18,6 @@
 	String JSP_CONTENT_JAVA = JSP_SCRIPT_PREFIX + "JAVA"; //$NON-NLS-1$
 	String JSP_CONTENT_JAVASCRIPT = JSP_SCRIPT_PREFIX + "JAVASCRIPT"; //$NON-NLS-1$
 	String JSP_DEFAULT_EL = JSP_SCRIPT_PREFIX + "JSP_EL"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL2 = JSP_SCRIPT_PREFIX + "JSP_EL2"; //$NON-NLS-1$
 	
 	String JSP_DIRECTIVE = "org.eclipse.jst.jsp.JSP_DIRECTIVE"; //$NON-NLS-1$
 }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java
index 1bb1cda..a6a0278 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibClassLoader.java
@@ -16,10 +16,9 @@
 import org.eclipse.jst.jsp.core.internal.Logger;
 
 
-
 /**
- * Custom classloader which allows you to add source directories (folders
- * containing .class files) and jars to the classpath.
+ * Custom classloader which allows you to add source directories
+ * (folders containing .class files) and jars to the classpath.
  * 
  * @author pavery
  */
@@ -28,19 +27,15 @@
 	// for debugging
 	private static final boolean DEBUG;
 	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/taglibclassloader"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
+		String value= Platform.getDebugOption("com.ibm.sse.model.jsp/debug/taglibclassloader"); //$NON-NLS-1$
+		DEBUG= value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
 	}
-
+    
 	private List jarsList = new ArrayList();
 	private List dirsList = new ArrayList();
 	private List usedJars = new ArrayList();
 	private List usedDirs = new ArrayList();
-
-	private List failedClasses = new ArrayList(); // CL: added to optimize
-													// failed loading
-
-	// private List loadedClassFilenames = new ArrayList();
+	//private List loadedClassFilenames = new ArrayList();
 
 	public TaglibClassLoader(ClassLoader parentLoader) {
 		super(parentLoader);
@@ -49,59 +44,47 @@
 	/**
 	 * Adds a new jar to classpath.
 	 * 
-	 * @param filename -
-	 *            full path to the jar file
+	 * @param filename - full path to the jar file
 	 */
 	public void addJar(String filename) {
-		if (DEBUG)
-			System.out.println("trying to add: [" + filename + "] to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
+	    if(DEBUG) System.out.println("trying to add: [" + filename + "] to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
 		// don't add the same entry twice, or search times will get even worse
-		if (!jarsList.contains(filename)) {
+		if(!jarsList.contains(filename)) {
 			jarsList.add(filename);
-			failedClasses = new ArrayList();
-			if (DEBUG)
-				System.out.println(" + [" + filename + "] added to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
+			if(DEBUG) System.out.println( " + [" + filename + "] added to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
 		}
-	}
+	}		
 
 	/**
 	 * Removes a jar from the classpath.
 	 * 
-	 * @param filename -
-	 *            full path to the jar file
+	 * @param filename - full path to the jar file
 	 */
 	public void removeJar(String filename) {
 		jarsList.remove(filename);
-		failedClasses = new ArrayList();
-		if (DEBUG)
-			System.out.println("removed: [" + filename + "] from classpath"); //$NON-NLS-1$ //$NON-NLS-2$
+		if(DEBUG) System.out.println("removed: [" + filename + "] from classpath"); //$NON-NLS-1$ //$NON-NLS-2$
 	}
-
+	
 	public void addDirectory(String dirPath) {
-		if (!dirsList.contains(dirPath)) {
-			dirsList.add(dirPath);
-			failedClasses = new ArrayList();
-			if (DEBUG)
-				System.out.println("added: [" + dirPath + "] to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
+	    if(!dirsList.contains(dirPath)) {
+	        dirsList.add(dirPath);
+	        if(DEBUG) System.out.println("added: [" + dirPath + "] to classpath"); //$NON-NLS-1$ //$NON-NLS-2$
+	    }
 	}
 
 	/**
 	 * Removes a directory from the classpath.
 	 * 
-	 * @param dirPath -
-	 *            full path of the directory
+	 * @param dirPath - full path of the directory
 	 */
 	public void removeDirectory(String dirPath) {
 		dirsList.remove(dirPath);
-		failedClasses = new ArrayList();
-		if (DEBUG)
-			System.out.println("removed: [" + dirPath + "] from classpath"); //$NON-NLS-1$ //$NON-NLS-2$
+		if(DEBUG) System.out.println("removed: [" + dirPath + "] from classpath"); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
 	/**
-	 * Returns the list of JARs on this loader's classpath that contain
-	 * classes that have been loaded.
+	 * Returns the list of JARs on this loader's classpath that contain classes
+	 * that have been loaded.
 	 * 
 	 * @return List - the list of JARs
 	 */
@@ -113,8 +96,7 @@
 	 * Returns a list of directories on this loader's classpath that contain
 	 * classes that have been loaded.
 	 * 
-	 * @return List - the list of directories (fully-qualified filename
-	 *         Strings)
+	 * @return List - the list of directories (fully-qualified filename Strings)
 	 */
 	public List getDirectoriesInUse() {
 		return usedDirs;
@@ -126,12 +108,13 @@
 	 * 
 	 * @return List - the list of class filenames
 	 */
-	// public List getClassFilenamesFromDirectories() {
-	// return loadedClassFilenames;
-	// }
+//	public List getClassFilenamesFromDirectories() {
+//		return loadedClassFilenames;
+//	}
+
 	/**
-	 * Searches for the given class name on the defined classpath -
-	 * directories are checked before JARs.
+	 * Searches for the given class name on the defined classpath - directories
+	 * are checked before JARs.
 	 * 
 	 * @param className -
 	 *            the name of the class to find
@@ -139,20 +122,8 @@
 	 * @throws ClassNotFoundException
 	 */
 	protected synchronized Class findClass(String className) throws ClassNotFoundException {
-		Class oldClass = findLoadedClass(className);
-		if (oldClass != null) {
-			if (DEBUG)
-				System.out.println(">> TaglibClassLoader " + this + " returning existing class: " + className); //$NON-NLS-1$
-			return oldClass;
-		}
-		if (failedClasses.contains(className)) {
-			if (DEBUG)
-				System.out.println(">> TaglibClassLoader " + this + " known missing class: " + className); //$NON-NLS-1$
-			throw new ClassNotFoundException();
-		}
-
-		if (DEBUG)
-			System.out.println(">> TaglibClassLoader " + this + " finding class: " + className); //$NON-NLS-1$
+	    
+	    if(DEBUG) System.out.println(">> TaglibClassLoader finding class: " + className); //$NON-NLS-1$
 
 		Class newClass = null;
 		JarFile jarfile = null;
@@ -170,14 +141,13 @@
 			while (dirs.hasNext()) {
 				dirName = (String) dirs.next();
 				fileToFind = dirName + "/" + fileName; //$NON-NLS-1$
-
+				
 				f = new File(fileToFind);
 				if (f.exists()) {
 					stream = new FileInputStream(f);
 					usedDirs.add(dirName);
-					// loadedClassFilenames.add(fileToFind);
-					if (DEBUG)
-						System.out.println(">> added file from dir: " + dirName + "/" + fileName); //$NON-NLS-1$ //$NON-NLS-2$
+					//loadedClassFilenames.add(fileToFind);
+					if(DEBUG) System.out.println(">> added file from dir: " + dirName + "/" + fileName); //$NON-NLS-1$ //$NON-NLS-2$
 					break;
 
 				}
@@ -192,33 +162,29 @@
 
 				byte[] byteArray = byteStream.toByteArray();
 				try {
-					if (DEBUG)
-						System.out.println(">> defining newClass:" + className); //$NON-NLS-1$
+				    if(DEBUG) System.out.println(">> defining newClass:" + className); //$NON-NLS-1$
 					newClass = defineClass(className, byteArray, 0, byteArray.length);
 					resolveClass(newClass);
 				}
-				catch (Throwable t) {
-
-					// j9 can give ClassCircularityError
-					// parent should already have the class then
+				catch (Throwable t){
+				    
+				    // j9 can give ClassCircularityError
+				    // parent should already have the class then
 					// try parent loader
-					try {
-						Class c = getParent().loadClass(className);
-						if (DEBUG)
-							System.out.println(">> loaded: " + className + " with: " + getParent()); //$NON-NLS-1$ //$NON-NLS-2$
-						return c;
-					}
-					catch (ClassNotFoundException cnf) {
-						if (DEBUG)
-							cnf.printStackTrace();
-					}
+				    try {
+				        Class c = getParent().loadClass(className);
+				        if(DEBUG) System.out.println(">> loaded: " + className + " with: " + getParent()); //$NON-NLS-1$ //$NON-NLS-2$
+				        return c;
+				    }
+				    catch (ClassNotFoundException cnf) {
+				        if(DEBUG) cnf.printStackTrace();
+			        }
 				}
 				stream.close();
 			}
 
 			if (stream == null) {
-				// still haven't found the class, so now try searching the
-				// jars
+				// still haven't found the class, so now try searching the jars
 				// search each of the jars until we find an entry matching the
 				// classname
 				Iterator jars = jarsList.iterator();
@@ -233,11 +199,10 @@
 						continue;
 					}
 					try {
-						jarfile = new JarFile(jarName);
+					    jarfile = new JarFile(jarName);
 					}
-					catch (IOException e) {
-						if (DEBUG)
-							Logger.logException("bad jar file", e); //$NON-NLS-1$
+					catch (IOException e){
+					    if(DEBUG) Logger.logException("bad jar file", e); //$NON-NLS-1$
 					}
 					if (jarfile == null) {
 						continue;
@@ -245,11 +210,9 @@
 
 					entry = jarfile.getJarEntry(fileName);
 
-					if (DEBUG)
-						System.out.println("looking for filename: " + fileName + " in: " + jarfile.getName()); //$NON-NLS-1$ //$NON-NLS-2$
+					if(DEBUG) System.out.println("looking for filename: " + fileName + " in: " + jarfile.getName()); //$NON-NLS-1$ //$NON-NLS-2$
 					if (entry != null) {
-						if (DEBUG)
-							System.out.println("found the entry: " + entry + " for filename: " + fileName); //$NON-NLS-1$ //$NON-NLS-2$
+					    if(DEBUG) System.out.println("found the entry: " + entry + " for filename: " + fileName); //$NON-NLS-1$ //$NON-NLS-2$
 						// found the class
 						if (!usedJars.contains(jarName)) {
 							// add the jar to the list of in-use jars
@@ -279,38 +242,32 @@
 
 					byte[] byteArray = byteStream.toByteArray();
 					try {
-						if (DEBUG)
-							System.out.println(">> defining newClass:" + className); //$NON-NLS-1$
+					    if(DEBUG) System.out.println(">> defining newClass:" + className); //$NON-NLS-1$
 						// define the class from the byte array
 						newClass = defineClass(className, byteArray, 0, byteArray.length);
 						resolveClass(newClass);
 					}
-					catch (Throwable t) {
-						// j9 can give ClassCircularityError
-						// parent should already have the class then
-
+					catch(Throwable t) {
+					    // j9 can give ClassCircularityError
+					    // parent should already have the class then
+					    
 						// try parent
-						try {
-							Class c = getParent().loadClass(className);
-							if (DEBUG)
-								System.out.println(">> loaded: " + className + " with: " + getParent()); //$NON-NLS-1$ //$NON-NLS-2$
-							return c;
-						}
-						catch (ClassNotFoundException cnf) {
-							if (DEBUG)
-								cnf.printStackTrace();
-						}
-					}
+					    try {
+					        Class c = getParent().loadClass(className);
+					        if(DEBUG) System.out.println(">> loaded: " + className + " with: " + getParent()); //$NON-NLS-1$ //$NON-NLS-2$
+					        return c;
+					    }
+					    catch (ClassNotFoundException cnf) {
+					        if(DEBUG) cnf.printStackTrace();
+				        }
+					}					    			
 					stream.close();
 					jarfile.close();
 				}
 			}
-		}
-		catch (Throwable t) {
-			failedClasses.add(className);
+		} catch (Throwable t) {
 			return null;
-		}
-		finally {
+		} finally {
 			try {
 				if (stream != null) {
 					stream.close();
@@ -318,24 +275,21 @@
 				if (jarfile != null) {
 					jarfile.close();
 				}
-			}
-			catch (IOException ioe) {
+			} catch (IOException ioe) {
 				// ioe.printStackTrace();
 				// just trying to close down anyway - ignore
 			}
 		}
 
 		if (newClass != null) {
-			if (DEBUG)
-				System.out.println(">> loaded: " + newClass + " with: " + this); //$NON-NLS-1$ //$NON-NLS-2$
+		    if(DEBUG) System.out.println(">> loaded: " + newClass + " with: " + this); //$NON-NLS-1$ //$NON-NLS-2$
 			return newClass;
 		}
-
-		failedClasses.add(className);
+		
 		throw new ClassNotFoundException();
 	}
 
-	/**
+    /**
 	 * Replaces '.' in the classname with '/' and appends '.class' if needed.
 	 * 
 	 * @return String - the properly-formed class name
@@ -347,4 +301,4 @@
 		}
 		return buffer.toString();
 	}
-}
\ No newline at end of file
+}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java
index 2315f4c..fdab556 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/taglib/TaglibHelper.java
@@ -34,13 +34,13 @@
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDAttributeDeclaration;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDElementDeclaration;
 import org.eclipse.jst.jsp.core.internal.contentmodel.tld.provisional.TLDVariable;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
@@ -56,524 +56,495 @@
  */
 public class TaglibHelper {
 
-	// for debugging
-	private static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/taglibvars"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
+    // for debugging
+    private static final boolean DEBUG;
+    static {
+        String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/taglibvars"); //$NON-NLS-1$
+        DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
+    }
 
-	private IProject fProject = null;
-	private TaglibClassLoader fLoader = null;
+    private IProject fProject = null;
+    private TaglibClassLoader fLoader = null;
+    
+    private Set fProjectEntries = null;
+    private Set fContainerEntries = null;
+    
+    public TaglibHelper(IProject project) {
+        setProject(project);
+        fProjectEntries = new HashSet();
+        fContainerEntries = new HashSet();
+    }
 
-	private Set fProjectEntries = null;
-	private Set fContainerEntries = null;
+    /**
+     * @param tagToAdd
+     *            is the name of the tag whose variables we want
+     * @param structuredDoc
+     *            is the IStructuredDocument where the tag is found
+     * @param customTag
+     *            is the IStructuredDocumentRegion opening tag for the custom
+     *            tag
+     */
+    public TaglibVariable[] getTaglibVariables(String tagToAdd, IStructuredDocument structuredDoc, IStructuredDocumentRegion customTag) {
 
-	public TaglibHelper(IProject project) {
-		setProject(project);
-		fProjectEntries = new HashSet();
-		fContainerEntries = new HashSet();
-	}
-
-	/**
-	 * @param tagToAdd
-	 *            is the name of the tag whose variables we want
-	 * @param structuredDoc
-	 *            is the IStructuredDocument where the tag is found
-	 * @param customTag
-	 *            is the IStructuredDocumentRegion opening tag for the custom
-	 *            tag
-	 */
-	public TaglibVariable[] getTaglibVariables(String tagToAdd, IStructuredDocument structuredDoc, IStructuredDocumentRegion customTag) {
-
-		List results = new ArrayList();
-		ModelQuery mq = getModelQuery(structuredDoc);
-		if (mq != null) {
+        List results = new ArrayList();
+        ModelQuery mq = getModelQuery(structuredDoc);
+        if (mq != null) {
 			TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(structuredDoc);
-
-			// TaglibSupport support = ((TaglibModelQuery)
-			// mq).getTaglibSupport();
-			if (mgr == null)
-				return new TaglibVariable[0];
-
+			
+            //TaglibSupport support = ((TaglibModelQuery) mq).getTaglibSupport();
+            if (mgr == null)
+                return new TaglibVariable[0];
+			
 			List trackers = mgr.getCMDocumentTrackers(customTag.getEndOffset());
 			Iterator taglibs = trackers.iterator();
+			
+//            TaglibSupport support = ((TaglibModelQuery) mq).getTaglibSupport();
+//            if (support == null)
+//                return new TaglibVariable[0];
+//
+//            Iterator taglibs = support.getCMDocuments(customTag.getStartOffset()).iterator();
+            CMDocument doc = null;
+            CMNamedNodeMap elements = null;
+            while (taglibs.hasNext()) {
+                doc = (CMDocument) taglibs.next();
+                CMNode node = null;
+                if ((elements = doc.getElements()) != null && (node = elements.getNamedItem(tagToAdd)) != null && node.getNodeType() == CMNode.ELEMENT_DECLARATION) {
 
-			// TaglibSupport support = ((TaglibModelQuery)
-			// mq).getTaglibSupport();
-			// if (support == null)
-			// return new TaglibVariable[0];
-			//
-			// Iterator taglibs =
-			// support.getCMDocuments(customTag.getStartOffset()).iterator();
-			CMDocument doc = null;
-			CMNamedNodeMap elements = null;
-			while (taglibs.hasNext()) {
-				doc = (CMDocument) taglibs.next();
-				CMNode node = null;
-				if ((elements = doc.getElements()) != null && (node = elements.getNamedItem(tagToAdd)) != null && node.getNodeType() == CMNode.ELEMENT_DECLARATION) {
+                    if (node instanceof CMNodeWrapper) {
+                        node = ((CMNodeWrapper) node).getOriginNode();
+                    }
 
-					if (node instanceof CMNodeWrapper) {
-						node = ((CMNodeWrapper) node).getOriginNode();
-					}
+                    // 1.2+ taglib style
+                    addVariables(results, node);
 
-					// 1.2+ taglib style
-					addVariables(results, node, customTag);
+                    // for 1.1 need more info from taglib tracker
+                    if (doc instanceof TaglibTracker) {
+                        String uri = ((TaglibTracker) doc).getURI();
+                        String prefix = ((TaglibTracker) doc).getPrefix();
+                        // only for 1.1 taglibs
+                        addTEIVariables(customTag, results, (TLDElementDeclaration) node, prefix, uri);
+                    }
+                }
+            }
+        }
 
-					// for 1.1 need more info from taglib tracker
-					if (doc instanceof TaglibTracker) {
-						String uri = ((TaglibTracker) doc).getURI();
-						String prefix = ((TaglibTracker) doc).getPrefix();
-						// only for 1.1 taglibs
-						addTEIVariables(customTag, results, (TLDElementDeclaration) node, prefix, uri);
-					}
-				}
-			}
-		}
+        return (TaglibVariable[]) results.toArray(new TaglibVariable[results.size()]);
+    }
 
-		return (TaglibVariable[]) results.toArray(new TaglibVariable[results.size()]);
-	}
+    /**
+     * Adds 1.2 style TaglibVariables to the results list.
+     * 
+     * @param results
+     *            list where the <code>TaglibVariable</code> s are added
+     * @param node
+     */
+    private void addVariables(List results, CMNode node) {
 
-	/**
-	 * Adds 1.2 style TaglibVariables to the results list.
-	 * 
-	 * @param results
-	 *            list where the <code>TaglibVariable</code> s are added
-	 * @param node
-	 */
-	private void addVariables(List results, CMNode node, IStructuredDocumentRegion customTag) {
+        List list = ((TLDElementDeclaration) node).getVariables();
+        Iterator it = list.iterator();
+        while (it.hasNext()) {
+            TLDVariable var = (TLDVariable) it.next();
+            String varName = var.getNameGiven();
+            if (varName == null) {
+                varName = var.getNameFromAttribute();
+            }
+            if (varName != null) {
+                String varClass = "java.lang.String"; //$NON-NLS-1$ // the default class...
+                if (var.getVariableClass() != null) {
+                    varClass = var.getVariableClass();
+                }
+                results.add(new TaglibVariable(varClass, varName));
+            }
+        }
+    }
 
-		List list = ((TLDElementDeclaration) node).getVariables();
-		Iterator it = list.iterator();
-		while (it.hasNext()) {
-			TLDVariable var = (TLDVariable) it.next();
-			String varName = var.getNameGiven();
-			if (varName == null) {
-				String attrName = var.getNameFromAttribute();
-				/*
-				 * Iterate through the document region to find the
-				 * corresponding attribute name, and then use its value
-				 */
-				ITextRegionList regions = customTag.getRegions();
-				boolean attrNameFound = false;
-				for (int i = 2; i < regions.size(); i++) {
-					ITextRegion region = regions.get(i);
-					if (DOMRegionContext.XML_TAG_ATTRIBUTE_NAME.equals(region.getType())) {
-						attrNameFound = attrName.equals(customTag.getText(region));
-					}
-					if (attrNameFound && DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE.equals(region.getType())) {
-						varName = StringUtils.strip(customTag.getText(region));
-					}
-				}
-			}
-			if (varName != null) {
-				String varClass = "java.lang.String"; //$NON-NLS-1$ // the default class...
-				if (var.getVariableClass() != null) {
-					varClass = var.getVariableClass();
-				}
-				results.add(new TaglibVariable(varClass, varName));
-			}
-		}
-	}
+    /**
+     * Adds 1.1 style TaglibVariables (defined in a TagExtraInfo class) to the
+     * results list.
+     * 
+     * @param customTag
+     * @param results
+     *            list where the <code>TaglibVariable</code> s are added
+     * @param decl
+     *            TLDElementDelcaration for the custom tag
+     * @param prefix
+     *            custom tag prefix
+     * @param uri
+     *            URI where the tld can be found
+     */
+    private void addTEIVariables(IStructuredDocumentRegion customTag, List results, TLDElementDeclaration decl, String prefix, String uri) {
 
-	/**
-	 * Adds 1.1 style TaglibVariables (defined in a TagExtraInfo class) to the
-	 * results list.
-	 * 
-	 * @param customTag
-	 * @param results
-	 *            list where the <code>TaglibVariable</code> s are added
-	 * @param decl
-	 *            TLDElementDelcaration for the custom tag
-	 * @param prefix
-	 *            custom tag prefix
-	 * @param uri
-	 *            URI where the tld can be found
-	 */
-	private void addTEIVariables(IStructuredDocumentRegion customTag, List results, TLDElementDeclaration decl, String prefix, String uri) {
+        String teiClassname = decl.getTeiclass();
+        if (teiClassname == null || teiClassname.length() == 0)
+            return;
 
-		String teiClassname = decl.getTeiclass();
-		if (teiClassname == null || teiClassname.length() == 0)
-			return;
+        ClassLoader loader = getClassloader();
+    
+        Class teiClass = null;
+        try {
+            teiClass = Class.forName(teiClassname, true, loader);
+            if (teiClass != null) {
+                Object teiObject = teiClass.newInstance();
+                if (TagExtraInfo.class.isInstance(teiObject)) {
+                    TagExtraInfo tei = (TagExtraInfo) teiObject;
+                    Hashtable tagDataTable = extractTagData(customTag);
+                    TagInfo info = getTagInfo(decl, tei, prefix, uri);
+                    if (info != null) {
+                        tei.setTagInfo(info);
 
-		ClassLoader loader = getClassloader();
+                        // add to results
+                        TagData td = new TagData(tagDataTable);
+                        if (tei.isValid(td)) {
+                            VariableInfo[] vInfos = tei.getVariableInfo(td);
+                            if(vInfos != null) {
+	                            for (int i = 0; i < vInfos.length; i++) {
+	                                results.add(new TaglibVariable(vInfos[i].getClassName(), vInfos[i].getVarName()));
+	                            }
+                            }
+                        }
+                    }
+                }
+            }
+        } catch (ClassNotFoundException e) {
+            // TEI class wasn't on classpath
+            if (DEBUG)
+                logException(teiClassname, e);
+        } catch (InstantiationException e) {
+            if (DEBUG)
+                logException(teiClassname, e);
+        } catch (IllegalAccessException e) {
+            if (DEBUG)
+                logException(teiClassname, e);
+        } catch (ClassCastException e) {
+            // TEI class wasn't really a subclass of TagExtraInfo
+            if (DEBUG)
+                logException(teiClassname, e);
+        } catch (Exception e) {
+            // this is 3rd party code, need to catch all exceptions
+            if (DEBUG)
+                logException(teiClassname, e);
+        } catch (Error e) {
+            // this is 3rd party code, need to catch all errors
+            if (DEBUG)
+                logException(teiClassname, e);
+        }
+        finally {
+           // Thread.currentThread().setContextClassLoader(oldLoader);
+        }
+    }
 
-		Class teiClass = null;
-		try {
-			teiClass = Class.forName(teiClassname, true, loader);
-			if (teiClass != null) {
-				Object teiObject = teiClass.newInstance();
-				if (TagExtraInfo.class.isInstance(teiObject)) {
-					TagExtraInfo tei = (TagExtraInfo) teiObject;
-					Hashtable tagDataTable = extractTagData(customTag);
-					TagInfo info = getTagInfo(decl, tei, prefix, uri);
-					if (info != null) {
-						tei.setTagInfo(info);
+    /**
+     * @param decl
+     * @return the TagInfo for the TLDELementDeclaration if the declaration is
+     *         valid, otherwise null
+     */
+    private TagInfo getTagInfo(TLDElementDeclaration decl, TagExtraInfo tei, String prefix, String uri) {
 
-						// add to results
-						TagData td = new TagData(tagDataTable);
-						if (tei.isValid(td)) {
-							VariableInfo[] vInfos = tei.getVariableInfo(td);
-							if (vInfos != null) {
-								for (int i = 0; i < vInfos.length; i++) {
-									results.add(new TaglibVariable(vInfos[i].getClassName(), vInfos[i].getVarName()));
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-		catch (ClassNotFoundException e) {
-			// TEI class wasn't on classpath
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (InstantiationException e) {
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (IllegalAccessException e) {
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (ClassCastException e) {
-			// TEI class wasn't really a subclass of TagExtraInfo
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (Exception e) {
-			// this is 3rd party code, need to catch all exceptions
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		catch (Error e) {
-			// this is 3rd party code, need to catch all errors
-			if (DEBUG)
-				logException(teiClassname, e);
-		}
-		finally {
-			// Thread.currentThread().setContextClassLoader(oldLoader);
-		}
-	}
+        TagLibraryInfo libInfo = new TagLibraryInfo(prefix, uri) { /*dummy impl*/};
 
-	/**
-	 * @param decl
-	 * @return the TagInfo for the TLDELementDeclaration if the declaration is
-	 *         valid, otherwise null
-	 */
-	private TagInfo getTagInfo(TLDElementDeclaration decl, TagExtraInfo tei, String prefix, String uri) {
+        CMNamedNodeMap attrs = decl.getAttributes();
+        TagAttributeInfo[] attrInfos = new TagAttributeInfo[attrs.getLength()];
+        TLDAttributeDeclaration attr = null;
+        String type = ""; //$NON-NLS-1$ 
+        
+        // get tag attribute infos
+        for (int i = 0; i < attrs.getLength(); i++) {
+            attr = (TLDAttributeDeclaration) attrs.item(i);
+            type = attr.getType();
+            // default value for type is String
+            if (attr.getType() == null || attr.getType().equals(""))  //$NON-NLS-1$ 
+                type = "java.lang.String"; //$NON-NLS-1$ 
+            attrInfos[i] = new TagAttributeInfo(attr.getAttrName(), attr.isRequired(), type, false);
+        }
+        
+        String tagName = decl.getNodeName();
+        String tagClass = decl.getTagclass();
+        String bodyContent = decl.getBodycontent();
+        if (tagName != null && tagClass != null && bodyContent != null)
+            return new TagInfo(tagName, tagClass, bodyContent, decl.getInfo(), libInfo, tei, attrInfos);
+        return null;
 
-		TagLibraryInfo libInfo = new TagLibraryInfo(prefix, uri) { /*
-																	 * dummy
-																	 * impl
-																	 */
-		};
+    }
 
-		CMNamedNodeMap attrs = decl.getAttributes();
-		TagAttributeInfo[] attrInfos = new TagAttributeInfo[attrs.getLength()];
-		TLDAttributeDeclaration attr = null;
-		String type = ""; //$NON-NLS-1$ 
+    /**
+     * @param e
+     */
+    private void logException(String teiClassname, Throwable e) {
 
-		// get tag attribute infos
-		for (int i = 0; i < attrs.getLength(); i++) {
-			attr = (TLDAttributeDeclaration) attrs.item(i);
-			type = attr.getType();
-			// default value for type is String
-			if (attr.getType() == null || attr.getType().equals("")) //$NON-NLS-1$ 
-				type = "java.lang.String"; //$NON-NLS-1$ 
-			attrInfos[i] = new TagAttributeInfo(attr.getAttrName(), attr.isRequired(), type, false);
-		}
+        String message = "teiClassname: ["; //$NON-NLS-1$ 
+        if (teiClassname != null)
+            message += teiClassname;
+        message += "]"; //$NON-NLS-1$
+        Logger.logException(message, e);
+    }
 
-		String tagName = decl.getNodeName();
-		String tagClass = decl.getTagclass();
-		String bodyContent = decl.getBodycontent();
-		if (tagName != null && tagClass != null && bodyContent != null)
-			return new TagInfo(tagName, tagClass, bodyContent, decl.getInfo(), libInfo, tei, attrInfos);
-		return null;
+    /**
+     * Returns all attribute -> value pairs for the tag in a Hashtable.
+     * 
+     * @param customTag
+     * @return
+     */
+    private Hashtable extractTagData(IStructuredDocumentRegion customTag) {
 
-	}
+        Hashtable tagDataTable = new Hashtable();
+        ITextRegionList regions = customTag.getRegions();
+        ITextRegion r = null;
+        String attrName = ""; //$NON-NLS-1$
+        String attrValue = ""; //$NON-NLS-1$
+        for (int i = 0; i < regions.size(); i++) {
+            r = regions.get(i);
+            // check if attr name
+            if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
+                attrName = customTag.getText(r);
+                // check equals is next region
+                if (regions.size() > ++i) {
+                    r = regions.get(i);
+                    if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS && regions.size() > ++i) {
+                        // get attr value
+                        r = regions.get(i);
+                        if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
+                            r = regions.get(i);
+                            // attributes in our document have quotes, so we
+                            // need to strip them
+                            attrValue = StringUtils.stripQuotes(customTag.getText(r));
+                            tagDataTable.put(attrName, attrValue);
+                        }
+                    }
+                }
+            }
+        }
+        return tagDataTable;
+    }
 
-	/**
-	 * @param e
-	 */
-	private void logException(String teiClassname, Throwable e) {
+    private ClassLoader getClassloader() {
+        
+        if(fLoader == null) {
+	        fLoader = new TaglibClassLoader(this.getClass().getClassLoader());
+	        fProjectEntries.clear();
+	        fContainerEntries.clear();
+	        addClasspathEntriesForProject(getProject(), fLoader);
+        }
+        return fLoader;
+    }
 
-		String message = "teiClassname: ["; //$NON-NLS-1$ 
-		if (teiClassname != null)
-			message += teiClassname;
-		message += "]"; //$NON-NLS-1$
-		Logger.logException(message, e);
-	}
-
-	/**
-	 * Returns all attribute -> value pairs for the tag in a Hashtable.
-	 * 
-	 * @param customTag
-	 * @return
-	 */
-	private Hashtable extractTagData(IStructuredDocumentRegion customTag) {
-
-		Hashtable tagDataTable = new Hashtable();
-		ITextRegionList regions = customTag.getRegions();
-		ITextRegion r = null;
-		String attrName = ""; //$NON-NLS-1$
-		String attrValue = ""; //$NON-NLS-1$
-		for (int i = 0; i < regions.size(); i++) {
-			r = regions.get(i);
-			// check if attr name
-			if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME) {
-				attrName = customTag.getText(r);
-				// check equals is next region
-				if (regions.size() > ++i) {
-					r = regions.get(i);
-					if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_EQUALS && regions.size() > ++i) {
-						// get attr value
-						r = regions.get(i);
-						if (r.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-							r = regions.get(i);
-							// attributes in our document have quotes, so we
-							// need to strip them
-							attrValue = StringUtils.stripQuotes(customTag.getText(r));
-							tagDataTable.put(attrName, attrValue);
-						}
-					}
-				}
-			}
-		}
-		return tagDataTable;
-	}
-
-	private ClassLoader getClassloader() {
-
-		if (fLoader == null) {
-			fLoader = new TaglibClassLoader(this.getClass().getClassLoader());
-			fProjectEntries.clear();
-			fContainerEntries.clear();
-			addClasspathEntriesForProject(getProject(), fLoader);
-		}
-		return fLoader;
-	}
-
-	/**
-	 * @param loader
-	 */
-	private void addClasspathEntriesForProject(IProject p, TaglibClassLoader loader) {
-
-		// avoid infinite recursion and closed project
-		if (!p.isAccessible() || fProjectEntries.contains(p.getFullPath().toString()))
-			return;
-		fProjectEntries.add(p.getFullPath().toString());
-
-		// add things on classpath that we are interested in
-		if (p != null) {
-			try {
-				if (p.hasNature(JavaCore.NATURE_ID)) {
-
-					IJavaProject project = JavaCore.create(p);
-					IPath wkspaceRoot = ResourcesPlugin.getWorkspace().getRoot().getLocation();
-
-					try {
-						IClasspathEntry[] entries = project.getRawClasspath();
-						addDefaultDirEntry(loader, project, wkspaceRoot);
-						addClasspathEntries(loader, project, wkspaceRoot, entries);
-					}
-					catch (JavaModelException e) {
-						Logger.logException(e);
-					}
-				}
-			}
-			catch (CoreException e) {
-				Logger.logException(e);
-			}
-		}
-	}
+    /**
+     * @param loader
+     */
+    private void addClasspathEntriesForProject(IProject p, TaglibClassLoader loader) {
+       
+        // avoid infinite recursion and closed project
+        if(!p.isAccessible() || fProjectEntries.contains(p.getFullPath().toString()))
+            return;
+        fProjectEntries.add(p.getFullPath().toString());
+    
+       // add things on classpath that we are interested in
+        if (p != null) {
+        	try {
+	        	if(p.hasNature(JavaCore.NATURE_ID)) {
+	        		
+		            IJavaProject project = JavaCore.create(p);
+		            IPath wkspaceRoot = ResourcesPlugin.getWorkspace().getRoot().getLocation();
+		
+		            try {
+		                IClasspathEntry[] entries = project.getRawClasspath();
+		                addDefaultDirEntry(loader, project, wkspaceRoot);
+		                addClasspathEntries(loader, project, wkspaceRoot, entries);        
+		            } catch (JavaModelException e) {
+		            	Logger.logException(e);
+		            }
+	        	}
+        	}
+        	catch(CoreException e) {
+        		Logger.logException(e);
+        	}
+        }
+    }
 
 	private void addClasspathEntries(TaglibClassLoader loader, IJavaProject project, IPath wkspaceRoot, IClasspathEntry[] entries) throws JavaModelException {
 		IClasspathEntry entry;
 		for (int i = 0; i < entries.length; i++) {
 
-			entry = entries[i];
-			if (DEBUG)
-				System.out.println("current entry is: " + entry); //$NON-NLS-1$
-
-			switch (entry.getEntryKind()) {
-				case IClasspathEntry.CPE_SOURCE :
-					addSourceEntry(loader, wkspaceRoot, entry);
-					break;
-				case IClasspathEntry.CPE_LIBRARY :
-					addLibraryEntry(loader, wkspaceRoot, entry.getPath().toString());
-					break;
-				case IClasspathEntry.CPE_PROJECT :
-					addProjectEntry(loader, entry);
-					break;
-				case IClasspathEntry.CPE_VARIABLE :
-					addVariableEntry(loader, wkspaceRoot, entry);
-					break;
-				case IClasspathEntry.CPE_CONTAINER :
-					addContainerEntry(loader, project, wkspaceRoot, entry);
-					break;
-			}
+		    entry = entries[i];
+		    if(DEBUG)
+		        System.out.println("current entry is: " + entry); //$NON-NLS-1$
+		    
+		    switch (entry.getEntryKind()) {
+		        case IClasspathEntry.CPE_SOURCE:
+		            addSourceEntry(loader, wkspaceRoot, entry);
+		            break;
+		        case IClasspathEntry.CPE_LIBRARY:
+		            addLibraryEntry(loader, wkspaceRoot, entry.getPath().toString());
+		            break;
+		        case IClasspathEntry.CPE_PROJECT:
+		            addProjectEntry(loader, entry); 
+		            break;
+		        case IClasspathEntry.CPE_VARIABLE:
+		            addVariableEntry(loader, wkspaceRoot, entry);
+		            break;
+		        case IClasspathEntry.CPE_CONTAINER:
+		            addContainerEntry(loader, project, wkspaceRoot, entry);
+		            break;
+		    }
 		}
 	}
 
-	/**
-	 * @param loader
-	 * @param entry
-	 */
-	private void addVariableEntry(TaglibClassLoader loader, IPath wkspaceRoot, IClasspathEntry entry) {
+    /**
+     * @param loader
+     * @param entry
+     */
+    private void addVariableEntry(TaglibClassLoader loader, IPath wkspaceRoot, IClasspathEntry entry) {
 
-		if (DEBUG)
-			System.out.println(" -> adding variable entry: [" + entry + "]"); //$NON-NLS-1$ //$NON-NLS-2$
+        if (DEBUG)
+            System.out.println(" -> adding variable entry: [" + entry + "]"); //$NON-NLS-1$ //$NON-NLS-2$
+        
+        // variable should either be a project or a library entry
 
-		// variable should either be a project or a library entry
+        String variableName = entry.getPath().toString();
+        IPath variablePath = JavaCore.getClasspathVariable(variableName);
+        
+        // RATLC01076854 
+        // variable paths may not exist
+        // in that case null will be returned
+        if(variablePath != null) {
+	        if (variablePath.segments().length == 1) {
+	            IProject varProj = ResourcesPlugin.getWorkspace().getRoot().getProject(variablePath.toString());
+	            if (varProj != null && varProj.exists()) {
+	                addClasspathEntriesForProject(varProj, loader);
+	                return;
+	            }
+	        } 
+	        addLibraryEntry(loader, wkspaceRoot, variablePath.toString());
+        }
+    }
 
-		String variableName = entry.getPath().toString();
-		IPath variablePath = JavaCore.getClasspathVariable(variableName);
+    /**
+     * @param loader
+     * @param project
+     * @param wkspaceRoot
+     * @param entry
+     * @throws JavaModelException
+     */
+    private void addContainerEntry(TaglibClassLoader loader, IJavaProject project, IPath wkspaceRoot, IClasspathEntry entry) throws JavaModelException {
 
-		// RATLC01076854
-		// variable paths may not exist
-		// in that case null will be returned
-		if (variablePath != null) {
-			if (variablePath.segments().length == 1) {
-				IProject varProj = ResourcesPlugin.getWorkspace().getRoot().getProject(variablePath.toString());
-				if (varProj != null && varProj.exists()) {
-					addClasspathEntriesForProject(varProj, loader);
-					return;
-				}
-			}
-			addLibraryEntry(loader, wkspaceRoot, variablePath.toString());
-		}
-	}
+        IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), project);
+        if(container != null) {
+        	// avoid infinite recursion
+            if(!fContainerEntries.contains(container.getPath().toString())) {                   
+                fContainerEntries.add(container.getPath().toString());
+                
+            	IClasspathEntry[] cpes = container.getClasspathEntries();
+            	// recursive call here
+            	addClasspathEntries(loader, project, wkspaceRoot, cpes);
+            }
+        }
+    }
 
-	/**
-	 * @param loader
-	 * @param project
-	 * @param wkspaceRoot
-	 * @param entry
-	 * @throws JavaModelException
-	 */
-	private void addContainerEntry(TaglibClassLoader loader, IJavaProject project, IPath wkspaceRoot, IClasspathEntry entry) throws JavaModelException {
+    /**
+     * @param loader
+     * @param entry
+     */
+    private void addProjectEntry(TaglibClassLoader loader, IClasspathEntry entry) {
 
-		IClasspathContainer container = JavaCore.getClasspathContainer(entry.getPath(), project);
-		if (container != null) {
-			// avoid infinite recursion
-			if (!fContainerEntries.contains(container.getPath().toString())) {
-				fContainerEntries.add(container.getPath().toString());
+        if (DEBUG)
+            System.out.println(" -> project entry: [" + entry + "]"); //$NON-NLS-1$ //$NON-NLS-2$
+        
+        IPath path = entry.getPath();
+        IProject refereceProj = ResourcesPlugin.getWorkspace().getRoot().getProject(path.toString());
+        if(refereceProj != null && refereceProj.exists())
+            addClasspathEntriesForProject(refereceProj, loader);
+    }
 
-				IClasspathEntry[] cpes = container.getClasspathEntries();
-				// recursive call here
-				addClasspathEntries(loader, project, wkspaceRoot, cpes);
-			}
-		}
-	}
+    /**
+     * @param loader
+     * @param project
+     * @param wkspaceRoot
+     * @throws JavaModelException
+     */
+    private void addDefaultDirEntry(TaglibClassLoader loader, IJavaProject project, IPath wkspaceRoot) throws JavaModelException {
 
-	/**
-	 * @param loader
-	 * @param entry
-	 */
-	private void addProjectEntry(TaglibClassLoader loader, IClasspathEntry entry) {
+        // add default bin directory for the project
+        IPath outputLocation = project.getOutputLocation();
+        if (!outputLocation.toFile().exists()) {
+            outputLocation = wkspaceRoot.append(outputLocation);
+        }
+        loader.addDirectory(outputLocation.toString());
+    }
 
-		if (DEBUG)
-			System.out.println(" -> project entry: [" + entry + "]"); //$NON-NLS-1$ //$NON-NLS-2$
+    /**
+     * @param loader
+     * @param wkspaceRoot
+     * @param entry
+     */
+    private void addLibraryEntry(TaglibClassLoader loader, IPath wkspaceRoot, String libPath) {
 
-		IPath path = entry.getPath();
-		IProject refereceProj = ResourcesPlugin.getWorkspace().getRoot().getProject(path.toString());
-		if (refereceProj != null && refereceProj.exists())
-			addClasspathEntriesForProject(refereceProj, loader);
-	}
+        String jarPath = libPath;
+        File file = new File(jarPath);
+        
+        // if not absolute path, it's workspace relative
+        if (!file.exists()) {
+            jarPath = wkspaceRoot.append(jarPath).toString();
+        }
+        
+        if(jarPath.endsWith(".jar")) { //$NON-NLS-1$ 
+            loader.addJar(jarPath);
+        }
+        else if(file.isDirectory()) {
+            // it's actually a folder containing binaries
+            loader.addDirectory(jarPath);
+        }
+    }
 
-	/**
-	 * @param loader
-	 * @param project
-	 * @param wkspaceRoot
-	 * @throws JavaModelException
-	 */
-	private void addDefaultDirEntry(TaglibClassLoader loader, IJavaProject project, IPath wkspaceRoot) throws JavaModelException {
+    /**
+     * @param loader
+     * @param wkspaceRoot
+     * @param entry
+     */
+    private void addSourceEntry(TaglibClassLoader loader, IPath wkspaceRoot, IClasspathEntry entry) {
 
-		// add default bin directory for the project
-		IPath outputLocation = project.getOutputLocation();
-		if (!outputLocation.toFile().exists()) {
-			outputLocation = wkspaceRoot.append(outputLocation);
-		}
-		loader.addDirectory(outputLocation.toString());
-	}
+        // add bin directory for specific entry if it has
+        // one
+        if (entry.getOutputLocation() != null) {
+            String outputPath = entry.getOutputLocation().toString();
+            File file = entry.getOutputLocation().toFile();
+            // if not absolute path, it's workspace relative
+            if (!file.exists()) {
+                outputPath = wkspaceRoot.append(entry.getOutputLocation()).toString();
+            }
+            loader.addDirectory(outputPath);
+        }
+    }
 
-	/**
-	 * @param loader
-	 * @param wkspaceRoot
-	 * @param entry
-	 */
-	private void addLibraryEntry(TaglibClassLoader loader, IPath wkspaceRoot, String libPath) {
-
-		String jarPath = libPath;
-		File file = new File(jarPath);
-
-		// if not absolute path, it's workspace relative
-		if (!file.exists()) {
-			jarPath = wkspaceRoot.append(jarPath).toString();
-		}
-
-		if (jarPath.endsWith(".jar")) { //$NON-NLS-1$ 
-			loader.addJar(jarPath);
-		}
-		else if (file.isDirectory()) {
-			// it's actually a folder containing binaries
-			loader.addDirectory(jarPath);
-		}
-	}
-
-	/**
-	 * @param loader
-	 * @param wkspaceRoot
-	 * @param entry
-	 */
-	private void addSourceEntry(TaglibClassLoader loader, IPath wkspaceRoot, IClasspathEntry entry) {
-
-		// add bin directory for specific entry if it has
-		// one
-		if (entry.getOutputLocation() != null) {
-			String outputPath = entry.getOutputLocation().toString();
-			File file = entry.getOutputLocation().toFile();
-			// if not absolute path, it's workspace relative
-			if (!file.exists()) {
-				outputPath = wkspaceRoot.append(entry.getOutputLocation()).toString();
-			}
-			loader.addDirectory(outputPath);
-		}
-	}
-
-	/**
-	 * @return Returns the fModelQuery.
-	 */
-	public ModelQuery getModelQuery(IDocument doc) {
-		IStructuredModel model = null;
-		ModelQuery mq = null;
+    /**
+     * @return Returns the fModelQuery.
+     */
+    public ModelQuery getModelQuery(IDocument doc) {
+        IStructuredModel model = null;
+        ModelQuery mq = null;
 		try {
 			model = StructuredModelManager.getModelManager().getExistingModelForRead(doc);
 			mq = ModelQueryUtil.getModelQuery(model);
 		}
 		finally {
-			if (model != null)
-				model.releaseFromRead();
+		    if(model != null)
+		        model.releaseFromRead();
 		}
-		return mq;
-	}
+        return mq;
+    }
 
 
-	/**
-	 * @return Returns the fFile.
-	 */
-	public IProject getProject() {
+    /**
+     * @return Returns the fFile.
+     */
+    public IProject getProject() {
 
-		return fProject;
-	}
+        return fProject;
+    }
 
-	/**
-	 * @param file
-	 *            The fFile to set.
-	 */
-	public void setProject(IProject p) {
-		fProject = p;
-	}
+    /**
+     * @param file
+     *            The fFile to set.
+     */
+    public void setProject(IProject p) {
+        fProject = p;
+    }
 }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
index f1ab794..24dd977 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/text/StructuredTextPartitionerForJSP.java
@@ -23,8 +23,8 @@
 import org.eclipse.jst.jsp.core.internal.parser.JSPSourceParser;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
 import org.eclipse.wst.html.core.internal.text.StructuredTextPartitionerForHTML;
 import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandler;
 import org.eclipse.wst.sse.core.internal.ltk.parser.StructuredDocumentRegionHandlerExtension;
@@ -37,7 +37,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
 import org.eclipse.wst.sse.core.internal.text.rules.StructuredTextPartitioner;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
 import org.eclipse.wst.xml.core.internal.text.rules.StructuredTextPartitionerForXML;
 
@@ -170,7 +170,7 @@
 	private static final String XHTML_MIME_TYPE = "text/xhtml"; //$NON-NLS-1$
 	private static final String XML_MIME_TYPE = "text/xml"; //$NON-NLS-1$
 
-	private final static String[] fConfiguredContentTypes = new String[]{IJSPPartitions.JSP_DEFAULT, IJSPPartitions.JSP_DEFAULT_EL, IJSPPartitions.JSP_DEFAULT_EL2, IJSPPartitions.JSP_DIRECTIVE, IJSPPartitions.JSP_CONTENT_DELIMITER, IJSPPartitions.JSP_CONTENT_JAVA, IJSPPartitions.JSP_CONTENT_JAVASCRIPT, IJSPPartitions.JSP_COMMENT};
+	private final static String[] fConfiguredContentTypes = new String[]{IJSPPartitionTypes.JSP_DEFAULT, IJSPPartitionTypes.JSP_DEFAULT_EL, IJSPPartitionTypes.JSP_DIRECTIVE, IJSPPartitionTypes.JSP_CONTENT_DELIMITER, IJSPPartitionTypes.JSP_CONTENT_JAVA, IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT, IJSPPartitionTypes.JSP_COMMENT};
 
 	/**
 	 * @return
@@ -362,19 +362,16 @@
 			result = getPartitionTypeForDocumentLanguage();
 		}
 		else if (region_type == DOMJSPRegionContexts.JSP_COMMENT_TEXT || region_type == DOMJSPRegionContexts.JSP_COMMENT_OPEN || region_type == DOMJSPRegionContexts.JSP_COMMENT_CLOSE)
-			result = IJSPPartitions.JSP_COMMENT;
+			result = IJSPPartitionTypes.JSP_COMMENT;
 		else if (region_type == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME || region_type == DOMJSPRegionContexts.JSP_DIRECTIVE_OPEN || region_type == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE)
-			result = IJSPPartitions.JSP_DIRECTIVE;
+			result = IJSPPartitionTypes.JSP_DIRECTIVE;
 		else if (region_type == DOMJSPRegionContexts.JSP_CLOSE || region_type == DOMJSPRegionContexts.JSP_SCRIPTLET_OPEN || region_type == DOMJSPRegionContexts.JSP_EXPRESSION_OPEN || region_type == DOMJSPRegionContexts.JSP_DECLARATION_OPEN)
-			result = IJSPPartitions.JSP_CONTENT_DELIMITER;
+			result = IJSPPartitionTypes.JSP_CONTENT_DELIMITER;
 		else if (region_type == DOMJSPRegionContexts.JSP_ROOT_TAG_NAME)
-			result = IJSPPartitions.JSP_DEFAULT;
+			result = IJSPPartitionTypes.JSP_DEFAULT;
 		else if (region_type == DOMJSPRegionContexts.JSP_EL_OPEN || region_type == DOMJSPRegionContexts.JSP_EL_CONTENT || region_type == DOMJSPRegionContexts.JSP_EL_CLOSE || region_type == DOMJSPRegionContexts.JSP_EL_DQUOTE
 					|| region_type == DOMJSPRegionContexts.JSP_EL_SQUOTE || region_type == DOMJSPRegionContexts.JSP_EL_QUOTED_CONTENT)
-			result = IJSPPartitions.JSP_DEFAULT_EL;
-		else if (region_type == DOMJSPRegionContexts.JSP_VBL_OPEN || region_type == DOMJSPRegionContexts.JSP_VBL_CONTENT || region_type == DOMJSPRegionContexts.JSP_VBL_CLOSE || region_type == DOMJSPRegionContexts.JSP_VBL_DQUOTE
-					|| region_type == DOMJSPRegionContexts.JSP_VBL_SQUOTE || region_type == DOMJSPRegionContexts.JSP_VBL_QUOTED_CONTENT)
-			result = IJSPPartitions.JSP_DEFAULT_EL2;
+			result = IJSPPartitionTypes.JSP_DEFAULT_EL;
 		else if (region_type == DOMRegionContext.XML_CONTENT) {
 			// possibly between <jsp:scriptlet>, <jsp:expression>,
 			// <jsp:declaration>
@@ -397,13 +394,13 @@
 	private String getPartitionTypeForDocumentLanguage() {
 		String result;
 		if (fLanguage == null || fLanguage.equalsIgnoreCase("java")) { //$NON-NLS-1$
-			result = IJSPPartitions.JSP_CONTENT_JAVA;
+			result = IJSPPartitionTypes.JSP_CONTENT_JAVA;
 		}
 		else if (fLanguage.equalsIgnoreCase("javascript")) { //$NON-NLS-1$
-			result = IJSPPartitions.JSP_CONTENT_JAVASCRIPT;
+			result = IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT;
 		}
 		else {
-			result = IJSPPartitions.JSP_SCRIPT_PREFIX + getLanguage().toUpperCase(Locale.ENGLISH);
+			result = IJSPPartitionTypes.JSP_SCRIPT_PREFIX + getLanguage().toUpperCase(Locale.ENGLISH);
 		}
 		return result;
 	}
@@ -443,13 +440,13 @@
 		String documentRegionContext = sdRegion.getType();
 		if (containedChildRegion != null) {
 			if (documentRegionContext.equals(DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) || documentRegionContext.equals(DOMJSPRegionContexts.JSP_ROOT_TAG_NAME)) {
-				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitions.JSP_DIRECTIVE);
+				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitionTypes.JSP_DIRECTIVE);
 				return true;
 			}
 			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113346
 			if (fEnableJSPActionPartitions && isAction(sdRegion, offset) && !(containedChildRegion instanceof ITextRegionContainer)) {
 			//if (fEnableJSPActionPartitions && isAction(sdRegion, offset)) {
-				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitions.JSP_DIRECTIVE);
+				setInternalPartition(offset, containedChildRegion.getLength(), IJSPPartitionTypes.JSP_DIRECTIVE);
 				return true;
 			}
 		}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java
index ccb52b4..c5a0789 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/DocumentProvider.java
@@ -12,12 +12,12 @@
 
 
 
-import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.StringReader;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.StringTokenizer;
@@ -53,7 +53,7 @@
 	private ErrorHandler errorHandler = null;
 	private String fBaseReference;
 	private String fileName = null;
-	private boolean fValidating = false;
+	private boolean fValidating = true;
 	private InputStream inputStream = null;
 	private String jarFileName = null;
 	private EntityResolver resolver = null;
@@ -130,12 +130,8 @@
 	 * @return Document
 	 */
 	public Document getDocument() {
-		return getDocument(true);
-	}
-
-	public Document getDocument(boolean createEmptyOnFailure) {
 		if (document == null)
-			load(createEmptyOnFailure);
+			load();
 		return document;
 	}
 
@@ -169,7 +165,7 @@
 	public Element getElement(String name) {
 		Element result = null;
 		if (document == null)
-			load(false);
+			load();
 		if (document != null) {
 			result = (Element) getNode(getRootElement(), name);
 		}
@@ -185,7 +181,7 @@
 			resolver = new EntityResolver() {
 				public InputSource resolveEntity(String publicID, String systemID) throws SAXException, IOException {
 					InputSource result = null;
-					if (isValidating()) {
+					if (getBaseReference() != null) {
 						try {
 							URL spec = new URL("file://" + getBaseReference()); //$NON-NLS-1$
 							URL url = new URL(spec, systemID);
@@ -200,9 +196,8 @@
 							result = null;
 						}
 					}
-
 					if (result == null) {
-						result = new InputSource(new ByteArrayInputStream(new byte[0]));
+						result = new InputSource(new StringReader("")); //$NON-NLS-1$
 						result.setPublicId(publicID);
 						result.setSystemId(systemID != null ? systemID : "/_" + getClass().getName()); //$NON-NLS-1$
 					}
@@ -385,7 +380,7 @@
 		return fValidating;
 	}
 
-	void load(boolean createEmptyOnFailure) {
+	public void load() {
 		// rootElementName and fileName are expected to be defined at this
 		// point
 		document = getParsedDocument();
@@ -397,20 +392,18 @@
 		}
 
 		if (document == null || rootElement == null) {
-			if (createEmptyOnFailure) {
-				document = getNewDocument();
-				if (document != null) {
-					NodeList children = document.getChildNodes();
+			document = getNewDocument();
+			if (document != null) {
+				NodeList children = document.getChildNodes();
+				for (int i = 0; i < children.getLength(); i++) {
+					if (children.item(i).getNodeType() == Node.ELEMENT_NODE && children.item(i).getNodeName().equals(getRootElementName()))
+						rootElement =  children.item(i);
+				}
+				if (rootElement == null) {
 					for (int i = 0; i < children.getLength(); i++) {
-						if (children.item(i).getNodeType() == Node.ELEMENT_NODE && children.item(i).getNodeName().equals(getRootElementName()))
+						if (children.item(i).getNodeType() == Node.ELEMENT_NODE) {
 							rootElement = children.item(i);
-					}
-					if (rootElement == null) {
-						for (int i = 0; i < children.getLength(); i++) {
-							if (children.item(i).getNodeType() == Node.ELEMENT_NODE) {
-								rootElement = children.item(i);
-								break;
-							}
+							break;
 						}
 					}
 				}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
deleted file mode 100644
index 250cf85..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPDirectiveValidator.java
+++ /dev/null
@@ -1,188 +0,0 @@
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.io.IOException;
-import java.util.HashMap;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.eclipse.wst.sse.ui.internal.reconcile.validator.ISourceValidator;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
-
-/**
- * Checks for: - duplicate taglib prefix values - reserved taglib prefix
- * values
- * 
- */
-public class JSPDirectiveValidator extends JSPValidator implements ISourceValidator {
-
-	private HashMap fReservedPrefixes = new HashMap();
-	private HashMap fDuplicatePrefixes = new HashMap();
-	private IDocument fDocument;
-
-	public JSPDirectiveValidator() {
-		fReservedPrefixes.put("jsp", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		fReservedPrefixes.put("jspx", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("javax", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("servlet", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("sun", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-		fReservedPrefixes.put("sunw", ""); //$NON-NLS-1$ //$NON-NLS-2$ 
-	}
-
-	/**
-	 * batch validation call
-	 */
-	protected void validateFile(IFile f, IReporter reporter) {
-
-		// when validating an entire file
-		// need to clear dupes or else you're comparing between files
-		fDuplicatePrefixes.clear();
-
-		// for batch validation
-		IStructuredModel sModel = null;
-		try {
-			sModel = StructuredModelManager.getModelManager().getModelForRead(f);
-			if (sModel != null) {
-				IStructuredDocument sDoc = sModel.getStructuredDocument();
-				// need to set this for partial validate call to work
-				fDocument = sDoc;
-				// iterate all document regions
-				IStructuredDocumentRegion region = sDoc.getFirstStructuredDocumentRegion();
-				while (region != null && !reporter.isCancelled()) {
-					// only checking directives
-					if (region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-						validateDirective(reporter, f, sDoc, region);
-					}
-					region = region.getNext();
-				}
-			}
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (sModel != null)
-				sModel.releaseFromRead();
-		}
-	}
-
-	public void connect(IDocument document) {
-		fDocument = document;
-	}
-
-	public void disconnect(IDocument document) {
-		fDuplicatePrefixes.clear();
-	}
-
-	/**
-	 * for as you type validation (partial document)
-	 */
-	public void validate(IRegion dirtyRegion, IValidationContext helper, IReporter reporter) {
-		validate(dirtyRegion, helper, reporter, null);
-	}
-
-	private void validate(IRegion dirtyRegion, IValidationContext helper, IReporter reporter, IFile file) {
-
-		// check for restricted and duplicate prefixes
-		if (fDocument instanceof IStructuredDocument) {
-			IStructuredDocument sDoc = (IStructuredDocument) fDocument;
-			IStructuredDocumentRegion[] regions = sDoc.getStructuredDocumentRegions(dirtyRegion.getOffset(), dirtyRegion.getLength());
-			for (int i = 0; i < regions.length; i++) {
-				// only checking directives
-				if (regions[i].getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-					validateDirective(reporter, file, sDoc, regions[i]);
-				}
-			}
-		}
-	}
-
-	private void validateDirective(IReporter reporter, IFile file, IStructuredDocument sDoc, IStructuredDocumentRegion sdRegion) {
-
-		// we only care about taglib directive
-		if (getDirectiveName(sdRegion).equals("taglib")) { //$NON-NLS-1$
-
-			ITextRegion valueRegion = getAttributeValueRegion(sdRegion, JSP11Namespace.ATTR_NAME_PREFIX);
-			if (valueRegion == null)
-				return;
-
-			String taglibPrefix = sdRegion.getText(valueRegion);
-			int start = sdRegion.getStartOffset(valueRegion);
-			// length before stripquotes
-			int length = taglibPrefix.length();
-			taglibPrefix = StringUtils.stripQuotes(taglibPrefix);
-
-			int sev = IMessage.HIGH_SEVERITY;
-			LocalizedMessage message = null;
-
-			// check for errors
-			// use file if available (for markers)
-			if (isReservedPrefix(taglibPrefix)) {
-
-				String msgText = "Reserved prefix  '" + taglibPrefix + "'";
-				message = (file == null ? new LocalizedMessage(sev, msgText) : new LocalizedMessage(sev, msgText, file));
-			}
-			else if (isDuplicatePrefix(sdRegion, taglibPrefix)) {
-
-				String msgText = "Duplicate prefix  '" + taglibPrefix + "'";
-				message = (file == null ? new LocalizedMessage(sev, msgText) : new LocalizedMessage(sev, msgText, file));
-			}
-
-			// if there's a message, there was an error found
-			if (message != null) {
-				int lineNo = sDoc.getLineOfOffset(start);
-				message.setLineNo(lineNo);
-				message.setOffset(start);
-				message.setLength(length);
-
-				reporter.addMessage(this, message);
-			}
-		}
-	}
-
-	private boolean isDuplicatePrefix(IStructuredDocumentRegion region, String taglibPrefix) {
-		boolean dupe = false;
-		Object o = fDuplicatePrefixes.get(taglibPrefix);
-		if (o == null) {
-			// prefix doesn't exist, not a dupe
-			fDuplicatePrefixes.put(taglibPrefix, region);
-		}
-		else if (o instanceof IStructuredDocumentRegion) {
-			if (((IStructuredDocumentRegion) o).isDeleted()) {
-				// region was deleted, replace w/ new region
-				// not a dupe
-				fDuplicatePrefixes.put(taglibPrefix, region);
-			}
-			else if (region != o) {
-				// region exists and it's not this one
-				// it's a dupe
-				dupe = true;
-			}
-		}
-		return dupe;
-
-	}
-
-	public void cleanup(IReporter reporter) {
-		super.cleanup(reporter);
-		fDuplicatePrefixes.clear();
-	}
-
-	private boolean isReservedPrefix(String name) {
-		return fReservedPrefixes.get(name) != null;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java
index 0522ac3..69f3653 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPELValidator.java
@@ -11,54 +11,175 @@
  *******************************************************************************/
 package org.eclipse.jst.jsp.core.internal.validation;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Iterator;
+import java.util.Locale;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.content.IContentDescription;
+import org.eclipse.core.runtime.content.IContentType;
 import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
+import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
 import org.eclipse.jst.jsp.core.internal.domdocument.DOMModelForJSP;
 import org.eclipse.jst.jsp.core.internal.java.jspel.JSPELParser;
 import org.eclipse.jst.jsp.core.internal.java.jspel.ParseException;
 import org.eclipse.jst.jsp.core.internal.java.jspel.Token;
 import org.eclipse.jst.jsp.core.internal.java.jspel.TokenMgrError;
+import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
+import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionCollection;
 import org.eclipse.wst.validation.internal.core.Message;
+import org.eclipse.wst.validation.internal.core.ValidationException;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
+import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
+import org.eclipse.wst.validation.internal.provisional.core.IValidator;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
 
 
-public class JSPELValidator extends JSPValidator {
-	
-	protected void validateFile(IFile file, IReporter reporter) {
-		
-		IStructuredModel model = null;
-		try {
-			model = StructuredModelManager.getModelManager().getModelForRead(file);
-			DOMModelForJSP jspModel = (DOMModelForJSP) model;
-			IStructuredDocument structuredDoc = jspModel.getStructuredDocument();
-			IStructuredDocumentRegion curNode = structuredDoc.getFirstStructuredDocumentRegion();
-			while (null != curNode && !reporter.isCancelled()) {
-				if (curNode.getType() != DOMRegionContext.XML_COMMENT_TEXT && curNode.getType() != DOMRegionContext.XML_CDATA_TEXT && curNode.getType() != DOMRegionContext.UNDEFINED) {
-					validateRegionContainer(curNode, reporter, file);
-				}
-				curNode = curNode.getNext();
-			}
+public class JSPELValidator implements IValidator {
+
+	static private class LocalizedMessage extends Message {
+		private String _message = null;
+
+		public LocalizedMessage(int severity, String messageText) {
+			this(severity, messageText, null);
 		}
-		catch (Exception e) {
+
+		public LocalizedMessage(int severity, String messageText, IResource targetObject) {
+			this(severity, messageText, (Object) targetObject);
 		}
-		finally {
-			if (null != model)
-				model.releaseFromRead();
+
+		public LocalizedMessage(int severity, String messageText, Object targetObject) {
+			super(null, severity, null);
+			setLocalizedMessage(messageText);
+			setTargetObject(targetObject);
+		}
+
+		public void setLocalizedMessage(String message) {
+			_message = message;
+		}
+
+		public String getLocalizedMessage() {
+			return _message;
+		}
+
+		public String getText() {
+			return getLocalizedMessage();
+		}
+
+		public String getText(ClassLoader cl) {
+			return getLocalizedMessage();
+		}
+
+		public String getText(Locale l) {
+			return getLocalizedMessage();
+		}
+
+		public String getText(Locale l, ClassLoader cl) {
+			return getLocalizedMessage();
 		}
 	}
-	
+
+	static boolean shouldValidate(IFile file) {
+		IResource resource = file;
+		do {
+			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible() || resource.getName().charAt(0) == '.') {
+				return false;
+			}
+			resource = resource.getParent();
+		}
+		while ((resource.getType() & IResource.PROJECT) == 0);
+		return true;
+	}
+
+	/**
+	 * Determines if file is jsp fragment or not
+	 * 
+	 * @param file
+	 *            assumes file is not null and exists
+	 * @return true if file is jsp fragment, false otherwise
+	 */
+	private boolean isFragment(IFile file) {
+		boolean isFragment = false;
+		InputStream is = null;
+		try {
+			IContentType contentTypeJSP = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT);
+			// check this before description, it's less expensive
+			if (contentTypeJSP.isAssociatedWith(file.getName())) {
+
+				IContentDescription contentDescription = file.getContentDescription();
+				// it can be null
+				if (contentDescription == null) {
+					is = file.getContents();
+					contentDescription = Platform.getContentTypeManager().getDescriptionFor(is, file.getName(), new QualifiedName[]{IContentDescription.CHARSET});
+				}
+				if (contentDescription != null) {
+					String fileCtId = contentDescription.getContentType().getId();
+					isFragment = (fileCtId != null && ContentTypeIdForJSP.ContentTypeID_JSPFRAGMENT.equals(fileCtId));
+				}
+			}
+		}
+		catch (IOException e) {
+			// ignore, assume it's invalid JSP
+		}
+		catch (CoreException e) {
+			// ignore, assume it's invalid JSP
+		}
+		finally {
+			// must close input stream in case others need it
+			if (is != null)
+				try {
+					is.close();
+				}
+				catch (Exception e) {
+					// not sure how to recover at this point
+				}
+		}
+		return isFragment;
+	}
+
+	/**
+	 * Performs extra checks on the file to see if file should really be
+	 * validated.
+	 * 
+	 * @param file
+	 *            Assumes shouldValidate was already called on file so it
+	 *            should not be null and does exist
+	 * @return true if should validate file, false otherwise
+	 */
+	private boolean shouldValidate2(IFile file) {
+		// get preference for validate jsp fragments
+		boolean shouldValidate = Platform.getPreferencesService().getBoolean(JSPCorePlugin.getDefault().getBundle().getSymbolicName(), JSPCorePreferenceNames.VALIDATE_FRAGMENTS, true, null);
+
+		/*
+		 * if jsp fragments should not be validated, check if file is jsp
+		 * fragment
+		 */
+		if (!shouldValidate) {
+			boolean isFragment = isFragment(file);
+			shouldValidate = !isFragment;
+		}
+
+		return shouldValidate;
+	}
+
 	protected void validateRegionContainer(ITextRegionCollection container, IReporter reporter, IFile file) {
+
 		ITextRegionCollection containerRegion = container;
 		Iterator regions = containerRegion.getRegions().iterator();
 		ITextRegion region = null;
@@ -102,4 +223,49 @@
 			reporter.addMessage(this, message);
 		}
 	}
+
+	public void cleanup(org.eclipse.wst.validation.internal.provisional.core.IReporter reporter) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void validate(IValidationContext helper, IReporter reporter) throws ValidationException {
+		String[] uris = helper.getURIs();
+		reporter.removeAllMessages(this);
+		// IValidationContext may return a null array
+		if (uris != null) {
+			for (int i = 0; i < uris.length && !reporter.isCancelled(); i++) {
+				IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(uris[i]));
+				if (!shouldValidate(file)) {
+					continue;
+				}
+				// https://bugs.eclipse.org/bugs/show_bug.cgi?id=87351
+				if (!shouldValidate2(file)) {
+					continue;
+				}
+
+			    Message message = new LocalizedMessage(IMessage.NORMAL_SEVERITY, NLS.bind(JSPCoreMessages.MESSAGE_JSP_VALIDATING_MESSAGE_UI_, new String[]{file.getFullPath().toString()}));
+			    reporter.displaySubtask(this, message);
+				
+				IStructuredModel model = null;
+				try {
+					model = StructuredModelManager.getModelManager().getModelForRead(file);
+					DOMModelForJSP jspModel = (DOMModelForJSP) model;
+					IStructuredDocument structuredDoc = jspModel.getStructuredDocument();
+					IStructuredDocumentRegion curNode = structuredDoc.getFirstStructuredDocumentRegion();
+					while (null != (curNode = curNode.getNext()) && !reporter.isCancelled()) {
+						if (curNode.getType() != DOMRegionContext.XML_COMMENT_TEXT && curNode.getType() != DOMRegionContext.XML_CDATA_TEXT && curNode.getType() != DOMRegionContext.UNDEFINED) {
+							validateRegionContainer(curNode, reporter, file);
+						}
+					}
+				}
+				catch (Exception e) {
+				}
+				finally {
+					if (null != model)
+						model.releaseFromRead();
+				}
+			}
+		}
+	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java
deleted file mode 100644
index f63a07a..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPJavaValidator.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package org.eclipse.jst.jsp.core.internal.validation;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jdt.core.compiler.IProblem;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapterFactory;
-import org.eclipse.jst.jsp.core.internal.java.JSPTranslationExtension;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.validation.internal.provisional.core.IMessage;
-import org.eclipse.wst.validation.internal.provisional.core.IReporter;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-
-public class JSPJavaValidator extends JSPValidator {
-	
-	/**
-	 * Validate one file. It's assumed that the file has JSP content type.
-	 * 
-	 * @param f
-	 * @param reporter
-	 */
-	protected void validateFile(IFile f, IReporter reporter) {
-		
-		IDOMModel model = null;
-		try {
-			// get jsp model, get tranlsation
-			model = (IDOMModel) StructuredModelManager.getModelManager().getModelForRead(f);
-			if (model != null) {
-
-				setupAdapterFactory(model);
-				IDOMDocument xmlDoc = model.getDocument();
-				JSPTranslationAdapter translationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
-				JSPTranslation translation = translationAdapter.getJSPTranslation();
-
-				translation.setProblemCollectingActive(true);
-				translation.reconcileCompilationUnit();
-				List problems = translation.getProblems();
-				// remove old messages
-				reporter.removeAllMessages(this, f);
-				// add new messages
-				for (int i = 0; i < problems.size() && !reporter.isCancelled(); i++) {
-					IMessage m = createMessageFromProblem((IProblem) problems.get(i), f, translation, model.getStructuredDocument());
-					if (m != null)
-						reporter.addMessage(this, m);
-				}
-			}
-		}
-		catch (IOException e) {
-			Logger.logException(e);
-		}
-		catch (CoreException e) {
-			Logger.logException(e);
-		}
-		finally {
-			if (model != null)
-				model.releaseFromRead();
-		}
-	}
-	
-	/**
-	 * When loading model from a file, you need to explicitly add adapter
-	 * factory.
-	 * 
-	 * @param sm
-	 */
-	private void setupAdapterFactory(IStructuredModel sm) {
-		JSPTranslationAdapterFactory factory = new JSPTranslationAdapterFactory();
-		sm.getFactoryRegistry().addFactory(factory);
-	}
-	
-	/**
-	 * Creates an IMessage from an IProblem
-	 * 
-	 * @param problem
-	 * @param f
-	 * @param translation
-	 * @param structuredDoc
-	 * @return message representation of the problem, or null if it could not
-	 *         create one
-	 */
-	private IMessage createMessageFromProblem(IProblem problem, IFile f, JSPTranslation translation, IStructuredDocument structuredDoc) {
-
-		int sourceStart = translation.getJspOffset(problem.getSourceStart());
-		int sourceEnd = translation.getJspOffset(problem.getSourceEnd());
-		if (sourceStart == -1)
-			return null;
-		
-		// line number for marker starts @ 1
-		// line number from document starts @ 0
-		int lineNo = structuredDoc.getLineOfOffset(sourceStart) + 1;
-
-		int sev = problem.isError() ? IMessage.HIGH_SEVERITY : IMessage.NORMAL_SEVERITY;
-
-		IMessage m = new LocalizedMessage(sev, problem.getMessage(), f);
-
-		m.setLineNo(lineNo);
-		m.setOffset(sourceStart);
-		m.setLength(sourceEnd - sourceStart + 1);
-
-		// need additional adjustment for problems from
-		// indirect (included) files
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=119633
-		if(translation.isIndirect(problem.getSourceStart())) {
-			adjustIndirectPosition(m, translation);
-		}
-		
-		return m;
-	}
-
-	/**
-	 * Assumed the message offset is an indirect position.
-	 * In other words, an error from an included file.
-	 * 
-	 * @param m
-	 * @param translation
-	 */
-	private void adjustIndirectPosition(IMessage m, JSPTranslation translation) {
-		
-		if(!(translation instanceof JSPTranslationExtension))
-			return;
-		
-		IDocument jspDoc = ((JSPTranslationExtension)translation).getJspDocument();
-		if(!(jspDoc instanceof IStructuredDocument))
-			return;
-		
-		IStructuredDocument sDoc = (IStructuredDocument)jspDoc;
-		IStructuredDocumentRegion[] regions = sDoc.getStructuredDocumentRegions(0, m.getOffset() + m.getLength());
-		// iterate backwards until you hit the include directive
-		for(int i=regions.length-1; i>=0; i--) {
-			
-			IStructuredDocumentRegion region = regions[i];
-			if(region.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				if(getDirectiveName(region).equals("include")) { //$NON-NLS-1$
-					ITextRegion fileValueRegion = getAttributeValueRegion(region, "file"); //$NON-NLS-1$
-					m.setOffset(region.getStartOffset(fileValueRegion));
-					m.setLength(fileValueRegion.getTextLength());
-					break;
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java
index a8ae23d..2e1ffb7 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/validation/JSPValidator.java
@@ -14,41 +14,37 @@
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.content.IContentDescription;
 import org.eclipse.core.runtime.content.IContentType;
-import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.jdt.core.compiler.IProblem;
 import org.eclipse.jst.jsp.core.internal.JSPCoreMessages;
-import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
+import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
+import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
+import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
+import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
+import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapterFactory;
+import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
 import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
 import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.validation.internal.core.Message;
 import org.eclipse.wst.validation.internal.core.ValidationException;
 import org.eclipse.wst.validation.internal.operations.IWorkbenchContext;
 import org.eclipse.wst.validation.internal.provisional.core.IMessage;
 import org.eclipse.wst.validation.internal.provisional.core.IReporter;
 import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
-import org.eclipse.wst.validation.internal.provisional.core.IValidatorJob;
-import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
+import org.eclipse.wst.validation.internal.provisional.core.IValidator;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
-/**
- * Performs some common JSP validation tasks
- */
-public class JSPValidator implements IValidatorJob {
+public class JSPValidator implements IValidator {
 
-	private static final String PLUGIN_ID_JSP_CORE = "org.eclipse.jst.jsp.core"; //$NON-NLS-1$
-
-	protected class LocalizedMessage extends Message {
-
+	static private class LocalizedMessage extends Message {
 		private String _message = null;
 
 		public LocalizedMessage(int severity, String messageText) {
@@ -90,7 +86,26 @@
 		}
 	}
 
-	protected class JSPFileVisitor implements IResourceProxyVisitor {
+	static boolean shouldValidate(IFile file) {
+		IResource resource = file;
+		do {
+			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible() || resource.getName().charAt(0) == '.') {
+				return false;
+			}
+			resource = resource.getParent();
+		}
+		while ((resource.getType() & IResource.PROJECT) == 0);
+		return true;
+	}
+
+	// for debugging
+	static final boolean DEBUG;
+	static {
+		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator"); //$NON-NLS-1$
+		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
+	}
+
+	private class JSPFileVisitor implements IResourceProxyVisitor {
 
 		private List fFiles = new ArrayList();
 		private IContentType fContentTypeJSP = null;
@@ -147,13 +162,7 @@
 			for (int i = 0; i < uris.length && !reporter.isCancelled(); i++) {
 				currentFile = wsRoot.getFile(new Path(uris[i]));
 				if (currentFile != null && currentFile.exists()) {
-					if(shouldValidate(currentFile) && shouldValidate2(currentFile)) {
-
-					    Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, NLS.bind(JSPCoreMessages.MESSAGE_JSP_VALIDATING_MESSAGE_UI_, new String[]{currentFile.getFullPath().toString()}));
-					    reporter.displaySubtask(this, message);
-					    
-						validateFile(currentFile, reporter);
-					}
+					validateFile(currentFile, reporter);
 					if (DEBUG)
 						System.out.println("validating: [" + uris[i] + "]"); //$NON-NLS-1$ //$NON-NLS-2$
 				}
@@ -176,13 +185,7 @@
 				}
 				IFile[] files = visitor.getFiles();
 				for (int i = 0; i < files.length && !reporter.isCancelled(); i++) {
-					if(shouldValidate(files[i]) && shouldValidate2(files[i])) {
-						
-					    Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, NLS.bind(JSPCoreMessages.MESSAGE_JSP_VALIDATING_MESSAGE_UI_, new String[]{files[i].getFullPath().toString()}));
-					    reporter.displaySubtask(this, message);
-					    
-						validateFile(files[i], reporter);
-					}
+					validateFile(files[i], reporter);
 					if (DEBUG)
 						System.out.println("validating: [" + files[i] + "]"); //$NON-NLS-1$ //$NON-NLS-2$
 				}
@@ -196,59 +199,96 @@
 	 * @param f
 	 * @param reporter
 	 */
-	protected void validateFile(IFile f, IReporter reporter) {
-		// subclasses should implement (for batch validation)
-	}
-	
-	/**
-	 * 
-	 * @param sdr
-	 * @return the jsp directive name
-	 */
-	protected String getDirectiveName(IStructuredDocumentRegion sdr) {
-		String name = "";
-		ITextRegionList subRegions = sdr.getRegions();
-		for (int j = 0; j < subRegions.size(); j++) {
-			ITextRegion subRegion = subRegions.get(j);
-			if(subRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME) {
-				name = sdr.getText(subRegion);
-				break;
-			}
+	private void validateFile(IFile f, IReporter reporter) {
+		if (!shouldValidate(f)) {
+			return;
 		}
-		return name;
-	}
-	
-	/**
-	 * 
-	 * @param sdr
-	 * @param attrName
-	 * @return the ITextRegion for the attribute value of the given attribute name
-	 */
-	protected ITextRegion getAttributeValueRegion(IStructuredDocumentRegion sdr, String attrName) {
-		ITextRegion valueRegion = null;
-		ITextRegionList subRegions = sdr.getRegions();
-		for (int i = 0; i < subRegions.size(); i++) {
-			ITextRegion subRegion = subRegions.get(i);
-			if(subRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_NAME && sdr.getText(subRegion).equals(attrName)) {
-				
-				for(int j=i; j<subRegions.size(); j++) {
-					subRegion = subRegions.get(j);
-					if(subRegion.getType() == DOMRegionContext.XML_TAG_ATTRIBUTE_VALUE) {
-						valueRegion = subRegion;
-						break;
-					}
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=87351
+		if (!shouldValidate2(f)) {
+			return;
+		}
+
+	    Message message = new LocalizedMessage(IMessage.LOW_SEVERITY, NLS.bind(JSPCoreMessages.MESSAGE_JSP_VALIDATING_MESSAGE_UI_, new String[]{f.getFullPath().toString()}));
+	    reporter.displaySubtask(this, message);
+		
+		IDOMModel model = null;
+		try {
+			// get jsp model, get tranlsation
+			model = (IDOMModel) StructuredModelManager.getModelManager().getModelForRead(f);
+			if (model != null) {
+
+				setupAdapterFactory(model);
+				IDOMDocument xmlDoc = model.getDocument();
+				JSPTranslationAdapter translationAdapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
+				JSPTranslation translation = translationAdapter.getJSPTranslation();
+
+				translation.setProblemCollectingActive(true);
+				translation.reconcileCompilationUnit();
+				List problems = translation.getProblems();
+				// remove old messages
+				reporter.removeAllMessages(this, f);
+				// add new messages
+				for (int i = 0; i < problems.size() && !reporter.isCancelled(); i++) {
+					IMessage m = createMessageFromProblem((IProblem) problems.get(i), f, translation, model.getStructuredDocument());
+					if (m != null)
+						reporter.addMessage(this, m);
 				}
-				break;
 			}
 		}
-		return valueRegion;
+		catch (IOException e) {
+			if (DEBUG)
+				e.printStackTrace();
+		}
+		catch (CoreException e) {
+			if (DEBUG)
+				e.printStackTrace();
+		}
+		finally {
+			if (model != null)
+				model.releaseFromRead();
+		}
 	}
-	
-	protected String getAttributeValue(IStructuredDocumentRegion sdr, String attrName) {
-		ITextRegion r = getAttributeValueRegion(sdr, attrName);
-		if(r != null)
-			return sdr.getText(r).trim();
-		return "";
+
+	/**
+	 * Creates an IMessage from an IProblem
+	 * 
+	 * @param problem
+	 * @param f
+	 * @param translation
+	 * @param structuredDoc
+	 * @return message representation of the problem, or null if it could not
+	 *         create one
+	 */
+	private IMessage createMessageFromProblem(IProblem problem, IFile f, JSPTranslation translation, IStructuredDocument structuredDoc) {
+
+		int sourceStart = translation.getJspOffset(problem.getSourceStart());
+		int sourceEnd = translation.getJspOffset(problem.getSourceEnd());
+		if (sourceStart == -1)
+			return null;
+		// line number for marker starts @ 1
+		// line number from document starts @ 0
+		int lineNo = structuredDoc.getLineOfOffset(sourceStart) + 1;
+
+		int sev = problem.isError() ? IMessage.HIGH_SEVERITY : IMessage.NORMAL_SEVERITY;
+
+		IMessage m = new LocalizedMessage(sev, problem.getMessage(), f);
+
+		m.setLineNo(lineNo);
+		m.setOffset(sourceStart);
+		m.setLength(sourceEnd - sourceStart + 1);
+
+		return m;
+	}
+
+	/**
+	 * When loading model from a file, you need to explicitly add adapter
+	 * factory.
+	 * 
+	 * @param sm
+	 */
+	private void setupAdapterFactory(IStructuredModel sm) {
+		JSPTranslationAdapterFactory factory = new JSPTranslationAdapterFactory();
+		sm.getFactoryRegistry().addFactory(factory);
 	}
 
 	/**
@@ -296,26 +336,7 @@
 		}
 		return isFragment;
 	}
-	
-	private boolean shouldValidate(IFile file) {
-		IResource resource = file;
-		do {
-			if (resource.isDerived() || resource.isTeamPrivateMember() || !resource.isAccessible() || resource.getName().charAt(0) == '.') {
-				return false;
-			}
-			resource = resource.getParent();
-		}
-		while ((resource.getType() & IResource.PROJECT) == 0);
-		return true;
-	}
 
-	// for debugging
-	static final boolean DEBUG;
-	static {
-		String value = Platform.getDebugOption("org.eclipse.jst.jsp.core/debug/jspvalidator"); //$NON-NLS-1$
-		DEBUG = value != null && value.equalsIgnoreCase("true"); //$NON-NLS-1$
-	}
-	
 	/**
 	 * Performs extra checks on the file to see if file should really be
 	 * validated.
@@ -325,9 +346,9 @@
 	 *            should not be null and does exist
 	 * @return true if should validate file, false otherwise
 	 */
-	 private boolean shouldValidate2(IFile file) {
+	private boolean shouldValidate2(IFile file) {
 		// get preference for validate jsp fragments
-		boolean shouldValidate = Boolean.valueOf(JSPFContentProperties.getProperty(JSPFContentProperties.VALIDATE_FRAGMENTS, file, true)).booleanValue();
+		boolean shouldValidate = Platform.getPreferencesService().getBoolean(JSPCorePlugin.getDefault().getBundle().getSymbolicName(), JSPCorePreferenceNames.VALIDATE_FRAGMENTS, true, null);
 
 		/*
 		 * if jsp fragments should not be validated, check if file is jsp
@@ -340,20 +361,4 @@
 
 		return shouldValidate;
 	}
-	 
-	 public ISchedulingRule getSchedulingRule(IValidationContext helper) {
-		return null;
-	}
-	 
-	 public IStatus validateInJob(IValidationContext helper, IReporter reporter) throws ValidationException {
-		IStatus status = Status.OK_STATUS;
-		try{
-			validate(helper, reporter);
-		}
-		catch (ValidationException e){
-			Logger.logException(e);
-			status = new Status(IStatus.ERROR, PLUGIN_ID_JSP_CORE, IStatus.ERROR, e.getLocalizedMessage(),  e);
-		}
-		return status;
-	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
index 0727cb1..04bd47b 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/ProjectDescription.java
@@ -143,10 +143,6 @@
 			return location;
 		}
 
-		public int getRecordType() {
-			return ITaglibRecord.JAR;
-		}
-
 		/**
 		 * @return Returns the recommended/default prefix if one was given.
 		 */
@@ -156,6 +152,10 @@
 			return info.shortName;
 		}
 
+		public int getRecordType() {
+			return ITaglibRecord.JAR;
+		}
+
 		/**
 		 * 
 		 */
@@ -273,16 +273,16 @@
 			return path;
 		}
 
-		public int getRecordType() {
-			return ITaglibRecord.TLD;
-		}
-
 		public String getShortName() {
 			if (info == null)
 				return null;
 			return info.shortName;
 		}
 
+		public int getRecordType() {
+			return ITaglibRecord.TLD;
+		}
+
 		/**
 		 * @return Returns the uri.
 		 */
@@ -316,10 +316,6 @@
 			return baseLocation;
 		}
 
-		public int getRecordType() {
-			return ITaglibRecord.URL;
-		}
-
 		/**
 		 * @return Returns the recommended/default prefix if one was given.
 		 */
@@ -329,6 +325,10 @@
 			return info.shortName;
 		}
 
+		public int getRecordType() {
+			return ITaglibRecord.URL;
+		}
+
 		/**
 		 * @return Returns the uri.
 		 */
@@ -911,17 +911,6 @@
 		}
 	}
 
-	/*
-	 * private void removeClasspathLibrary(String libraryLocation) { JarRecord
-	 * record = (JarRecord) fClasspathJars.remove(libraryLocation); if (record !=
-	 * null) { URLRecord[] records = (URLRecord[])
-	 * record.getURLRecords().toArray(new URLRecord[0]); for (int i = 0; i <
-	 * records.length; i++) {
-	 * fClasspathReferences.remove(records[i].getURI()); }
-	 * TaglibIndex.fireTaglibRecordEvent(new TaglibRecordEvent(record,
-	 * ITaglibRecordEvent.REMOVED)); } }
-	 */
-
 	private String readTextofChild(Node node, String childName) {
 		NodeList children = node.getChildNodes();
 		for (int i = 0; i < children.getLength(); i++) {
@@ -933,6 +922,17 @@
 		return ""; //$NON-NLS-1$
 	}
 
+	/*
+	 * private void removeClasspathLibrary(String libraryLocation) { JarRecord
+	 * record = (JarRecord) fClasspathJars.remove(libraryLocation); if (record !=
+	 * null) { URLRecord[] records = (URLRecord[])
+	 * record.getURLRecords().toArray(new URLRecord[0]); for (int i = 0; i <
+	 * records.length; i++) {
+	 * fClasspathReferences.remove(records[i].getURI()); }
+	 * TaglibIndex.fireTaglibRecordEvent(new TaglibRecordEvent(record,
+	 * ITaglibRecordEvent.REMOVED)); } }
+	 */
+
 	void removeJAR(IResource jar) {
 		if (_debugIndexCreation)
 			Logger.log(Logger.INFO_DEBUG, "removing records for JAR " + jar.getFullPath()); //$NON-NLS-1$
@@ -1064,8 +1064,6 @@
 				record = (ITaglibRecord) getImplicitReferences(webxmls[i].path.toString()).get(reference);
 			}
 		}
-
-
 		return record;
 	}
 
@@ -1112,7 +1110,6 @@
 	void updateJAR(IResource jar, int deltaKind) {
 		if (_debugIndexCreation)
 			Logger.log(Logger.INFO_DEBUG, "creating records for JAR " + jar.getFullPath()); //$NON-NLS-1$
-
 		String jarLocationString = jar.getLocation().toString();
 		String[] entries = JarUtilities.getEntryNames(jar);
 		JarRecord jarRecord = createJARRecord(jar);
@@ -1197,7 +1194,7 @@
 			provider.setValidating(false);
 			provider.setRootElementName("web-app"); //$NON-NLS-1$
 			provider.setBaseReference(webxml.getParent().getLocation().toString());
-			document = provider.getDocument(false);
+			document = provider.getDocument();
 		}
 		catch (CoreException e) {
 			Logger.logException(e);
@@ -1220,11 +1217,11 @@
 		webxmlRecord.path = webxml.getFullPath();
 		fWebXMLReferences.put(webxmlRecord.getWebXML().toString(), webxmlRecord);
 		NodeList taglibs = document.getElementsByTagName(JSP12TLDNames.TAGLIB);
-		for (int iTaglib = 0; iTaglib < taglibs.getLength(); iTaglib++) {
-			String taglibUri = readTextofChild(taglibs.item(iTaglib), "taglib-uri").trim(); //$NON-NLS-1$
+		for (int i = 0; i < taglibs.getLength(); i++) {
+			String taglibUri = readTextofChild(taglibs.item(i), "taglib-uri").trim(); //$NON-NLS-1$
 			// specified location is relative to root of the webapp
-			String taglibLocation = readTextofChild(taglibs.item(iTaglib), "taglib-location").trim(); //$NON-NLS-1$
-			IPath path = null; 
+			String taglibLocation = readTextofChild(taglibs.item(i), "taglib-location").trim(); //$NON-NLS-1$
+			IPath path = null;
 			if (taglibLocation.startsWith("/")) { //$NON-NLS-1$
 				path = new Path(getLocalRoot(webxml.getFullPath().toString()) + taglibLocation);
 			}
@@ -1281,4 +1278,4 @@
 			}
 		}
 	}
-}
+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
index 44e5693..57ea525 100644
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
+++ b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/taglib/TaglibIndex.java
@@ -30,7 +30,6 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.jobs.ILock;
 import org.eclipse.jdt.core.ElementChangedEvent;
 import org.eclipse.jdt.core.IElementChangedListener;
 import org.eclipse.jdt.core.IJavaElement;
@@ -39,8 +38,7 @@
 import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jst.jsp.core.internal.Logger;
-import org.eclipse.wst.sse.core.utils.StringUtils;
-import org.osgi.framework.Bundle;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 
 /**
  * A non-extendable index manager for taglibs similar to the previous J2EE
@@ -55,6 +53,7 @@
  * @since 1.0
  */
 public final class TaglibIndex {
+
 	class ClasspathChangeListener implements IElementChangedListener {
 		Stack classpathStack = new Stack();
 		List projectsIndexed = new ArrayList(1);
@@ -62,21 +61,12 @@
 		public void elementChanged(ElementChangedEvent event) {
 			if (!isIndexAvailable())
 				return;
-			try {
-				LOCK.acquire();
-				classpathStack.clear();
-				projectsIndexed.clear();
-				elementChanged(event.getDelta());
-			}
-			finally {
-				LOCK.release();
-			}
+			classpathStack.clear();
+			projectsIndexed.clear();
+			elementChanged(event.getDelta());
 		}
 
 		private void elementChanged(IJavaElementDelta delta) {
-			if (frameworkIsShuttingDown())
-				return;
-
 			if (delta.getElement().getElementType() == IJavaElement.JAVA_MODEL) {
 				IJavaElementDelta[] changed = delta.getChangedChildren();
 				for (int i = 0; i < changed.length; i++) {
@@ -86,15 +76,14 @@
 			else if (delta.getElement().getElementType() == IJavaElement.JAVA_PROJECT) {
 				if ((delta.getFlags() & IJavaElementDelta.F_CLASSPATH_CHANGED) != 0) {
 					IJavaElement proj = delta.getElement();
-					handleClasspathChange((IJavaProject) proj);
+					synchronized (proj) {
+						handleClasspathChange((IJavaProject) proj);
+					}
 				}
 			}
 		}
 
 		private void handleClasspathChange(IJavaProject project) {
-			if (frameworkIsShuttingDown())
-				return;
-
 			/*
 			 * Loops in the build paths could cause us to pop more than we
 			 * push
@@ -102,35 +91,37 @@
 			if (classpathStack.contains(project.getElementName()))
 				return;
 
-			classpathStack.push(project.getElementName());
-			try {
-				/* Handle changes to this project's build path */
-				IResource resource = project.getCorrespondingResource();
-				if (resource.getType() == IResource.PROJECT && !projectsIndexed.contains(resource)) {
-					ProjectDescription description = getDescription((IProject) resource);
-					if (description != null && !frameworkIsShuttingDown()) {
+			synchronized (project) {
+				classpathStack.push(project.getElementName());
+				try {
+					/* Handle changes to this project's build path */
+					IResource resource = project.getCorrespondingResource();
+					if (resource.getType() == IResource.PROJECT && !projectsIndexed.contains(resource)) {
 						projectsIndexed.add(resource);
-						description.indexClasspath();
+						boolean classpathIndexIsOld = fProjectDescriptions.containsKey(resource);
+						ProjectDescription description = createDescription((IProject) resource);
+						if (classpathIndexIsOld) {
+							description.indexClasspath();
+						}
+					}
+					/*
+					 * Update indeces for projects who include this project in
+					 * their build path (e.g. toggling the "exportation" of a
+					 * taglib JAR in this project affects the JAR's visibility
+					 * in other projects)
+					 */
+					IJavaProject[] projects = project.getJavaModel().getJavaProjects();
+					for (int i = 0; i < projects.length; i++) {
+						IJavaProject otherProject = projects[i];
+						if (StringUtils.contains(otherProject.getRequiredProjectNames(), project.getElementName(), false) && !classpathStack.contains(otherProject.getElementName())) {
+							handleClasspathChange(otherProject);
+						}
 					}
 				}
-				/*
-				 * Update indeces for projects who include this project in
-				 * their build path (e.g. toggling the "exportation" of a
-				 * taglib JAR in this project affects the JAR's visibility in
-				 * other projects)
-				 */
-				IJavaProject[] projects = project.getJavaModel().getJavaProjects();
-				for (int i = 0; i < projects.length; i++) {
-					IJavaProject otherProject = projects[i];
-					if (StringUtils.contains(otherProject.getRequiredProjectNames(), project.getElementName(), false) && !classpathStack.contains(otherProject.getElementName()) && !frameworkIsShuttingDown()) {
-						handleClasspathChange(otherProject);
-					}
+				catch (JavaModelException e) {
 				}
+				classpathStack.pop();
 			}
-			catch (JavaModelException e) {
-			}
-			classpathStack.pop();
-
 		}
 	}
 
@@ -138,133 +129,127 @@
 		public void resourceChanged(IResourceChangeEvent event) {
 			if (!isIndexAvailable())
 				return;
-			try {
-				LOCK.acquire();
-				switch (event.getType()) {
-					case IResourceChangeEvent.PRE_CLOSE :
-					case IResourceChangeEvent.PRE_DELETE : {
-						try {
-							// pair deltas with projects
-							IResourceDelta[] deltas = new IResourceDelta[]{event.getDelta()};
-							IProject[] projects = null;
+			switch (event.getType()) {
+				case IResourceChangeEvent.PRE_CLOSE :
+				case IResourceChangeEvent.PRE_DELETE : {
+					try {
+						// pair deltas with projects
+						IResourceDelta[] deltas = new IResourceDelta[]{event.getDelta()};
+						IProject[] projects = null;
 
-							if (deltas != null && deltas.length > 0) {
-								IResource resource = null;
-								if (deltas[0] != null) {
-									resource = deltas[0].getResource();
+						if (deltas != null && deltas.length > 0) {
+							IResource resource = null;
+							if (deltas[0] != null) {
+								resource = deltas[0].getResource();
+							}
+							else {
+								resource = event.getResource();
+							}
+
+							if (resource != null) {
+								if (resource.getType() == IResource.ROOT) {
+									deltas = deltas[0].getAffectedChildren();
+									projects = new IProject[deltas.length];
+									for (int i = 0; i < deltas.length; i++) {
+										if (deltas[i].getResource().getType() == IResource.PROJECT) {
+											projects[i] = (IProject) deltas[i].getResource();
+										}
+									}
 								}
 								else {
-									resource = event.getResource();
-								}
-
-								if (resource != null) {
-									if (resource.getType() == IResource.ROOT) {
-										deltas = deltas[0].getAffectedChildren();
-										projects = new IProject[deltas.length];
-										for (int i = 0; i < deltas.length; i++) {
-											if (deltas[i].getResource().getType() == IResource.PROJECT) {
-												projects[i] = (IProject) deltas[i].getResource();
-											}
-										}
+									projects = new IProject[1];
+									if (resource.getType() != IResource.PROJECT) {
+										projects[0] = resource.getProject();
 									}
 									else {
-										projects = new IProject[1];
-										if (resource.getType() != IResource.PROJECT) {
-											projects[0] = resource.getProject();
-										}
-										else {
-											projects[0] = (IProject) resource;
-										}
-									}
-								}
-								for (int i = 0; i < projects.length; i++) {
-									if (_debugIndexCreation) {
-										Logger.log(Logger.INFO_DEBUG, "TaglibIndex noticed " + projects[i].getName() + " is about to be deleted/closed"); //$NON-NLS-1$ //$NON-NLS-2$
-									}
-									ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(projects[i]);
-									if (description != null) {
-										if (_debugIndexCreation) {
-											Logger.log(Logger.INFO_DEBUG, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
-										}
-										description.clear();
+										projects[0] = (IProject) resource;
 									}
 								}
 							}
-						}
-						catch (Exception e) {
-							Logger.logException("Exception while processing resource deletion", e); //$NON-NLS-1$
+							for (int i = 0; i < projects.length; i++) {
+								if (_debugIndexCreation) {
+									Logger.log(Logger.INFO_DEBUG, "TaglibIndex noticed " + projects[i].getName() + " is about to be deleted/closed"); //$NON-NLS-1$ //$NON-NLS-2$
+								}
+								ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(projects[i]);
+								if (description != null) {
+									if (_debugIndexCreation) {
+										Logger.log(Logger.INFO_DEBUG, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
+									}
+									description.clear();
+								}
+							}
 						}
 					}
-					case IResourceChangeEvent.POST_CHANGE : {
-						try {
-							// pair deltas with projects
-							IResourceDelta[] deltas = new IResourceDelta[]{event.getDelta()};
-							IProject[] projects = null;
-
-							if (deltas != null && deltas.length > 0) {
-								IResource resource = null;
-								if (deltas[0] != null) {
-									resource = deltas[0].getResource();
-								}
-								else {
-									resource = event.getResource();
-								}
-
-								if (resource != null) {
-									if (resource.getType() == IResource.ROOT) {
-										deltas = deltas[0].getAffectedChildren();
-										projects = new IProject[deltas.length];
-										for (int i = 0; i < deltas.length; i++) {
-											if (deltas[i].getResource().getType() == IResource.PROJECT) {
-												projects[i] = (IProject) deltas[i].getResource();
-											}
-										}
-									}
-									else {
-										projects = new IProject[1];
-										if (resource.getType() != IResource.PROJECT) {
-											projects[0] = resource.getProject();
-										}
-										else {
-											projects[0] = (IProject) resource;
-										}
-									}
-								}
-								for (int i = 0; i < projects.length; i++) {
-									try {
-										if (deltas[i] != null && deltas[i].getKind() != IResourceDelta.REMOVED && projects[i].isAccessible()) {
-											ProjectDescription description = getDescription(projects[i]);
-											if (description != null && !frameworkIsShuttingDown()) {
-												deltas[i].accept(description.getVisitor());
-											}
-										}
-										if (!projects[i].isAccessible() || (deltas[i] != null && deltas[i].getKind() == IResourceDelta.REMOVED)) {
-											if (_debugIndexCreation) {
-												Logger.log(Logger.INFO_DEBUG, "TaglibIndex noticed " + projects[i].getName() + " was removed or is no longer accessible"); //$NON-NLS-1$ //$NON-NLS-2$
-											}
-											ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(projects[i]);
-											if (description != null) {
-												if (_debugIndexCreation) {
-													Logger.log(Logger.INFO_DEBUG, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
-												}
-												description.clear();
-											}
-										}
-									}
-									catch (CoreException e) {
-										Logger.logException(e);
-									}
-								}
-							}
-						}
-						catch (Exception e) {
-							Logger.logException("Exception while processing resource change", e); //$NON-NLS-1$
-						}
+					catch (Exception e) {
+						Logger.logException("Exception while processing resource deletion", e); //$NON-NLS-1$
 					}
 				}
-			}
-			finally {
-				LOCK.release();
+				case IResourceChangeEvent.POST_CHANGE : {
+					try {
+						// pair deltas with projects
+						IResourceDelta[] deltas = new IResourceDelta[]{event.getDelta()};
+						IProject[] projects = null;
+
+						if (deltas != null && deltas.length > 0) {
+							IResource resource = null;
+							if (deltas[0] != null) {
+								resource = deltas[0].getResource();
+							}
+							else {
+								resource = event.getResource();
+							}
+
+							if (resource != null) {
+								if (resource.getType() == IResource.ROOT) {
+									deltas = deltas[0].getAffectedChildren();
+									projects = new IProject[deltas.length];
+									for (int i = 0; i < deltas.length; i++) {
+										if (deltas[i].getResource().getType() == IResource.PROJECT) {
+											projects[i] = (IProject) deltas[i].getResource();
+										}
+									}
+								}
+								else {
+									projects = new IProject[1];
+									if (resource.getType() != IResource.PROJECT) {
+										projects[0] = resource.getProject();
+									}
+									else {
+										projects[0] = (IProject) resource;
+									}
+								}
+							}
+							for (int i = 0; i < projects.length; i++) {
+								try {
+									if (deltas[i] != null && deltas[i].getKind() != IResourceDelta.REMOVED && projects[i].isAccessible()) {
+										ProjectDescription description = createDescription(projects[i]);
+										synchronized (projects[i]) {
+											deltas[i].accept(description.getVisitor());
+										}
+									}
+									if (!projects[i].isAccessible() || (deltas[i] != null && deltas[i].getKind() == IResourceDelta.REMOVED)) {
+										if (_debugIndexCreation) {
+											Logger.log(Logger.INFO_DEBUG, "TaglibIndex noticed " + projects[i].getName() + " was removed or is no longer accessible"); //$NON-NLS-1$ //$NON-NLS-2$
+										}
+										ProjectDescription description = (ProjectDescription) fProjectDescriptions.remove(projects[i]);
+										if (description != null) {
+											if (_debugIndexCreation) {
+												Logger.log(Logger.INFO_DEBUG, "removing index of " + description.fProject.getName()); //$NON-NLS-1$
+											}
+											description.clear();
+										}
+									}
+								}
+								catch (CoreException e) {
+									Logger.logException(e);
+								}
+							}
+						}
+					}
+					catch (Exception e) {
+						Logger.logException("Exception while processing resource change", e); //$NON-NLS-1$
+					}
+				}
 			}
 		}
 	}
@@ -274,13 +259,9 @@
 	static boolean _debugEvents = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/events")); //$NON-NLS-1$ //$NON-NLS-2$
 
 	static boolean _debugIndexCreation = "true".equalsIgnoreCase(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/indexcreation")); //$NON-NLS-1$ //$NON-NLS-2$
-
 	static final boolean _debugResolution = "true".equals(Platform.getDebugOption("org.eclipse.jst.jsp.core/taglib/resolve")); //$NON-NLS-1$ //$NON-NLS-2$
-
 	static TaglibIndex _instance;
-
-	static boolean ENABLED = false;
-	static ILock LOCK = null;
+	static boolean ENABLED = true;
 
 	/**
 	 * NOT API.
@@ -289,13 +270,7 @@
 	 *            the listener to be added
 	 */
 	public static void addTaglibIndexListener(ITaglibIndexListener listener) {
-		try {
-			LOCK.acquire();
-			_instance.internalAddTaglibIndexListener(listener);
-		}
-		finally {
-			LOCK.release();
-		}
+		_instance.internalAddTaglibIndexListener(listener);
 	}
 
 	static void fireTaglibRecordEvent(ITaglibRecordEvent event) {
@@ -319,9 +294,6 @@
 	 * Finds all of the visible ITaglibRecords for the given path in the
 	 * workspace. Taglib mappings from web.xml files are only visible to paths
 	 * within the web.xml's corresponding web content folder.
-	 * <p>
-	 * Values defined within the XML Catalog will not be returned.
-	 * </p>
 	 * 
 	 * @param fullPath -
 	 *            a path within the workspace
@@ -340,17 +312,10 @@
 	 * @deprecated - is not correct in flexible projects
 	 * @param path -
 	 *            a path under the web-app root
-	 * @return the IPath considered to be the web-app's root for the given
-	 *         path
+	 * @return
 	 */
 	public static IPath getContextRoot(IPath path) {
-		try {
-			LOCK.acquire();
-			return _instance.internalGetContextRoot(path);
-		}
-		finally {
-			LOCK.release();
-		}
+		return _instance.internalGetContextRoot(path);
 	}
 
 	/**
@@ -360,13 +325,7 @@
 	 *            the listener to be removed
 	 */
 	public static void removeTaglibIndexListener(ITaglibIndexListener listener) {
-		try {
-			LOCK.acquire();
-			_instance.internalRemoveTaglibIndexListener(listener);
-		}
-		finally {
-			LOCK.release();
-		}
+		_instance.internalRemoveTaglibIndexListener(listener);
 	}
 
 	/**
@@ -388,14 +347,7 @@
 	 * @See ITaglibRecord
 	 */
 	public static ITaglibRecord resolve(String basePath, String reference, boolean crossProjects) {
-		ITaglibRecord result = null;
-		try {
-			LOCK.acquire();
-			result = _instance.internalResolve(basePath, reference, crossProjects);
-		}
-		finally {
-			LOCK.release();
-		}
+		ITaglibRecord result = _instance.internalResolve(basePath, reference, crossProjects);
 		if (_debugResolution) {
 			if (result == null) {
 				Logger.log(Logger.INFO_DEBUG, "TaglibIndex could not resolve \"" + reference + "\" from " + basePath); //$NON-NLS-1$ //$NON-NLS-2$
@@ -449,12 +401,8 @@
 	private ClasspathChangeListener fClasspathChangeListener = null;
 
 	Map fProjectDescriptions;
-
 	private ResourceChangeListener fResourceChangeListener;
-
 	private ITaglibIndexListener[] fTaglibIndexListeners = null;
-	/** symbolic name for OSGI framework */
-	private final String OSGI_FRAMEWORK_ID = "org.eclipse.osgi"; //$NON-NLS-1$
 
 	private TaglibIndex() {
 		super();
@@ -464,7 +412,6 @@
 			ResourcesPlugin.getWorkspace().addResourceChangeListener(fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
 			JavaCore.addElementChangedListener(fClasspathChangeListener);
 		}
-		LOCK = Platform.getJobManager().newLock();
 		fProjectDescriptions = new Hashtable();
 	}
 
@@ -474,40 +421,21 @@
 	 */
 	ProjectDescription createDescription(IProject project) {
 		ProjectDescription description = null;
-		description = (ProjectDescription) fProjectDescriptions.get(project);
-		if (description == null) {
-			description = new ProjectDescription(project);
-			if (ENABLED) {
-				description.index();
-				description.indexClasspath();
+		synchronized (project) {
+			description = (ProjectDescription) fProjectDescriptions.get(project);
+			if (description == null) {
+				description = new ProjectDescription(project);
+				if (ENABLED) {
+					description.index();
+					description.indexClasspath();
+				}
+				fProjectDescriptions.put(project, description);
 			}
-			fProjectDescriptions.put(project, description);
 		}
 		return description;
 	}
 
-	/**
-	 * A check to see if the OSGI framework is shutting down.
-	 * 
-	 * @return true if the System Bundle is stopped (ie. the framework is
-	 *         shutting down)
-	 */
-	boolean frameworkIsShuttingDown() {
-		// in the Framework class there's a note:
-		// set the state of the System Bundle to STOPPING.
-		// this must be done first according to section 4.19.2 from the OSGi
-		// R3 spec.
-		boolean shuttingDown = !Platform.isRunning() || Platform.getBundle(OSGI_FRAMEWORK_ID).getState() == Bundle.STOPPING;
-		return shuttingDown;
-	}
-
-	ProjectDescription getDescription(IProject project) {
-		ProjectDescription description = null;
-		description = (ProjectDescription) fProjectDescriptions.get(project);
-		return description;
-	}
-
-	private void internalAddTaglibIndexListener(ITaglibIndexListener listener) {
+	private synchronized void internalAddTaglibIndexListener(ITaglibIndexListener listener) {
 		if (fTaglibIndexListeners == null) {
 			fTaglibIndexListeners = new ITaglibIndexListener[]{listener};
 		}
@@ -535,7 +463,7 @@
 			IProject project = baseResource.getProject();
 			ProjectDescription description = _instance.createDescription(project);
 			IPath rootPath = description.getLocalRoot(baseResource.getFullPath());
-			return rootPath;
+			return ResourcesPlugin.getWorkspace().getRoot().getLocation().append(rootPath);
 		}
 		// try to handle out-of-workspace paths
 		IPath root = path;
@@ -546,7 +474,7 @@
 		return root;
 	}
 
-	private void internalRemoveTaglibIndexListener(ITaglibIndexListener listener) {
+	private synchronized void internalRemoveTaglibIndexListener(ITaglibIndexListener listener) {
 		if (fTaglibIndexListeners != null) {
 			List listeners = new ArrayList(Arrays.asList(fTaglibIndexListeners));
 			listeners.remove(listener);
@@ -572,14 +500,16 @@
 		}
 		if (baseResource != null) {
 			project = baseResource.getProject();
-			ProjectDescription description = createDescription(project);
-			resolved = description.resolve(basePath, reference);
+			synchronized (project) {
+				ProjectDescription description = createDescription(project);
+				resolved = description.resolve(basePath, reference);
+			}
 		}
 		return resolved;
 	}
 
 	boolean isIndexAvailable() {
-		return _instance != null && ENABLED;
+		return _instance != null;
 	}
 
 	private void stop() {
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/text/IJSPPartitions.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/text/IJSPPartitions.java
deleted file mode 100644
index 8a37aac..0000000
--- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/text/IJSPPartitions.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package org.eclipse.jst.jsp.core.text;
-
-
-/**
- * This interface is not intended to be implemented.
- * It defines the partition types for JSP.
- * Clients should reference the partition type Strings defined here directly.
- * 
- * @since 1.1
- */
-public interface IJSPPartitions {
-
-	String JSP_DEFAULT = "org.eclipse.jst.jsp.DEFAULT_JSP"; //$NON-NLS-1$
-	String JSP_COMMENT = "org.eclipse.jst.jsp.JSP_COMMENT"; //$NON-NLS-1$
-	
-	String JSP_SCRIPT_PREFIX = "org.eclipse.jst.jsp.SCRIPT."; //$NON-NLS-1$
-	String JSP_CONTENT_DELIMITER = JSP_SCRIPT_PREFIX + "DELIMITER"; //$NON-NLS-1$
-	String JSP_CONTENT_JAVA = JSP_SCRIPT_PREFIX + "JAVA"; //$NON-NLS-1$
-	String JSP_CONTENT_JAVASCRIPT = JSP_SCRIPT_PREFIX + "JAVASCRIPT"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL = JSP_SCRIPT_PREFIX + "JSP_EL"; //$NON-NLS-1$
-	String JSP_DEFAULT_EL2 = JSP_SCRIPT_PREFIX + "JSP_EL2"; //$NON-NLS-1$
-	
-	String JSP_DIRECTIVE = "org.eclipse.jst.jsp.JSP_DIRECTIVE"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 4e75d34..0000000
--- a/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:36:49 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.jdt.core.prefs
index 558df3d..04d30dc 100644
--- a/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Thu Mar 02 00:35:30 EST 2006

+#Mon May 30 17:57:20 EDT 2005

 eclipse.preferences.version=1

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

@@ -62,7 +62,7 @@
 org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled

 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled

-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error

+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning

 org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning

 org.eclipse.jdt.core.compiler.source=1.3

 org.eclipse.jdt.core.incompatibleJDKLevel=ignore

diff --git a/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.pde.prefs
index 6208ecc..42fb716 100644
--- a/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.jst.jsp.ui/.settings/org.eclipse.pde.prefs
@@ -1,5 +1,4 @@
-#Tue Apr 04 01:41:30 EDT 2006
-compilers.p.build=0
+#Fri May 27 23:56:32 EDT 2005
 compilers.p.deprecated=1
 compilers.p.illegal-att-value=0
 compilers.p.no-required-att=0
diff --git a/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
index ce27f7c..879c78f 100644
--- a/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.jsp.ui/META-INF/MANIFEST.MF
@@ -2,36 +2,35 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.jsp.ui; singleton:=true
-Bundle-Version: 1.1.0
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.jst.jsp.ui.internal.JSPUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jst.jsp.ui,
- org.eclipse.jst.jsp.ui.internal;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.autoedit;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.breakpointproviders;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.contentassist;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.contentproperties.ui;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.derived;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.editor;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.format;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.hyperlink;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.java.refactoring;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.java.search;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.java.search.ui;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.preferences;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.preferences.ui;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.projection;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.registry;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.style;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.style.java;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.style.jspel;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.taginfo;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.templates;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.text;x-internal:=true,
- org.eclipse.jst.jsp.ui.internal.wizard;x-internal:=true,
+ org.eclipse.jst.jsp.ui.internal,
+ org.eclipse.jst.jsp.ui.internal.autoedit,
+ org.eclipse.jst.jsp.ui.internal.breakpointproviders,
+ org.eclipse.jst.jsp.ui.internal.contentassist,
+ org.eclipse.jst.jsp.ui.internal.derived,
+ org.eclipse.jst.jsp.ui.internal.editor,
+ org.eclipse.jst.jsp.ui.internal.format,
+ org.eclipse.jst.jsp.ui.internal.hyperlink,
+ org.eclipse.jst.jsp.ui.internal.java.refactoring,
+ org.eclipse.jst.jsp.ui.internal.java.search,
+ org.eclipse.jst.jsp.ui.internal.java.search.ui,
+ org.eclipse.jst.jsp.ui.internal.preferences,
+ org.eclipse.jst.jsp.ui.internal.preferences.ui,
+ org.eclipse.jst.jsp.ui.internal.projection,
+ org.eclipse.jst.jsp.ui.internal.registry,
+ org.eclipse.jst.jsp.ui.internal.style,
+ org.eclipse.jst.jsp.ui.internal.style.java,
+ org.eclipse.jst.jsp.ui.internal.taginfo,
+ org.eclipse.jst.jsp.ui.internal.templates,
+ org.eclipse.jst.jsp.ui.internal.text,
+ org.eclipse.jst.jsp.ui.internal.wizard,
  org.eclipse.jst.jsp.ui.views.contentoutline
 Require-Bundle: org.eclipse.ui.ide,
+ org.eclipse.ui.views,
  org.eclipse.jface.text,
  org.eclipse.ui.workbench.texteditor,
  org.eclipse.ui.editors,
@@ -57,4 +56,4 @@
  org.eclipse.wst.common.uriresolver,
  org.eclipse.ui.ide,
  org.eclipse.wst.javascript.ui
-Eclipse-LazyStart: true
+Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.jst.jsp.ui/plugin.properties b/bundles/org.eclipse.jst.jsp.ui/plugin.properties
index 458db54..8620236 100644
--- a/bundles/org.eclipse.jst.jsp.ui/plugin.properties
+++ b/bundles/org.eclipse.jst.jsp.ui/plugin.properties
@@ -10,11 +10,13 @@
 ###############################################################################
 providerName=Eclipse.org
 pluginName=SSE JSP Source Editor
+nlFeatureName=SSE JSP Source Editor NL Support
 JSP_Source_Page_Editor.name=JSP Editor
 JSP_Files.name=JSP Files
 JSP_Source.name=JSP Source
 JSP_Templates.name=JSP Templates
 JSP_Styles.name=JSP Styles
+JSP_Annotations.name=JSP Annotations
 
 # Snippets contributions for helping with JSP syntax
 jsp_scriptlet=<%..%> scriptlet
@@ -61,6 +63,7 @@
 AddBookmark.tooltip=Add Bookmark...
 SelectRuler.label=Select Ruler
 ## EL Error Message
+JSPEL_Syntax_Error=JSP EL Syntax Error
 ##
 CleanupDocument_label=Cleanup Document...
 CleanupDocument_tooltip=Cleanup Document
diff --git a/bundles/org.eclipse.jst.jsp.ui/plugin.xml b/bundles/org.eclipse.jst.jsp.ui/plugin.xml
index e8c23c3..6c28b24 100644
--- a/bundles/org.eclipse.jst.jsp.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.jsp.ui/plugin.xml
@@ -5,7 +5,7 @@
 	<extension point="org.eclipse.ui.editors">
 		<editor
 			name="%JSP_Source_Page_Editor.name"
-			icon="$nl$/icons//full/obj16/sourceEditor.gif"
+			icon="icons//full/obj16/sourceEditor.gif"
 			extensions="jsp, jsf, jspf, jspx, tag, tagf"
 			contributorClass="org.eclipse.jst.jsp.ui.internal.editor.ActionContributorJSP"
 			class="org.eclipse.wst.sse.ui.StructuredTextEditor"
@@ -391,7 +391,7 @@
 			name="%_UI_WIZARD_NAME"
 			class="org.eclipse.jst.jsp.ui.internal.wizard.NewJSPWizard"
 			category="org.eclipse.wst.web.ui"
-			icon="$nl$/icons/full/etool16/newjsp_wiz.gif">
+			icon="icons/full/etool16/newjsp_wiz.gif">
 			<description>%_UI_WIZARD_CREATE_NEW_FILE</description>
 			<selection class="org.eclipse.core.resources.IResource" />
 		</wizard>
@@ -400,20 +400,20 @@
 	<!-- Add new JSP wizard to J2EE Project Navigator -->
 	<extension
 		id="org.eclipse.jst.jsp.commonWizard.newJSP"
-		point="org.eclipse.ui.navigator.navigatorContent">
+		point="org.eclipse.wst.common.navigator.workbench.commonWizard">
 		<commonWizard
 			type="new"
 			wizardId="org.eclipse.jst.jsp.ui.internal.wizard.NewJSPWizard">
 			<enablement>
 				<or>
-					<instanceof
-						value="org.eclipse.core.resources.IProject" />
+					<objectClass
+						name="org.eclipse.core.resources.IProject" />
 
-					<instanceof
-						value="org.eclipse.core.resources.IFolder" />
+					<objectClass
+						name="org.eclipse.core.resources.IFolder" />
 
-					<instanceof
-						value="org.eclipse.core.resources.IFile" />
+					<objectClass
+						name="org.eclipse.core.resources.IFile" />
 
 				</or>
 			</enablement>
@@ -549,30 +549,4 @@
                id="org.eclipse.ui.texteditor.SelectRulerAction"/>
         </editorContribution>
 	</extension>
-	<!-- JSP Fragment Property Page -->
-	<extension point="org.eclipse.ui.propertyPages">
-		<!-- for j2ee web project -->
-		<page
-			objectClass="org.eclipse.core.resources.IProject"
-			adaptable="true"
-			name="%JSPFragmentContentSettings.name"
-			class="org.eclipse.jst.jsp.ui.internal.contentproperties.ui.ProjectJSPFContentSettingsPropertyPage"
-			id="org.eclipse.jst.jsp.ui.internal.contentproperties.ProjectJSPFContentSettingsPropertyPage">
-			<filter
-				name="nature"
-				value="org.eclipse.wst.common.project.facet.core.nature">
-			</filter>
-		</page>
-		<page
-			objectClass="org.eclipse.core.resources.IFile"
-			adaptable="true"
-			name="%JSPFragmentContentSettings.name"
-			class="org.eclipse.jst.jsp.ui.internal.contentproperties.ui.JSPFContentSettingsPropertyPage"
-			id="org.eclipse.jst.jsp.ui.internal.contentproperties.JSPFContentSettingsPropertyPage.jspf">
-			<filter
-				name="contentTypeId"
-				value="org.eclipse.jst.jsp.core.jspfragmentsource">
-			</filter>
-		</page>
-	</extension>
 </plugin>
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java
index 149e892..0943cf6 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/StructuredTextViewerConfigurationJSP.java
@@ -29,8 +29,8 @@
 import org.eclipse.jface.text.information.IInformationPresenter;
 import org.eclipse.jface.text.information.IInformationProvider;
 import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.internal.text.StructuredTextPartitionerForJSP;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
 import org.eclipse.jst.jsp.ui.internal.autoedit.AutoEditStrategyForTabs;
 import org.eclipse.jst.jsp.ui.internal.autoedit.StructuredAutoEditStrategyJSP;
 import org.eclipse.jst.jsp.ui.internal.contentassist.JSPContentAssistProcessor;
@@ -44,23 +44,21 @@
 import org.eclipse.jst.jsp.ui.internal.style.LineStyleProviderForJSP;
 import org.eclipse.jst.jsp.ui.internal.style.java.LineStyleProviderForJava;
 import org.eclipse.jst.jsp.ui.internal.style.jspel.LineStyleProviderForJSPEL;
-import org.eclipse.jst.jsp.ui.internal.taginfo.JSPInformationProvider;
 import org.eclipse.jst.jsp.ui.internal.taginfo.JSPJavaJavadocHoverProcessor;
-import org.eclipse.jst.jsp.ui.internal.taginfo.JSPJavaJavadocInformationProvider;
 import org.eclipse.jst.jsp.ui.internal.taginfo.JSPTagInfoHoverProcessor;
 import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
-import org.eclipse.wst.css.core.text.ICSSPartitions;
+import org.eclipse.wst.css.core.internal.provisional.text.ICSSPartitionTypes;
 import org.eclipse.wst.html.core.internal.format.HTMLFormatProcessorImpl;
-import org.eclipse.wst.html.core.text.IHTMLPartitions;
+import org.eclipse.wst.html.core.internal.provisional.text.IHTMLPartitionTypes;
 import org.eclipse.wst.html.ui.StructuredTextViewerConfigurationHTML;
-import org.eclipse.wst.sse.core.text.IStructuredPartitions;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes;
 import org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration;
 import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
 import org.eclipse.wst.sse.ui.internal.format.StructuredFormattingStrategy;
 import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider;
 import org.eclipse.wst.sse.ui.internal.taginfo.TextHoverManager;
 import org.eclipse.wst.sse.ui.internal.util.EditorUtility;
-import org.eclipse.wst.xml.core.text.IXMLPartitions;
+import org.eclipse.wst.xml.core.internal.provisional.text.IXMLPartitions;
 import org.eclipse.wst.xml.ui.StructuredTextViewerConfigurationXML;
 
 /**
@@ -116,7 +114,7 @@
 			// xml autoedit strategies
 			strategies = getXMLSourceViewerConfiguration().getAutoEditStrategies(sourceViewer, contentType);
 		}
-		else if (contentType == IJSPPartitions.JSP_CONTENT_JAVA) {
+		else if (contentType == IJSPPartitionTypes.JSP_CONTENT_JAVA) {
 			// jsp java autoedit strategies
 			List allStrategies = new ArrayList(0);
 
@@ -131,7 +129,7 @@
 
 			strategies = (IAutoEditStrategy[]) allStrategies.toArray(new IAutoEditStrategy[allStrategies.size()]);
 		}
-		else if (contentType == IHTMLPartitions.HTML_DEFAULT || contentType == IHTMLPartitions.HTML_DECLARATION) {
+		else if (contentType == IHTMLPartitionTypes.HTML_DEFAULT || contentType == IHTMLPartitionTypes.HTML_DECLARATION) {
 			// html and jsp autoedit strategies
 			List allStrategies = new ArrayList(0);
 
@@ -187,16 +185,16 @@
 	protected IContentAssistProcessor[] getContentAssistProcessors(ISourceViewer sourceViewer, String partitionType) {
 		IContentAssistProcessor[] processors = null;
 
-		if (partitionType == IHTMLPartitions.SCRIPT) {
+		if (partitionType == IHTMLPartitionTypes.SCRIPT) {
 			// HTML JavaScript
 			IContentAssistant htmlContentAssistant = getHTMLSourceViewerConfiguration().getContentAssistant(sourceViewer);
-			IContentAssistProcessor processor = htmlContentAssistant.getContentAssistProcessor(IHTMLPartitions.SCRIPT);
+			IContentAssistProcessor processor = htmlContentAssistant.getContentAssistProcessor(IHTMLPartitionTypes.SCRIPT);
 			processors = new IContentAssistProcessor[]{processor};
 		}
-		else if (partitionType == ICSSPartitions.STYLE) {
+		else if (partitionType == ICSSPartitionTypes.STYLE) {
 			// HTML CSS
 			IContentAssistant htmlContentAssistant = getHTMLSourceViewerConfiguration().getContentAssistant(sourceViewer);
-			IContentAssistProcessor processor = htmlContentAssistant.getContentAssistProcessor(ICSSPartitions.STYLE);
+			IContentAssistProcessor processor = htmlContentAssistant.getContentAssistProcessor(ICSSPartitionTypes.STYLE);
 			processors = new IContentAssistProcessor[]{processor};
 		}
 		// // jspcontentassistprocessor handles this?
@@ -205,19 +203,19 @@
 		// processors = new IContentAssistProcessor[]{new
 		// HTMLContentAssistProcessor()};
 		// }
-		else if ((partitionType == IXMLPartitions.XML_DEFAULT) || (partitionType == IHTMLPartitions.HTML_DEFAULT) || (partitionType == IHTMLPartitions.HTML_COMMENT) || (partitionType == IJSPPartitions.JSP_DEFAULT) || (partitionType == IJSPPartitions.JSP_DIRECTIVE) || (partitionType == IJSPPartitions.JSP_CONTENT_DELIMITER) || (partitionType == IJSPPartitions.JSP_CONTENT_JAVASCRIPT) || (partitionType == IJSPPartitions.JSP_COMMENT)) {
+		else if ((partitionType == IXMLPartitions.XML_DEFAULT) || (partitionType == IHTMLPartitionTypes.HTML_DEFAULT) || (partitionType == IHTMLPartitionTypes.HTML_COMMENT) || (partitionType == IJSPPartitionTypes.JSP_DEFAULT) || (partitionType == IJSPPartitionTypes.JSP_DIRECTIVE) || (partitionType == IJSPPartitionTypes.JSP_CONTENT_DELIMITER) || (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) || (partitionType == IJSPPartitionTypes.JSP_COMMENT)) {
 			// jsp
 			processors = new IContentAssistProcessor[]{new JSPContentAssistProcessor()};
 		}
-		else if ((partitionType == IXMLPartitions.XML_CDATA) || (partitionType == IJSPPartitions.JSP_CONTENT_JAVA)) {
+		else if ((partitionType == IXMLPartitions.XML_CDATA) || (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVA)) {
 			// jsp java
 			processors = new IContentAssistProcessor[]{new JSPJavaContentAssistProcessor()};
 		}
-		else if (partitionType == IJSPPartitions.JSP_DEFAULT_EL) {
+		else if (partitionType == IJSPPartitionTypes.JSP_DEFAULT_EL) {
 			// jsp el
 			processors = new IContentAssistProcessor[]{new JSPELContentAssistProcessor()};
 		}
-		else if (partitionType == IStructuredPartitions.UNKNOWN_PARTITION) {
+		else if (partitionType == IStructuredPartitionTypes.UNKNOWN_PARTITION) {
 			// unknown
 			processors = new IContentAssistProcessor[]{new NoRegionContentAssistProcessorForJSP()};
 		}
@@ -229,7 +227,7 @@
 		MultiPassContentFormatter formatter = new MultiPassContentFormatter(getConfiguredDocumentPartitioning(sourceViewer), IXMLPartitions.XML_DEFAULT);
 
 		formatter.setMasterStrategy(new StructuredFormattingStrategy(new HTMLFormatProcessorImpl()));
-		formatter.setSlaveStrategy(new FormattingStrategyJSPJava(), IJSPPartitions.JSP_CONTENT_JAVA);
+		formatter.setSlaveStrategy(new FormattingStrategyJSPJava(), IJSPPartitionTypes.JSP_CONTENT_JAVA);
 
 		return formatter;
 	}
@@ -238,14 +236,14 @@
 		ITextDoubleClickStrategy strategy = null;
 
 		// html or javascript
-		if (contentType == IHTMLPartitions.HTML_DEFAULT || contentType == IHTMLPartitions.SCRIPT)
+		if (contentType == IHTMLPartitionTypes.HTML_DEFAULT || contentType == IHTMLPartitionTypes.SCRIPT)
 			strategy = getHTMLSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, contentType);
-		else if (contentType == IJSPPartitions.JSP_CONTENT_JAVA || contentType == IJSPPartitions.JSP_CONTENT_JAVASCRIPT)
+		else if (contentType == IJSPPartitionTypes.JSP_CONTENT_JAVA || contentType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT)
 			// JSP Java or JSP JavaScript
 			strategy = getJavaSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, contentType);
-		else if (contentType == IJSPPartitions.JSP_DEFAULT)
+		else if (contentType == IJSPPartitionTypes.JSP_DEFAULT)
 			// JSP (just treat like html)
-			strategy = getHTMLSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, IHTMLPartitions.HTML_DEFAULT);
+			strategy = getHTMLSourceViewerConfiguration().getDoubleClickStrategy(sourceViewer, IHTMLPartitionTypes.HTML_DEFAULT);
 		else
 			strategy = super.getDoubleClickStrategy(sourceViewer, contentType);
 
@@ -293,29 +291,21 @@
 
 	protected IInformationProvider getInformationProvider(ISourceViewer sourceViewer, String partitionType) {
 		IInformationProvider provider = null;
-		if (partitionType == IHTMLPartitions.HTML_DEFAULT) {
+		if (partitionType == IHTMLPartitionTypes.HTML_DEFAULT) {
 			// HTML
 			IInformationPresenter htmlPresenter = getHTMLSourceViewerConfiguration().getInformationPresenter(sourceViewer);
-			provider = htmlPresenter.getInformationProvider(IHTMLPartitions.HTML_DEFAULT);
+			provider = htmlPresenter.getInformationProvider(IHTMLPartitionTypes.HTML_DEFAULT);
 		}
-		else if (partitionType == IHTMLPartitions.SCRIPT) {
+		else if (partitionType == IHTMLPartitionTypes.SCRIPT) {
 			// HTML JavaScript
 			IInformationPresenter htmlPresenter = getHTMLSourceViewerConfiguration().getInformationPresenter(sourceViewer);
-			provider = htmlPresenter.getInformationProvider(IHTMLPartitions.SCRIPT);
+			provider = htmlPresenter.getInformationProvider(IHTMLPartitionTypes.SCRIPT);
 		}
 		else if (partitionType == IXMLPartitions.XML_DEFAULT) {
 			// XML
 			IInformationPresenter xmlPresenter = getXMLSourceViewerConfiguration().getInformationPresenter(sourceViewer);
 			provider = xmlPresenter.getInformationProvider(IXMLPartitions.XML_DEFAULT);
 		}
-		else if ((partitionType == IJSPPartitions.JSP_DEFAULT) || (partitionType == IJSPPartitions.JSP_DIRECTIVE)) {
-			// JSP tags
-			provider = new JSPInformationProvider();
-		}
-		else if (partitionType == IJSPPartitions.JSP_CONTENT_JAVA) {
-			// JSP java
-			provider = new JSPJavaJavadocInformationProvider();
-		}
 		return provider;
 	}
 
@@ -338,25 +328,25 @@
 	public LineStyleProvider[] getLineStyleProviders(ISourceViewer sourceViewer, String partitionType) {
 		LineStyleProvider[] providers = null;
 
-		if (partitionType == IHTMLPartitions.HTML_DEFAULT || partitionType == IHTMLPartitions.HTML_COMMENT || partitionType == IHTMLPartitions.HTML_DECLARATION) {
-			providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IHTMLPartitions.HTML_DEFAULT);
+		if (partitionType == IHTMLPartitionTypes.HTML_DEFAULT || partitionType == IHTMLPartitionTypes.HTML_COMMENT || partitionType == IHTMLPartitionTypes.HTML_DECLARATION) {
+			providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IHTMLPartitionTypes.HTML_DEFAULT);
 		}
-		else if (partitionType == IHTMLPartitions.SCRIPT || partitionType == IJSPPartitions.JSP_CONTENT_JAVASCRIPT) {
-			providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IHTMLPartitions.SCRIPT);
+		else if (partitionType == IHTMLPartitionTypes.SCRIPT || partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) {
+			providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IHTMLPartitionTypes.SCRIPT);
 		}
-		else if (partitionType == ICSSPartitions.STYLE) {
-			providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, ICSSPartitions.STYLE);
+		else if (partitionType == ICSSPartitionTypes.STYLE) {
+			providers = getHTMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, ICSSPartitionTypes.STYLE);
 		}
 		else if (partitionType == IXMLPartitions.XML_DEFAULT || partitionType == IXMLPartitions.XML_CDATA || partitionType == IXMLPartitions.XML_COMMENT || partitionType == IXMLPartitions.XML_DECLARATION || partitionType == IXMLPartitions.XML_PI) {
 			providers = getXMLSourceViewerConfiguration().getLineStyleProviders(sourceViewer, IXMLPartitions.XML_DEFAULT);
 		}
-		else if (partitionType == IJSPPartitions.JSP_CONTENT_JAVA) {
+		else if (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVA) {
 			providers = new LineStyleProvider[]{getLineStyleProviderForJava()};
 		}
-		else if (partitionType == IJSPPartitions.JSP_DEFAULT_EL) {
+		else if (partitionType == IJSPPartitionTypes.JSP_DEFAULT_EL) {
 			providers = new LineStyleProvider[]{getLineStyleProviderForJSPEL()};
 		}
-		else if (partitionType == IJSPPartitions.JSP_COMMENT || partitionType == IJSPPartitions.JSP_CONTENT_DELIMITER || partitionType == IJSPPartitions.JSP_DEFAULT || partitionType == IJSPPartitions.JSP_DIRECTIVE) {
+		else if (partitionType == IJSPPartitionTypes.JSP_COMMENT || partitionType == IJSPPartitionTypes.JSP_CONTENT_DELIMITER || partitionType == IJSPPartitionTypes.JSP_DEFAULT || partitionType == IJSPPartitionTypes.JSP_DIRECTIVE) {
 			providers = new LineStyleProvider[]{getLineStyleProviderForJSP()};
 		}
 
@@ -387,7 +377,7 @@
 	public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType, int stateMask) {
 		ITextHover hover = null;
 
-		if (contentType == IHTMLPartitions.HTML_DEFAULT || contentType == IHTMLPartitions.SCRIPT) {
+		if (contentType == IHTMLPartitionTypes.HTML_DEFAULT || contentType == IHTMLPartitionTypes.SCRIPT) {
 			// html and javascript regions
 			hover = getHTMLSourceViewerConfiguration().getTextHover(sourceViewer, contentType, stateMask);
 		}
@@ -395,7 +385,7 @@
 			// xml regions
 			hover = getXMLSourceViewerConfiguration().getTextHover(sourceViewer, contentType, stateMask);
 		}
-		else if ((contentType == IJSPPartitions.JSP_DEFAULT) || (contentType == IJSPPartitions.JSP_DIRECTIVE) || (contentType == IJSPPartitions.JSP_CONTENT_JAVA)) {
+		else if ((contentType == IJSPPartitionTypes.JSP_DEFAULT) || (contentType == IJSPPartitionTypes.JSP_DIRECTIVE) || (contentType == IJSPPartitionTypes.JSP_CONTENT_JAVA)) {
 			TextHoverManager manager = SSEUIPlugin.getDefault().getTextHoverManager();
 			TextHoverManager.TextHoverDescriptor[] hoverDescs = manager.getTextHovers();
 			int i = 0;
@@ -403,7 +393,7 @@
 				if (hoverDescs[i].isEnabled() && EditorUtility.computeStateMask(hoverDescs[i].getModifierString()) == stateMask) {
 					String hoverType = hoverDescs[i].getId();
 					if (TextHoverManager.COMBINATION_HOVER.equalsIgnoreCase(hoverType)) {
-						if ((contentType == IJSPPartitions.JSP_DEFAULT) || (contentType == IJSPPartitions.JSP_DIRECTIVE)) {
+						if ((contentType == IJSPPartitionTypes.JSP_DEFAULT) || (contentType == IJSPPartitionTypes.JSP_DIRECTIVE)) {
 							// JSP
 							hover = manager.createBestMatchHover(new JSPTagInfoHoverProcessor());
 						}
@@ -413,7 +403,7 @@
 						}
 					}
 					else if (TextHoverManager.DOCUMENTATION_HOVER.equalsIgnoreCase(hoverType)) {
-						if ((contentType == IJSPPartitions.JSP_DEFAULT) || (contentType == IJSPPartitions.JSP_DIRECTIVE)) {
+						if ((contentType == IJSPPartitionTypes.JSP_DEFAULT) || (contentType == IJSPPartitionTypes.JSP_DIRECTIVE)) {
 							// JSP
 							hover = new JSPTagInfoHoverProcessor();
 						}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java
index 2be7daa..aeff150 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIMessages.java
@@ -22,22 +22,6 @@
 public class JSPUIMessages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.jst.jsp.ui.internal.JSPUIPluginResources";//$NON-NLS-1$
 	private static ResourceBundle fResourceBundle;
-	
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, JSPUIMessages.class);
-	}
-
-	public static ResourceBundle getResourceBundle() {
-		try {
-			if (fResourceBundle == null)
-				fResourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
-		}
-		catch (MissingResourceException x) {
-			fResourceBundle = null;
-		}
-		return fResourceBundle;
-	}
 
 	public static String Sample_JSP_doc;
 	public static String JSP_Delimiters_UI_;
@@ -61,7 +45,6 @@
 	public static String _UI_WIZARD_NEW_HEADING;
 	public static String _UI_WIZARD_NEW_DESCRIPTION;
 	public static String _ERROR_FILENAME_MUST_END_JSP;
-	public static String ResourceGroup_nameExists;
 	public static String NewJSPTemplatesWizardPage_0;
 	public static String NewJSPTemplatesWizardPage_1;
 	public static String NewJSPTemplatesWizardPage_2;
@@ -94,10 +77,20 @@
 	public static String JSPColorPage_jsp_content;
 	public static String JSPFilesPreferencePage_0;
 	public static String JSPFilesPreferencePage_1;
-	public static String JSPFContentSettingsPropertyPage_0;
-	public static String JSPFContentSettingsPropertyPage_1;
-	public static String JSPFContentSettingsPropertyPage_2;
-	public static String JSPFContentSettingsPropertyPage_3;
-	public static String JSPFContentSettingsPropertyPage_4;
-	public static String ProjectJSPFContentSettingsPropertyPage_0;
+	
+	static {
+		// load message values from bundle file
+		NLS.initializeMessages(BUNDLE_NAME, JSPUIMessages.class);
+	}
+
+	public static ResourceBundle getResourceBundle() {
+		try {
+			if (fResourceBundle == null)
+				fResourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
+		}
+		catch (MissingResourceException x) {
+			fResourceBundle = null;
+		}
+		return fResourceBundle;
+	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties
index e3550d9..a447662 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/JSPUIPluginResources.properties
@@ -37,7 +37,6 @@
 _UI_WIZARD_NEW_HEADING = JavaServer Page
 _UI_WIZARD_NEW_DESCRIPTION = Create a new JavaServer Page.
 _ERROR_FILENAME_MUST_END_JSP = The file name must end in one of the following extensions {0}.
-ResourceGroup_nameExists = The same name already exists.
 NewJSPTemplatesWizardPage_0=Select JSP Template
 NewJSPTemplatesWizardPage_1=Select a template as initial content in the JSP page.
 NewJSPTemplatesWizardPage_2=Name
@@ -73,10 +72,3 @@
 JSPColorPage_jsp_content=JSP Content
 JSPFilesPreferencePage_0=Validating files
 JSPFilesPreferencePage_1=Validate JSP fragments
-# JSP Fragments
-JSPFContentSettingsPropertyPage_0=none
-JSPFContentSettingsPropertyPage_1=The properties used instead of the page directive that cannot be specified in JSP fragment files.  The project setting is used if you specify "none."
-JSPFContentSettingsPropertyPage_2=Language:
-JSPFContentSettingsPropertyPage_3=Content Type:
-JSPFContentSettingsPropertyPage_4=Enable specific setting:
-ProjectJSPFContentSettingsPropertyPage_0=The properties for J2EE Web projects act as "project" default to be looked up when no properties are specified for a particular JSP fragment file.
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java
index 26688c6..757faa7 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/autoedit/StructuredAutoEditStrategyJSP.java
@@ -21,8 +21,8 @@
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.ui.texteditor.ITextEditorExtension3;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 
 public class StructuredAutoEditStrategyJSP implements IAutoEditStrategy {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java
index 31aedc0..2827c09 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/breakpointproviders/JavaStratumBreakpointProvider.java
@@ -27,7 +27,7 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.ITypedRegion;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
 import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
 import org.eclipse.ui.IEditorInput;
@@ -140,7 +140,7 @@
 						// custom
 						// tags,
 						// return that position
-						if (type == IJSPPartitions.JSP_CONTENT_JAVA || type == IJSPPartitions.JSP_DIRECTIVE) {
+						if (type == IJSPPartitionTypes.JSP_CONTENT_JAVA || type == IJSPPartitionTypes.JSP_DIRECTIVE) {
 							result = partitions[i].getOffset();
 						}
 					}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/AutoImportProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/AutoImportProposal.java
deleted file mode 100644
index a4d8c14..0000000
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/AutoImportProposal.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.eclipse.jst.jsp.ui.internal.contentassist;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.TextUtilities;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jst.jsp.ui.internal.Logger;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.text.edits.InsertEdit;
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
-import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class AutoImportProposal extends JSPCompletionProposal {
-	
-	// the import string, no quotes or colons
-	String fImportDeclaration;
-	
-	public AutoImportProposal(String importDeclaration, String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, int relevance, boolean updateReplacementLengthOnValidate) {
-		super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation, additionalProposalInfo, relevance, updateReplacementLengthOnValidate);
-		setImportDeclaration(importDeclaration);
-	}
-	
-	public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
-		super.apply(viewer, trigger, stateMask, offset);
-		addImportDeclaration(viewer);
-	}
-	/**
-	 * adds the import declaration to the document in the viewer in the appropriate position
-	 * @param viewer
-	 */
-	private void addImportDeclaration(ITextViewer viewer) {
-		
-		IDocument doc = viewer.getDocument();
-		
-		// calculate once and pass along
-		boolean isXml = isXmlFormat(doc);
-		
-		int insertPosition = getInsertPosition(doc, isXml);
-		String insertText = createImportDeclaration(doc, isXml);
-		InsertEdit insert = new InsertEdit(insertPosition, insertText);
-		try {
-			insert.apply(doc);
-		}
-		catch (MalformedTreeException e) {
-			Logger.logException(e);
-		}
-		catch (BadLocationException e) {
-			Logger.logException(e);
-		}
-		
-		// make sure the cursor position after is correct
-		setCursorPosition(getCursorPosition() + insertText.length());
-	}
-	/**
-	 * 
-	 * @param doc
-	 * @param isXml
-	 * @return position after <jsp:root> if xml, otherwise right before the document element
-	 */
-	private int getInsertPosition(IDocument doc, boolean isXml) {
-		int pos = 0;
-		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(doc);
-		try {
-			if(sModel != null) {
-				if(sModel instanceof IDOMModel) {
-					IDOMDocument documentNode = ((IDOMModel)sModel).getDocument();
-					Node docElement = documentNode.getDocumentElement();
-					if(docElement != null && docElement instanceof IDOMElement) {
-						IStructuredDocumentRegion sdRegion = ((IDOMElement)docElement).getFirstStructuredDocumentRegion();
-						if(isXml) {
-							// insert right after document element
-							pos = sdRegion.getEndOffset();
-						}
-						else {
-							// insert before document element
-							pos = sdRegion.getStartOffset();
-						}
-					}
-				}
-			}
-		}
-		finally {
-			if(sModel != null)
-				sModel.releaseFromRead();
-		}
-		return pos;
-	}
-	/**
-	 * 
-	 * @param doc
-	 * @return true if this document is xml-jsp syntax, otherwise false
-	 */
-	private boolean isXmlFormat(IDocument doc) {
-		boolean isXml = false;
-		IStructuredModel sModel = StructuredModelManager.getModelManager().getExistingModelForRead(doc);
-		try {
-			if(sModel != null) {
-				if(!isXml) {
-					if(sModel instanceof IDOMModel) {
-						IDOMDocument documentNode = ((IDOMModel)sModel).getDocument();
-						Element docElement = documentNode.getDocumentElement();
-						isXml = docElement != null && ((docElement.getNodeName().equals("jsp:root")) || ((((IDOMNode) docElement).getStartStructuredDocumentRegion() == null && ((IDOMNode) docElement).getEndStructuredDocumentRegion() == null))); //$NON-NLS-1$
-					}
-				}				
-			}
-		}
-		finally {
-			if(sModel != null)
-				sModel.releaseFromRead();
-		}
-		return isXml;
-	}
-	/**
-	 * 
-	 * @param doc
-	 * @param isXml
-	 * @return appropriate import declaration string depending if document is xml or not
-	 */
-	private String createImportDeclaration(IDocument doc, boolean isXml) {
-		String delim = (doc instanceof IStructuredDocument) ? ((IStructuredDocument)doc).getLineDelimiter() : TextUtilities.getDefaultLineDelimiter(doc);
-		if(isXml)
-			return delim + "<jsp:directive.page import=\""+getImportDeclaration()+"\"/>"; //$NON-NLS-1$ //$NON-NLS-2$
-		return "<%@page import=\"" + getImportDeclaration() + "\"%>" + delim; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public String getImportDeclaration() {
-		return fImportDeclaration;
-	}
-	public void setImportDeclaration(String importDeclaration) {
-		fImportDeclaration = importDeclaration;
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java
index c580bd4..d95c7fb 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/CustomTemplateProposal.java
@@ -16,7 +16,7 @@
 import org.eclipse.jface.text.templates.TemplateContext;
 import org.eclipse.jface.text.templates.TemplateProposal;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceCompletionProposal;
 
 /**
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java
index 7e72665..0741695 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProcessor.java
@@ -25,7 +25,7 @@
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
 import org.eclipse.jst.jsp.ui.internal.Logger;
-import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.IReleasable;
 import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java
index 0229d51..e0e6c3b 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPCompletionProposal.java
@@ -2,7 +2,6 @@
 
 import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
 import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jface.text.contentassist.IContextInformation;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
@@ -14,16 +13,6 @@
  */
 public class JSPCompletionProposal extends CustomCompletionProposal implements IJavaCompletionProposal  {
 
-	/*
-	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=124483
-	 * 
-	 * This is a wrapped proposal so we don't need to 
-	 * make "slow" calls to the java proposal up front, only when needed
-	 * for example, getAdditionalInfo() reads external javadoc, and it makes
-	 * no sense
-	 */ 
-	ICompletionProposal fJavaCompletionProposal = null;
-	
 	public JSPCompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, int relevance, boolean updateReplacementLengthOnValidate) {
 		super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation, additionalProposalInfo, relevance, updateReplacementLengthOnValidate);
 	}
@@ -33,23 +22,6 @@
 	 */
 	public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) {
 		super.apply(viewer, trigger, stateMask, offset);
-	}
-
-	final public ICompletionProposal getJavaCompletionProposal() {
-		return fJavaCompletionProposal;
-	}
-
-	final public void setJavaCompletionProposal(ICompletionProposal javaCompletionProposal) {
-		fJavaCompletionProposal = javaCompletionProposal;
-	}
-	
-	public String getAdditionalProposalInfo() {
-		
-		String additionalInfo = super.getAdditionalProposalInfo();
-		ICompletionProposal javaProposal = getJavaCompletionProposal();
-		if(javaProposal != null)
-			additionalInfo = javaProposal.getAdditionalProposalInfo();
-		
-		return additionalInfo;
+		viewer.setSelectedRange(getCursorPosition(), 0);
 	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java
index 73e5afb..39858f5 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPContentAssistProcessor.java
@@ -34,8 +34,8 @@
 import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP12Namespace;
 import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
 import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
 import org.eclipse.jst.jsp.ui.internal.Logger;
 import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper;
@@ -47,23 +47,23 @@
 import org.eclipse.wst.html.core.internal.contentmodel.HTMLElementDeclaration;
 import org.eclipse.wst.html.core.internal.contentmodel.JSPCMDocument;
 import org.eclipse.wst.html.core.internal.provisional.HTMLCMProperties;
-import org.eclipse.wst.html.core.text.IHTMLPartitions;
+import org.eclipse.wst.html.core.internal.provisional.text.IHTMLPartitionTypes;
 import org.eclipse.wst.html.ui.internal.contentassist.HTMLContentAssistProcessor;
 import org.eclipse.wst.javascript.ui.internal.common.contentassist.JavaScriptContentAssistProcessor;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.ltk.parser.BlockMarker;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.text.IStructuredPartitions;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.sse.ui.internal.IReleasable;
 import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
 import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils;
@@ -84,9 +84,9 @@
 import org.eclipse.wst.xml.core.internal.provisional.contentmodel.CMNodeWrapper;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
+import org.eclipse.wst.xml.core.internal.provisional.text.IXMLPartitions;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
 import org.eclipse.wst.xml.core.internal.ssemodelquery.ModelQueryAdapter;
-import org.eclipse.wst.xml.core.text.IXMLPartitions;
 import org.eclipse.wst.xml.ui.internal.contentassist.AbstractContentAssistProcessor;
 import org.eclipse.wst.xml.ui.internal.contentassist.ContentAssistRequest;
 import org.eclipse.wst.xml.ui.internal.contentassist.NonValidatingModelQueryAction;
@@ -147,15 +147,15 @@
 		XMLContentAssistProcessor xmlProcessor = new XMLContentAssistProcessor();
 		JavaScriptContentAssistProcessor javascriptProcessor = new JavaScriptContentAssistProcessor();
 
-		fPartitionToProcessorMap.put(IHTMLPartitions.HTML_DEFAULT, htmlProcessor);
+		fPartitionToProcessorMap.put(IHTMLPartitionTypes.HTML_DEFAULT, htmlProcessor);
 		fPartitionToProcessorMap.put(IXMLPartitions.XML_DEFAULT, xmlProcessor);
-		fPartitionToProcessorMap.put(IStructuredPartitions.DEFAULT_PARTITION, htmlProcessor);
-		fPartitionToProcessorMap.put(IJSPPartitions.JSP_DEFAULT, jspJavaProcessor);
-		fPartitionToProcessorMap.put(IJSPPartitions.JSP_DIRECTIVE, xmlProcessor);
-		fPartitionToProcessorMap.put(IHTMLPartitions.HTML_COMMENT, htmlProcessor);
-		fPartitionToProcessorMap.put(IJSPPartitions.JSP_CONTENT_JAVASCRIPT, javascriptProcessor);
-		fPartitionToProcessorMap.put(IJSPPartitions.JSP_DEFAULT_EL, jspJavaProcessor);
-		fPartitionToProcessorMap.put(IHTMLPartitions.SCRIPT, javascriptProcessor); // default
+		fPartitionToProcessorMap.put(IStructuredPartitionTypes.DEFAULT_PARTITION, htmlProcessor);
+		fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_DEFAULT, jspJavaProcessor);
+		fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_DIRECTIVE, xmlProcessor);
+		fPartitionToProcessorMap.put(IHTMLPartitionTypes.HTML_COMMENT, htmlProcessor);
+		fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT, javascriptProcessor);
+		fPartitionToProcessorMap.put(IJSPPartitionTypes.JSP_DEFAULT_EL, jspJavaProcessor);
+		fPartitionToProcessorMap.put(IHTMLPartitionTypes.SCRIPT, javascriptProcessor); // default
 		// to
 		// javascript
 		// for
@@ -385,8 +385,7 @@
 							if (provider.isFor(internalModel.getModelHandler())) {
 								provider.addAdapterFactories(internalModel);
 							}
-						}
-						catch (Exception e) {
+						} catch (Exception e) {
 							Logger.logException(e);
 						}
 					}
@@ -403,8 +402,7 @@
 						}
 					}
 				}
-			}
-			catch (Exception e) {
+			} catch (Exception e) {
 				Logger.logException("Error in embedded JSP Content Assist", e); //$NON-NLS-1$
 			}
 		}
@@ -424,8 +422,7 @@
 				Node nodeAlreadyAtIndex = children.item(childIndex);
 				if (nodeAlreadyAtIndex instanceof IDOMNode)
 					textInsertionOffset = ((IDOMNode) nodeAlreadyAtIndex).getEndOffset();
-			}
-			else {
+			} else {
 				textInsertionOffset = ((IDOMNode) node).getStartOffset();
 			}
 			TLDCMDocumentManager mgr = TaglibController.getTLDCMDocumentManager(((IDOMNode) node).getStructuredDocument());
@@ -456,8 +453,9 @@
 
 			if (mqAdapter != null) {
 				CMDocument doc = mqAdapter.getModelQuery().getCorrespondingCMDocument(node);
-				if (doc != null) {
-
+				// this shouldn't have to have the prefix coded in
+				if (!(doc != null && (doc instanceof JSPCMDocument || doc instanceof CMNodeWrapper || node.getNodeName().startsWith("jsp:")))) { //$NON-NLS-1$
+					// get jsp namespace elements and insert their contents
 					CMDocument JCMDoc = HTMLCMDocumentFactory.getCMDocument(CMDocType.JSP11_DOC_TYPE);
 					CMNamedNodeMap jspelements = JCMDoc.getElements();
 
@@ -470,36 +468,32 @@
 							domDoc = (Document) node;
 						else
 							domDoc = node.getOwnerDocument();
-						
 						// Show XML tag forms of JSP markers if jsp:root is
 						// the document element OR it's HTML but
 						// isn't really in the text.
 						// If the document isn't strictly XML, pull out the
-						// XML tag forms it is xml format
-						rejectElements.add(JSP12Namespace.ElementName.SCRIPTLET);
-						rejectElements.add(JSP12Namespace.ElementName.EXPRESSION);
-						rejectElements.add(JSP12Namespace.ElementName.DECLARATION);
-						rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_INCLUDE);
-						rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_PAGE);
-						rejectElements.add(JSP12Namespace.ElementName.TEXT);
-						rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
-							
-						if (isXMLFormat(domDoc)) {
-
-							// jsp actions
+						// XML tag forms
+						if (!isXMLFormat(domDoc)) {
+							rejectElements.add(JSP12Namespace.ElementName.SCRIPTLET);
+							rejectElements.add(JSP12Namespace.ElementName.EXPRESSION);
+							rejectElements.add(JSP12Namespace.ElementName.DECLARATION);
+							rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_INCLUDE);
+							rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_PAGE);
+							rejectElements.add(JSP12Namespace.ElementName.TEXT);
+						}
+						// always exclude jsp:directive.taglib
+						if (isInternalAdapter) {
+							rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
+							rejectElements.add(JSP12Namespace.ElementName.DIRECTIVE_TAGLIB);
 							rejectElements.add(JSP12Namespace.ElementName.FALLBACK);
 							rejectElements.add(JSP12Namespace.ElementName.USEBEAN);
-							rejectElements.add(JSP12Namespace.ElementName.GETPROPERTY);
 							rejectElements.add(JSP12Namespace.ElementName.SETPROPERTY);
-							rejectElements.add(JSP12Namespace.ElementName.INCLUDE);
 							rejectElements.add(JSP12Namespace.ElementName.FORWARD);
 							rejectElements.add(JSP12Namespace.ElementName.PLUGIN);
 							rejectElements.add(JSP12Namespace.ElementName.FALLBACK);
-							rejectElements.add(JSP12Namespace.ElementName.PARAM);
 							rejectElements.add(JSP12Namespace.ElementName.PARAMS);
 						}
-						
-						
+
 						// don't show jsp:root if a document element already
 						// exists
 						Element docElement = domDoc.getDocumentElement();
@@ -512,7 +506,6 @@
 								continue;
 							elementDecls.add(ed);
 						}
-					
 					}
 				}
 			}
@@ -590,7 +583,7 @@
 	 */
 	public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentPosition) {
 		fTemplateContexts.clear();
-
+		
 		IStructuredDocumentRegion sdRegion = ContentAssistUtils.getStructuredDocumentRegion((StructuredTextViewer) viewer, documentPosition);
 		fViewer = viewer;
 		ICompletionProposal[] jspResults = EMPTY_PROPOSAL_SET;
@@ -598,14 +591,14 @@
 
 		// check the actual partition type
 		String partitionType = getPartitionType((StructuredTextViewer) viewer, documentPosition);
-		IStructuredDocument structuredDocument = (IStructuredDocument) viewer.getDocument();
-
+		IStructuredDocument structuredDocument = (IStructuredDocument)viewer.getDocument();
+		
 		IStructuredDocumentRegion fn = structuredDocument.getRegionAtCharacterOffset(documentPosition);
 
 		// ////////////////////////////////////////////////////////////////////////////
 		// ANOTHER WORKAROUND UNTIL PARTITIONING TAKES CARE OF THIS
 		// check for xml-jsp tags...
-		if (partitionType == IJSPPartitions.JSP_DIRECTIVE && fn != null) {
+		if (partitionType == IJSPPartitionTypes.JSP_DIRECTIVE && fn != null) {
 			IStructuredDocumentRegion possibleXMLJSP = ((fn.getType() == DOMRegionContext.XML_CONTENT) && fn.getPrevious() != null) ? fn.getPrevious() : fn;
 			ITextRegionList regions = possibleXMLJSP.getRegions();
 			if (regions.size() > 1) {
@@ -613,11 +606,9 @@
 				ITextRegion xmlOpenOrClose = regions.get(0);
 				if (xmlOpenOrClose.getType() == DOMRegionContext.XML_TAG_OPEN && documentPosition == possibleXMLJSP.getStartOffset()) {
 					// do regular jsp content assist
-				}
-				else if (xmlOpenOrClose.getType() == DOMRegionContext.XML_END_TAG_OPEN && documentPosition > possibleXMLJSP.getStartOffset()) {
+				} else if (xmlOpenOrClose.getType() == DOMRegionContext.XML_END_TAG_OPEN && documentPosition > possibleXMLJSP.getStartOffset()) {
 					// do regular jsp content assist
-				}
-				else {
+				} else {
 					// possible xml-jsp
 					ITextRegion nameRegion = regions.get(1);
 					String name = possibleXMLJSP.getText(nameRegion);
@@ -631,7 +622,7 @@
 		// ////////////////////////////////////////////////////////////////////////////
 		// ** THIS IS A TEMP FIX UNTIL PARTITIONING TAKES CARE OF THIS...
 		// check for XML-JSP in a <script> region
-		if (partitionType == IJSPPartitions.JSP_CONTENT_JAVASCRIPT || partitionType == IHTMLPartitions.SCRIPT) {
+		if (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT || partitionType == IHTMLPartitionTypes.SCRIPT) {
 			// fn should be block text
 			IStructuredDocumentRegion decodedSDRegion = decodeScriptBlock(fn.getFullText());
 			// System.out.println("decoded > " +
@@ -648,17 +639,14 @@
 						if (documentPosition >= fn.getStartOffset() + sdr.getStartOffset() && documentPosition <= fn.getStartOffset() + sdr.getEndOffset()) {
 							return getJSPJavaCompletionProposals(viewer, documentPosition);
 						}
-					}
-					else if (sdr.getType() == DOMRegionContext.XML_TAG_NAME) {
+					} else if (sdr.getType() == DOMRegionContext.XML_TAG_NAME) {
 						if (documentPosition > fn.getStartOffset() + sdr.getStartOffset() && documentPosition < fn.getStartOffset() + sdr.getEndOffset()) {
 							return EMPTY_PROPOSAL_SET;
-						}
-						else if (documentPosition == fn.getStartOffset() + sdr.getEndOffset() && sdr.getNext() != null && sdr.getNext().getType() == DOMJSPRegionContexts.JSP_CONTENT) {
+						} else if (documentPosition == fn.getStartOffset() + sdr.getEndOffset() && sdr.getNext() != null && sdr.getNext().getType() == DOMJSPRegionContexts.JSP_CONTENT) {
 							// the end of an open tag <script>
 							// <jsp:scriptlet>| blah </jsp:scriptlet>
 							return getJSPJavaCompletionProposals(viewer, documentPosition);
-						}
-						else if (documentPosition == fn.getStartOffset() + sdr.getStartOffset() && sdr.getPrevious() != null && sdr.getPrevious().getType() == DOMRegionContext.XML_TAG_NAME) {
+						} else if (documentPosition == fn.getStartOffset() + sdr.getStartOffset() && sdr.getPrevious() != null && sdr.getPrevious().getType() == DOMRegionContext.XML_TAG_NAME) {
 							return getJSPJavaCompletionProposals(viewer, documentPosition);
 						}
 					}
@@ -668,7 +656,7 @@
 		}
 		// /////////////////////////////////////////////////////////////////////////
 		// check special JSP delimiter cases
-		if (fn != null && partitionType == IJSPPartitions.JSP_CONTENT_DELIMITER) {
+		if (fn != null && partitionType == IJSPPartitionTypes.JSP_CONTENT_DELIMITER) {
 			IStructuredDocumentRegion fnDelim = fn;
 
 			// if it's a nested JSP region, need to get the correct
@@ -698,8 +686,7 @@
 									partitionType = getPartitionType((StructuredTextViewer) viewer, documentPosition - 1);
 									break;
 								}
-							}
-							else if (XMLContentAssistUtilities.isJSPCloseDelimiter(temp.getType()) && documentPosition == trc.getStartOffset(temp)) {
+							} else if (XMLContentAssistUtilities.isJSPCloseDelimiter(temp.getType()) && documentPosition == trc.getStartOffset(temp)) {
 								// JSP content assist
 								return getJSPJavaCompletionProposals(viewer, documentPosition);
 							}
@@ -719,15 +706,14 @@
 					// macros etc...
 					// return getHTMLCompletionProposals(viewer,
 					// documentPosition);
-				}
-				else if (fnDelim.getStartOffset() == documentPosition && (firstRegion.getType() == DOMRegionContext.XML_END_TAG_OPEN)) {
+				} else if (fnDelim.getStartOffset() == documentPosition && (firstRegion.getType() == DOMRegionContext.XML_END_TAG_OPEN)) {
 					// <jsp:scriptlet> |</jsp:scriptlet>
 					// check previous partition type to see if it's JAVASCRIPT
 					// if it is, we're just gonna let the embedded JAVASCRIPT
 					// adapter get the proposals
 					if (documentPosition > 0) {
 						String checkType = getPartitionType((StructuredTextViewer) viewer, documentPosition - 1);
-						if (checkType != IJSPPartitions.JSP_CONTENT_JAVASCRIPT) { // this
+						if (checkType != IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) { // this
 							// check
 							// is
 							// failing
@@ -738,16 +724,14 @@
 							// not
 							// javascript...)
 							return getJSPJavaCompletionProposals(viewer, documentPosition);
-						}
-						partitionType = IJSPPartitions.JSP_CONTENT_JAVASCRIPT;
+						} 
+						partitionType = IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT;
 					}
-				}
-				else if ((firstRegion.getType() == DOMRegionContext.XML_TAG_OPEN) && documentPosition >= fnDelim.getEndOffset()) {
+				} else if ((firstRegion.getType() == DOMRegionContext.XML_TAG_OPEN) && documentPosition >= fnDelim.getEndOffset()) {
 					// anything else inbetween
 					return getJSPJavaCompletionProposals(viewer, documentPosition);
 				}
-			}
-			else if (XMLContentAssistUtilities.isJSPDelimiter(fnDelim)) {
+			} else if (XMLContentAssistUtilities.isJSPDelimiter(fnDelim)) {
 				// the delimiter <%, <%=, <%!, ...
 				if (XMLContentAssistUtilities.isJSPCloseDelimiter(fnDelim)) {
 					if (documentPosition == fnDelim.getStartOffset()) {
@@ -757,20 +741,18 @@
 						// JAVASCRIPT adapter get the proposals
 						if (documentPosition > 0) {
 							String checkType = getPartitionType((StructuredTextViewer) viewer, documentPosition - 1);
-							if (checkType != IJSPPartitions.JSP_CONTENT_JAVASCRIPT) {
+							if (checkType != IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT) {
 								return getJSPJavaCompletionProposals(viewer, documentPosition);
-							}
-							partitionType = IJSPPartitions.JSP_CONTENT_JAVASCRIPT;
+							} 
+							partitionType = IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT;
 						}
 					}
-				}
-				else if (XMLContentAssistUtilities.isJSPOpenDelimiter(fnDelim)) {
+				} else if (XMLContentAssistUtilities.isJSPOpenDelimiter(fnDelim)) {
 					// if it's the first position of open delimiter
 					// use embedded HTML results
 					if (documentPosition == fnDelim.getStartOffset()) {
 						embeddedResults = getHTMLCompletionProposals(viewer, documentPosition);
-					}
-					else if (documentPosition == fnDelim.getEndOffset()) {
+					} else if (documentPosition == fnDelim.getEndOffset()) {
 						// it's at the EOF <%|
 						return getJSPJavaCompletionProposals(viewer, documentPosition);
 					}
@@ -821,8 +803,7 @@
 					if (XMLContentAssistUtilities.isJSPOpenDelimiter(testRegion.getType())) {
 						if (!(((ITextRegionContainer) attrContainer).getEndOffset(testRegion) <= documentPosition))
 							return EMPTY_PROPOSAL_SET;
-					}
-					else if (XMLContentAssistUtilities.isJSPCloseDelimiter(testRegion.getType())) {
+					} else if (XMLContentAssistUtilities.isJSPCloseDelimiter(testRegion.getType())) {
 						if (!(((ITextRegionContainer) attrContainer).getStartOffset(testRegion) >= documentPosition))
 							return EMPTY_PROPOSAL_SET;
 					}
@@ -838,7 +819,7 @@
 		if (p != null) {
 			embeddedResults = p.computeCompletionProposals(viewer, documentPosition);
 			// get bean methods, objects, and constants if there are any...
-			if (partitionType == IJSPPartitions.JSP_CONTENT_JAVASCRIPT || partitionType == IHTMLPartitions.SCRIPT) {
+			if (partitionType == IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT || partitionType == IHTMLPartitionTypes.SCRIPT) {
 				ICompletionProposal[] beanResults = getJSPJavaBeanProposals(viewer, documentPosition);
 				if (beanResults != null && beanResults.length > 0) {
 					ICompletionProposal[] added = new ICompletionProposal[beanResults.length + embeddedResults.length];
@@ -847,8 +828,7 @@
 					embeddedResults = added;
 				}
 			}
-		}
-		else {
+		} else {
 			// the partition type is probably not mapped
 		}
 
@@ -880,55 +860,15 @@
 
 		// fix for:
 		// check for |<%-- --%> first position of jsp comment
-		if (partitionType == IJSPPartitions.JSP_COMMENT) {
+		if (partitionType == IJSPPartitionTypes.JSP_COMMENT) {
 			if (sdRegion.getStartOffset() == documentPosition) {
 				ICompletionProposal[] htmlResults = getHTMLCompletionProposals(viewer, documentPosition);
 				jspResults = merge(jspResults, htmlResults);
 			}
 		}
-
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=86656
-		if (partitionType == IJSPPartitions.JSP_DIRECTIVE) {
-			ICompletionProposal[] importProposals = getImportProposals(viewer, documentPosition);
-			if (importProposals.length > 0)
-				jspResults = merge(jspResults, importProposals);
-		}
 		return jspResults;
 	}
 
-	private ICompletionProposal[] getImportProposals(ITextViewer viewer, int documentPosition) {
-		List importProposals = new ArrayList();
-		ICompletionProposal[] proposals = getJSPJavaCompletionProposals(viewer, documentPosition);
-		for (int i = 0; i < proposals.length; i++) {
-			if (proposals[i] instanceof JSPCompletionProposal) {
-
-				ICompletionProposal importProposal = adjustImportProposal((JSPCompletionProposal) proposals[i]);
-				importProposals.add(importProposal);
-			}
-		}
-		return (ICompletionProposal[]) importProposals.toArray(new ICompletionProposal[importProposals.size()]);
-	}
-
-
-	private ICompletionProposal adjustImportProposal(JSPCompletionProposal importProposal) {
-
-		// just need to remove the ";"
-		// and adjust offsets for the change
-		String newReplace = importProposal.getReplacementString().replaceAll(";", "");
-		importProposal.setReplacementString(newReplace);
-
-		String newDisplay = importProposal.getDisplayString().replaceAll(";", "");
-		importProposal.setDisplayString(newDisplay);
-
-		int newReplacementLength = importProposal.getReplacementLength() - 1;
-		importProposal.setReplacementLength(newReplacementLength);
-
-		int newCursorPosition = importProposal.getCursorPosition() - 1;
-		importProposal.setCursorPosition(newCursorPosition);
-
-		return importProposal;
-	}
-
 	/**
 	 * Adds 2 arrays of ICompletionProposals and sorts them with a
 	 * ProposalComparator.
@@ -1002,7 +942,7 @@
 	 */
 	private ICompletionProposal[] getHTMLCompletionProposals(ITextViewer viewer, int documentPosition) {
 
-		IContentAssistProcessor p = (IContentAssistProcessor) fPartitionToProcessorMap.get(IHTMLPartitions.HTML_DEFAULT);
+		IContentAssistProcessor p = (IContentAssistProcessor) fPartitionToProcessorMap.get(IHTMLPartitionTypes.HTML_DEFAULT);
 		return p.computeCompletionProposals(viewer, documentPosition);
 	}
 
@@ -1013,7 +953,7 @@
 	 * @return ICompletionProposal[]
 	 */
 	protected ICompletionProposal[] getJSPJavaCompletionProposals(ITextViewer viewer, int documentPosition) {
-		JSPJavaContentAssistProcessor p = (JSPJavaContentAssistProcessor) fPartitionToProcessorMap.get(IJSPPartitions.JSP_DEFAULT);
+		JSPJavaContentAssistProcessor p = (JSPJavaContentAssistProcessor) fPartitionToProcessorMap.get(IJSPPartitionTypes.JSP_DEFAULT);
 		return p.computeCompletionProposals(viewer, documentPosition);
 	}
 
@@ -1026,8 +966,7 @@
 		String partitionType = null;
 		try {
 			partitionType = TextUtilities.getContentType(viewer.getDocument(), IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, viewer.modelOffset2WidgetOffset(documentPosition), false);
-		}
-		catch (BadLocationException e) {
+		} catch (BadLocationException e) {
 			partitionType = IDocument.DEFAULT_CONTENT_TYPE;
 		}
 		return partitionType;
@@ -1112,7 +1051,7 @@
 				Object key = null;
 				while (it.hasNext()) {
 					key = it.next();
-					if (map.get(key) instanceof IReleasable) {
+					if (map.get(key) instanceof IReleasable ) {
 						((IReleasable) map.get(key)).release();
 					}
 				}
@@ -1170,8 +1109,7 @@
 					if (directiveNames[i].startsWith(nameString) || documentPosition <= begin)
 						request.addProposal(new CustomCompletionProposal(directiveNames[i], begin, length, directiveNames[i].length(), JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), directiveNames[i], null, null, XMLRelevanceConstants.R_JSP));
 				}
-			}
-			else { // by default, JSP_DIRECTIVE_NAME
+			} else { // by default, JSP_DIRECTIVE_NAME
 				if (request == null)
 					request = newContentAssistRequest(xmlnode, xmlnode, sdRegion, completionRegion, sdRegion.getStartOffset(completionRegion), completionRegion.getTextLength(), matchString);
 				for (int i = 0; i < directiveNames.length; i++) {
@@ -1179,8 +1117,7 @@
 						request.addProposal(new CustomCompletionProposal(directiveNames[i], request.getReplacementBeginPosition(), request.getReplacementLength(), directiveNames[i].length(), JSPEditorPluginImageHelper.getInstance().getImage(JSPEditorPluginImages.IMG_OBJ_TAG_GENERIC), directiveNames[i], null, null, XMLRelevanceConstants.R_JSP));
 				}
 			}
-		}
-		else if ((completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME && documentPosition > sdRegion.getTextEndOffset(completionRegion)) || (completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE && documentPosition <= sdRegion.getStartOffset(completionRegion))) {
+		} else if ((completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_NAME && documentPosition > sdRegion.getTextEndOffset(completionRegion)) || (completionRegion.getType() == DOMJSPRegionContexts.JSP_DIRECTIVE_CLOSE && documentPosition <= sdRegion.getStartOffset(completionRegion))) {
 			if (request == null)
 				request = computeAttributeProposals(documentPosition, matchString, completionRegion, treeNode, xmlnode);
 			super.addTagCloseProposals(request);
@@ -1207,7 +1144,7 @@
 				}
 			}
 		}
-
+		
 		// bug115927 use original document position for all/any region templates
 		addTemplates(request, TemplateContextTypeIdsJSP.ALL, documentPosition);
 		return request;
@@ -1235,11 +1172,12 @@
 	 * 
 	 * @param contentAssistRequest
 	 * @param context
+	 * @param startOffset
 	 */
 	private void addTemplates(ContentAssistRequest contentAssistRequest, String context, int startOffset) {
 		if (contentAssistRequest == null)
 			return;
-
+		
 		// if already adding template proposals for a certain context type, do
 		// not add again
 		if (!fTemplateContexts.contains(context)) {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java
index 19f2aa5..cbab2b8 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPDummyContentAssistProcessor.java
@@ -112,6 +112,12 @@
 		super.addTagNameProposals(contentAssistRequest, childPosition);
 	}
 
+
+	protected void addXMLProposal(ContentAssistRequest contentAssistRequest) {
+		super.addXMLProposal(contentAssistRequest);
+	}
+
+
 	protected boolean attributeInList(IDOMNode node, Node parent, CMNode cmnode) {
 		return super.attributeInList(node, parent, cmnode);
 	}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java
index 2efe5ec..ecad40e 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPELProposalCollector.java
@@ -60,11 +60,6 @@
 			boolean updateLengthOnValidate = true;
 			
 			jspProposal = new JSPCompletionProposal(completion, offset, length, positionAfter, image, displayString, contextInformation, additionalInfo, relevance, updateLengthOnValidate);
-			
-			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=124483
-			// set wrapped java proposal so additional info can be calculated on demand
-			jspProposal.setJavaCompletionProposal(javaProposal);
-			
 			return jspProposal;
 		} else {
 			return null;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java
index 69f2f51..177b99d 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPJavaContentAssistProcessor.java
@@ -21,8 +21,8 @@
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
 import org.eclipse.jface.text.contentassist.IContextInformation;
 import org.eclipse.jface.text.contentassist.IContextInformationValidator;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
@@ -212,7 +212,7 @@
 		if(dp != null) {
 			//IDocumentPartitioner dp = viewer.getDocument().getDocumentPartitioner();
 			String type = dp.getPartition(documentOffset).getType();
-			if (type == IJSPPartitions.JSP_DEFAULT || type == IJSPPartitions.JSP_CONTENT_JAVA) {
+			if (type == IJSPPartitionTypes.JSP_DEFAULT || type == IJSPPartitionTypes.JSP_CONTENT_JAVA) {
 				// get context info from completion results...
 				ICompletionProposal[] proposals = computeCompletionProposals(viewer, documentOffset);
 				for (int i = 0; i < proposals.length; i++) {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java
index 4e8719c..416ca67 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPPropertyContentAssistProcessor.java
@@ -22,14 +22,14 @@
 import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
 import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImageHelper;
 import org.eclipse.jst.jsp.ui.internal.editor.JSPEditorPluginImages;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java
index 95f6040..af7392d 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPProposalCollector.java
@@ -12,6 +12,7 @@
 import org.eclipse.jdt.ui.text.java.CompletionProposalComparator;
 import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
 import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jst.jsp.core.internal.java.JSP2ServletNameUtil;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
 import org.eclipse.swt.graphics.Image;
 
@@ -27,12 +28,23 @@
  */
 public class JSPProposalCollector extends CompletionProposalCollector {
 
+	private String fJspName;
+	private String fMangledName;
 	private JSPTranslation fTranslation;
 	private Comparator fComparator;
 	
 	public JSPProposalCollector(ICompilationUnit cu, JSPTranslation translation) {
 		super(cu);
-	
+		if(cu != null) {
+			// set some names for fixing up mangled name in proposals
+			// set mangled (servlet) name
+			String cuName = cu.getPath().lastSegment();
+			setMangledName(cuName.substring(0, cuName.lastIndexOf('.')));
+			// set name of jsp file
+			String unmangled = JSP2ServletNameUtil.unmangle(cuName);
+			setJspName(unmangled.substring(unmangled.lastIndexOf('/') + 1));
+		}
+		
 		if(translation == null)
 			throw new IllegalArgumentException("JSPTranslation cannot be null"); //$NON-NLS-1$
 		
@@ -73,100 +85,36 @@
 		
 		JSPCompletionProposal jspProposal = null;
 		
-		// ignore constructor proposals (they're not relevant for our JSP proposal list)
-		if(!proposal.isConstructor()) {
-			
-			if(proposal.getKind() == CompletionProposal.TYPE_REF) {
-				String signature = String.valueOf(proposal.getDeclarationSignature());
-				String completion = String.valueOf(proposal.getCompletion());
-				if(completion.indexOf(signature) != -1) {
-					jspProposal = createAutoImportProposal(proposal);			
-				}
-			}
-			
-			// default behavior
-			if(jspProposal == null)
-				jspProposal = createJspProposal(proposal);		
-		}
-		return jspProposal;
-	}
-
-	
-	
-	private JSPCompletionProposal createAutoImportProposal(CompletionProposal proposal) {
-		
-		JSPCompletionProposal jspProposal = null;
-
-		String signature = new String(proposal.getDeclarationSignature());
-		String completion = new String(proposal.getCompletion());
-		
-		// it's fully qualified so we should
-		// add an import statement
-		// create an autoimport proposal
-		String newCompletion = completion.replaceAll(signature + ".", "");
-		
-		// java offset
-		int offset = proposal.getReplaceStart();
-		// replacement length
-		int length = proposal.getReplaceEnd() - offset;
-		// translate offset from Java > JSP
-		offset = fTranslation.getJspOffset(offset);
-		// cursor position after must be calculated
-		int positionAfter = calculatePositionAfter(proposal, newCompletion, offset);
-		
-		// from java proposal
-		IJavaCompletionProposal javaProposal = super.createJavaCompletionProposal(proposal);
-		proposal.getDeclarationSignature();
-		Image image = javaProposal.getImage();
-		String displayString = javaProposal.getDisplayString();
-		displayString = getTranslation().fixupMangledName(displayString);
-		IContextInformation contextInformation = javaProposal.getContextInformation();
-		// don't do this, it's slow
-		// String additionalInfo = javaProposal.getAdditionalProposalInfo();
-		int relevance = javaProposal.getRelevance();
-		
-		boolean updateLengthOnValidate = true;
-		
-		jspProposal = new AutoImportProposal(completion, newCompletion, offset, length, positionAfter, image, displayString, contextInformation, null, relevance, updateLengthOnValidate);
-		
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=124483
-		// set wrapped java proposal so additional info can be calculated on demand
-		jspProposal.setJavaCompletionProposal(javaProposal);
-		
-		return jspProposal;
-	}
-
-	private JSPCompletionProposal createJspProposal(CompletionProposal proposal) {
-		
-		JSPCompletionProposal jspProposal;
+		// from proposal
 		String completion = String.valueOf(proposal.getCompletion());
-		// java offset
-		int offset = proposal.getReplaceStart();
-		// replacement length
-		int length = proposal.getReplaceEnd() - offset;
-		// translate offset from Java > JSP
-		offset = fTranslation.getJspOffset(offset);
-		// cursor position after must be calculated
-		int positionAfter = calculatePositionAfter(proposal, completion, offset);
+		String mangledName = getMangledName();
 		
-		// from java proposal
-		IJavaCompletionProposal javaProposal = super.createJavaCompletionProposal(proposal);
-		proposal.getDeclarationSignature();
-		Image image = javaProposal.getImage();
-		String displayString = javaProposal.getDisplayString();
-		displayString = getTranslation().fixupMangledName(displayString);
-		IContextInformation contextInformation = javaProposal.getContextInformation();
-		// String additionalInfo = javaProposal.getAdditionalProposalInfo();
-		int relevance = javaProposal.getRelevance();
-		
-		boolean updateLengthOnValidate = true;
-		
-		jspProposal = new JSPCompletionProposal(completion, offset, length, positionAfter, image, displayString, contextInformation, null, relevance, updateLengthOnValidate);
-		
-		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=124483
-		// set wrapped java proposal so additional info can be calculated on demand
-		jspProposal.setJavaCompletionProposal(javaProposal);
-		
+		// ignore constructor proposals
+		// (they will include mangled servlet name)
+		if(mangledName != null && completion.indexOf(mangledName) == -1) {
+			
+			// java offset
+			int offset = proposal.getReplaceStart();
+			// replacement length
+			int length = proposal.getReplaceEnd() - offset;
+			// translate offset from Java > JSP
+			offset = fTranslation.getJspOffset(offset);
+			// cursor position after must be calculated
+			int positionAfter = calculatePositionAfter(proposal, completion, offset);
+			
+			// from java proposal
+			IJavaCompletionProposal javaProposal = super.createJavaCompletionProposal(proposal);
+			Image image = javaProposal.getImage();
+			String displayString = javaProposal.getDisplayString();
+			displayString = fixupDisplayString(displayString);
+			IContextInformation contextInformation = javaProposal.getContextInformation();
+			String additionalInfo = javaProposal.getAdditionalProposalInfo();
+			int relevance = javaProposal.getRelevance();
+			
+			boolean updateLengthOnValidate = true;
+			
+			jspProposal = new JSPCompletionProposal(completion, offset, length, positionAfter, image, displayString, contextInformation, additionalInfo, relevance, updateLengthOnValidate);
+		}
 		return jspProposal;
 	}
 
@@ -197,6 +145,43 @@
 		}
 		return positionAfter;
 	}
+
+	/**
+	 * Replaces mangled (servlet) name with jsp file name.
+	 * 
+	 * @param displayString
+	 * @return
+	 */
+	private String fixupDisplayString(String displayString) {
+		StringBuffer fixedName = new StringBuffer(displayString);
+		String mangledName = getMangledName();
+		if(mangledName != null) {
+			int index = displayString.indexOf(mangledName);
+			if(index != -1) {
+				fixedName = new StringBuffer();
+				fixedName.append(displayString.substring(0, index));
+				fixedName.append(getJspName());
+				fixedName.append(displayString.substring(index + mangledName.length()));
+			}
+		}
+		return fixedName.toString();
+	}
+	
+	private String getMangledName() {
+		return fMangledName;
+	}
+
+	private void setMangledName(String mangledName) {
+		fMangledName = mangledName;
+	}
+
+	private String getJspName() {
+		return fJspName;
+	}
+
+	private void setJspName(String jspName) {
+		fJspName = jspName;
+	}
 	
 	static char[] getTypeTriggers() {
 		return TYPE_TRIGGERS;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java
index 15db25d..ac2997a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JSPUseBeanContentAssistProcessor.java
@@ -21,13 +21,13 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionContainer;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java
index d8b4de7..f6d877a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/JavaTypeCompletionProposal.java
@@ -28,7 +28,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.sse.ui.internal.contentassist.CustomCompletionProposal;
 import org.eclipse.wst.sse.ui.internal.contentassist.IRelevanceCompletionProposal;
 import org.eclipse.wst.xml.core.internal.regions.DOMRegionContext;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java
index d322938..43ca5b6 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentassist/NoRegionContentAssistProcessorForJSP.java
@@ -13,14 +13,14 @@
 import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
-import org.eclipse.wst.html.core.text.IHTMLPartitions;
+import org.eclipse.wst.html.core.internal.provisional.text.IHTMLPartitionTypes;
 import org.eclipse.wst.html.ui.internal.contentassist.NoRegionContentAssistProcessorForHTML;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.text.IStructuredPartitions;
-import org.eclipse.wst.xml.core.text.IXMLPartitions;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes;
+import org.eclipse.wst.xml.core.internal.provisional.text.IXMLPartitions;
 
 /**
  * @plannedfor 1.0
@@ -42,17 +42,17 @@
 		IContentAssistProcessor jspContentAssistProcessor = new JSPContentAssistProcessor();
 
 		// JSP
-		addPartitionProcessor(IStructuredPartitions.DEFAULT_PARTITION, jspContentAssistProcessor);
+		addPartitionProcessor(IStructuredPartitionTypes.DEFAULT_PARTITION, jspContentAssistProcessor);
 		addPartitionProcessor(IXMLPartitions.XML_DEFAULT, jspContentAssistProcessor);
-		addPartitionProcessor(IHTMLPartitions.HTML_DEFAULT, jspContentAssistProcessor);
-		addPartitionProcessor(IHTMLPartitions.HTML_COMMENT, jspContentAssistProcessor);
-		addPartitionProcessor(IJSPPartitions.JSP_DEFAULT, jspContentAssistProcessor);
-		addPartitionProcessor(IJSPPartitions.JSP_DIRECTIVE, jspContentAssistProcessor);
-		addPartitionProcessor(IJSPPartitions.JSP_CONTENT_DELIMITER, jspContentAssistProcessor);
-		addPartitionProcessor(IJSPPartitions.JSP_CONTENT_JAVASCRIPT, jspContentAssistProcessor);
+		addPartitionProcessor(IHTMLPartitionTypes.HTML_DEFAULT, jspContentAssistProcessor);
+		addPartitionProcessor(IHTMLPartitionTypes.HTML_COMMENT, jspContentAssistProcessor);
+		addPartitionProcessor(IJSPPartitionTypes.JSP_DEFAULT, jspContentAssistProcessor);
+		addPartitionProcessor(IJSPPartitionTypes.JSP_DIRECTIVE, jspContentAssistProcessor);
+		addPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_DELIMITER, jspContentAssistProcessor);
+		addPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_JAVASCRIPT, jspContentAssistProcessor);
 
 		IContentAssistProcessor jspJavaContentAssistProcessor = new JSPJavaContentAssistProcessor();
-		addPartitionProcessor(IJSPPartitions.JSP_CONTENT_JAVA, jspJavaContentAssistProcessor);
+		addPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_JAVA, jspJavaContentAssistProcessor);
 
 	}
 
@@ -89,7 +89,7 @@
 		if (p == null) {
 			IStructuredDocumentRegion sdRegion = ((IStructuredDocument) viewer.getDocument()).getRegionAtCharacterOffset(documentOffset);
 			if (isJSPRegion(sdRegion))
-				p = getPartitionProcessor(IJSPPartitions.JSP_CONTENT_JAVA);
+				p = getPartitionProcessor(IJSPPartitionTypes.JSP_CONTENT_JAVA);
 		}
 		return p;
 	}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentproperties/ui/JSPFContentSettingsPropertyPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentproperties/ui/JSPFContentSettingsPropertyPage.java
deleted file mode 100644
index dc39d11..0000000
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentproperties/ui/JSPFContentSettingsPropertyPage.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.jsp.ui.internal.contentproperties.ui;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jst.jsp.core.internal.contentproperties.JSPFContentProperties;
-import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
-import org.eclipse.jst.jsp.ui.internal.Logger;
-import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-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.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.PropertyPage;
-
-/**
- * JSP Fragment Property Page
- */
-public class JSPFContentSettingsPropertyPage extends PropertyPage {
-	private static final String SELECT_NONE = JSPUIMessages.JSPFContentSettingsPropertyPage_0;
-
-	// TODO: Figure out what to do with these strings/variables
-	private String[] fLanguages = {SELECT_NONE, "java", //$NON-NLS-1$
-				"javascript"}; //$NON-NLS-1$
-	private String[] fContentTypes = {SELECT_NONE, "application/xhtml+xml", //$NON-NLS-1$
-				"application/xml", //$NON-NLS-1$
-				"text/html", //$NON-NLS-1$
-				"text/xml"}; //$NON-NLS-1$
-
-	private class ButtonListener extends SelectionAdapter {
-		public void widgetSelected(SelectionEvent e) {
-			boolean specific = fSpecificSetting.getSelection();
-			updateButtons(specific);
-		}
-	}
-
-	private Combo fLanguageCombo;
-	private Combo fContentTypeCombo;
-	private Button fValidateFragments;
-	Button fSpecificSetting;
-	private SelectionListener fSpecificListener;
-
-	public JSPFContentSettingsPropertyPage() {
-		super();
-		setDescription(JSPUIMessages.JSPFContentSettingsPropertyPage_1);
-	}
-
-	private Composite createComposite(Composite parent, int numColumns) {
-		Composite composite = new Composite(parent, SWT.NULL);
-
-		// GridLayout
-		GridLayout layout = new GridLayout();
-		layout.numColumns = numColumns;
-		composite.setLayout(layout);
-
-		// GridData
-		GridData data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalIndent = 0;
-		composite.setLayoutData(data);
-
-		return composite;
-	}
-
-	protected Control createContents(Composite parent) {
-		Composite propertyPage = createComposite(parent, 2);
-
-		// fragment language control
-		Text languageLabel = new Text(propertyPage, SWT.READ_ONLY);
-		languageLabel.setText(JSPUIMessages.JSPFContentSettingsPropertyPage_2);
-		fLanguageCombo = new Combo(propertyPage, SWT.NONE);
-		GridData data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalIndent = 0;
-		fLanguageCombo.setLayoutData(data);
-		fLanguageCombo.setItems(fLanguages);
-
-		// fragment content type control
-		Text contentTypeLabel = new Text(propertyPage, SWT.READ_ONLY);
-		contentTypeLabel.setText(JSPUIMessages.JSPFContentSettingsPropertyPage_3);
-		fContentTypeCombo = new Combo(propertyPage, SWT.NONE);
-		data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalIndent = 0;
-		fContentTypeCombo.setLayoutData(data);
-		fContentTypeCombo.setItems(fContentTypes);
-
-		// create separator
-		Label label = new Label(propertyPage, SWT.SEPARATOR | SWT.HORIZONTAL);
-		data = new GridData();
-		data.horizontalAlignment = GridData.FILL;
-		data.horizontalSpan = 2;
-		data.verticalSpan = 8;
-		label.setLayoutData(data);
-
-		// specific setting
-		fSpecificSetting = new Button(propertyPage, SWT.CHECK | SWT.LEFT);
-		fSpecificSetting.setText(JSPUIMessages.JSPFContentSettingsPropertyPage_4);
-		data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalSpan = 2;
-		fSpecificSetting.setLayoutData(data);
-
-		fSpecificListener = new ButtonListener();
-		fSpecificSetting.addSelectionListener(fSpecificListener);
-
-		// validate file
-		fValidateFragments = new Button(propertyPage, SWT.CHECK | SWT.LEFT);
-		fValidateFragments.setText(JSPUIMessages.JSPFilesPreferencePage_1);
-		data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalSpan = 2;
-		data.horizontalIndent = 5;
-		fValidateFragments.setLayoutData(data);
-
-		initializeValues();
-
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(propertyPage, IHelpContextIds.JSP_FRAGMENT_HELPID);
-		return propertyPage;
-	}
-
-	void updateButtons(boolean enabled) {
-		fSpecificSetting.setSelection(enabled);
-		fValidateFragments.setEnabled(enabled);
-	}
-
-	/**
-	 * Get the resource this properties page is for
-	 * 
-	 * @return IResource for this properties page or null if there is no
-	 *         IResource
-	 */
-	private IResource getResource() {
-		IResource resource = null;
-		if (getElement() instanceof IResource) {
-			resource = (IResource) getElement();
-		}
-		return resource;
-	}
-
-	private void initializeValues() {
-		String language = JSPFContentProperties.getProperty(JSPFContentProperties.JSPLANGUAGE, getResource(), false);
-		if (language == null || language.length() == 0) {
-			// if null, use none
-			language = SELECT_NONE;
-		}
-		/*
-		 * If item is already part of combo, select it. Otherwise, add to the
-		 * combobox.
-		 */
-		int index = fLanguageCombo.indexOf(language);
-		if (index > -1)
-			fLanguageCombo.select(index);
-		else
-			fLanguageCombo.setText(language);
-
-		String contentType = JSPFContentProperties.getProperty(JSPFContentProperties.JSPCONTENTTYPE, getResource(), false);
-		if (contentType == null || contentType.length() == 0) {
-			// if null, use none
-			contentType = SELECT_NONE;
-		}
-		/*
-		 * If item is already part of combo, select it. Otherwise, add to the
-		 * combobox.
-		 */
-		index = fContentTypeCombo.indexOf(contentType);
-		if (index > -1)
-			fContentTypeCombo.select(index);
-		else
-			fContentTypeCombo.setText(contentType);
-
-		String validate = JSPFContentProperties.getProperty(JSPFContentProperties.VALIDATE_FRAGMENTS, getResource(), false);
-		String validate2 = JSPFContentProperties.getProperty(JSPFContentProperties.VALIDATE_FRAGMENTS, getResource(), true);
-		if (validate == null || validate.length() == 0) {
-			updateButtons(false);
-			fValidateFragments.setSelection(Boolean.valueOf(validate2).booleanValue());
-		}
-		else {
-			updateButtons(true);
-			fValidateFragments.setSelection(Boolean.valueOf(validate).booleanValue());
-		}
-	}
-
-	protected void performDefaults() {
-		int index = fLanguageCombo.indexOf(SELECT_NONE);
-		if (index > -1)
-			fLanguageCombo.select(index);
-
-		index = fContentTypeCombo.indexOf(SELECT_NONE);
-		if (index > -1)
-			fContentTypeCombo.select(index);
-
-		updateButtons(false);
-		fValidateFragments.setSelection(true);
-
-		super.performDefaults();
-	}
-
-	public boolean performOk() {
-		try {
-			// save the fragment language
-			String language = fLanguageCombo.getText();
-			if (language == null || language.length() == 0 || language.equalsIgnoreCase(SELECT_NONE)) {
-				// if none, use null
-				language = null;
-			}
-			JSPFContentProperties.setProperty(JSPFContentProperties.JSPLANGUAGE, getResource(), language);
-
-			// save fragment content type
-			String contentType = fContentTypeCombo.getText();
-			if (contentType == null || contentType.length() == 0 || contentType.equalsIgnoreCase(SELECT_NONE)) {
-				// if none, use null
-				contentType = null;
-			}
-			JSPFContentProperties.setProperty(JSPFContentProperties.JSPCONTENTTYPE, getResource(), contentType);
-
-			String validate = null;
-			if (fSpecificSetting.getSelection()) {
-				validate = Boolean.toString(fValidateFragments.getSelection());
-			}
-			JSPFContentProperties.setProperty(JSPFContentProperties.VALIDATE_FRAGMENTS, getResource(), validate);
-		}
-		catch (CoreException e) {
-			// maybe in future, let user know there was a problem saving file
-			Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e);
-		}
-
-		return super.performOk();
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentproperties/ui/ProjectJSPFContentSettingsPropertyPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentproperties/ui/ProjectJSPFContentSettingsPropertyPage.java
deleted file mode 100644
index 31976b6..0000000
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/contentproperties/ui/ProjectJSPFContentSettingsPropertyPage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.jsp.ui.internal.contentproperties.ui;
-
-import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
-
-public class ProjectJSPFContentSettingsPropertyPage extends JSPFContentSettingsPropertyPage {
-	public ProjectJSPFContentSettingsPropertyPage() {
-		setDescription(JSPUIMessages.ProjectJSPFContentSettingsPropertyPage_0);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java
index de4af96..fec333c 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/ActionContributorJSP.java
@@ -20,7 +20,6 @@
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IWorkbenchActionConstants;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.texteditor.RetargetTextEditorAction;
 import org.eclipse.wst.html.ui.internal.edit.ui.ActionContributorHTML;
 import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants;
@@ -28,22 +27,21 @@
 /**
  * ActionContributorJSP
  * 
- * This class should not be used inside multi page editor's
- * ActionBarContributor, since cascaded init() call from the
- * ActionBarContributor will causes exception and it leads to lose whole
- * toolbars.
- * 
- * Instead, use SourcePageActionContributor for source page contributor of
- * multi page editor.
+ * This class should not be used inside multi page editor's ActionBarContributor,
+ * since cascaded init() call from the ActionBarContributor
+ * will causes exception and it leads to lose whole toolbars. 
+ *
+ * Instead, use SourcePageActionContributor for source page contributor
+ * of multi page editor.
  * 
  * Note that this class is still valid for single page editor.
  */
 public class ActionContributorJSP extends ActionContributorHTML {
-
+	
 	private RetargetTextEditorAction renameElementAction = null;
 	private RetargetTextEditorAction moveElementAction = null;
 	private IMenuManager refactorMenu = null;
-
+	
 	private static final String[] EDITOR_IDS = {"org.eclipse.jst.jsp.core.jspsource.source", "org.eclipse.wst.sse.ui.StructuredTextEditor"}; //$NON-NLS-1$ //$NON-NLS-2$
 
 	public ActionContributorJSP() {
@@ -52,41 +50,39 @@
 		ResourceBundle bundle = JSPUIMessages.getResourceBundle();
 		this.renameElementAction = new RetargetTextEditorAction(bundle, IActionConstantsJSP.ACTION_NAME_RENAME_ELEMENT + StructuredTextEditorActionConstants.DOT);
 		this.renameElementAction.setActionDefinitionId(IActionDefinitionIdsJSP.RENAME_ELEMENT);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(this.renameElementAction, IHelpContextIds.JSP_REFACTORRENAME_HELPID);
-
+		
 		this.moveElementAction = new RetargetTextEditorAction(bundle, IActionConstantsJSP.ACTION_NAME_MOVE_ELEMENT + StructuredTextEditorActionConstants.DOT);
 		this.moveElementAction.setActionDefinitionId(IActionDefinitionIdsJSP.MOVE_ELEMENT);
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(this.moveElementAction, IHelpContextIds.JSP_REFACTORMOVE_HELPID);
-
+		
 		// the refactor menu, add the menu itself to add all refactor actions
 		this.refactorMenu = new MenuManager(JSPUIMessages.ActionContributorJSP_0, RefactorActionGroup.MENU_ID); //$NON-NLS-1$
 		refactorMenu.add(this.renameElementAction);
 		refactorMenu.add(this.moveElementAction);
 	}
-
+	
 
 	protected String[] getExtensionIDs() {
 		return EDITOR_IDS;
 	}
-
+	
 
 	protected void addToMenu(IMenuManager menu) {
 		super.addToMenu(menu);
 
 		menu.insertAfter(IWorkbenchActionConstants.M_EDIT, this.refactorMenu);
 	}
-
+	
 
 	public void setActiveEditor(IEditorPart activeEditor) {
-
+		
 		super.setActiveEditor(activeEditor);
 		this.renameElementAction.setAction(getAction(getTextEditor(getActiveEditorPart()), IActionConstantsJSP.ACTION_NAME_RENAME_ELEMENT));
 		this.moveElementAction.setAction(getAction(getTextEditor(getActiveEditorPart()), IActionConstantsJSP.ACTION_NAME_MOVE_ELEMENT));
 	}
-
+	
 
 	public void setViewerSpecificContributionsEnabled(boolean enabled) {
-
+		
 		super.setViewerSpecificContributionsEnabled(enabled);
 		this.renameElementAction.setEnabled(enabled);
 		this.moveElementAction.setEnabled(enabled);
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java
index 4cec591..a07242c 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/editor/IHelpContextIds.java
@@ -15,39 +15,39 @@
 /**
  * Help context ids for the JSP Source Editor.
  * <p>
- * This interface contains constants only; it is not intended to be
- * implemented.
+ * This interface contains constants only; it is not intended to be implemented.
  * </p>
  * 
  */
 public interface IHelpContextIds {
 	// org.eclipse.jst.jsp.ui.
 	public static final String PREFIX = JSPUIPlugin.ID + "."; //$NON-NLS-1$
-
+	
 
 	// // figured out on the fly
 	// // JSP Source page editor
 	// public static final String JSP_SOURCEVIEW_HELPID =
 	// ContentTypeIdForJSP.ContentTypeID_JSP +"_source_HelpId"; //$NON-NLS-1$
-
+	
 	// JSP Files Preference page
 	public static final String JSP_PREFWEBX_FILES_HELPID = PREFIX + "webx0050"; //$NON-NLS-1$
 	// JSP Styles Preference page
 	public static final String JSP_PREFWEBX_STYLES_HELPID = PREFIX + "webx0051"; //$NON-NLS-1$
 	// JSP Templates Preference page
 	public static final String JSP_PREFWEBX_TEMPLATES_HELPID = PREFIX + "webx0052"; //$NON-NLS-1$
+			
 
-
-	// JSP Fragment Property Page
-	public static final String JSP_FRAGMENT_HELPID = PREFIX + "jspf1000"; //$NON-NLS-1$
-
-	// JSP Source Editor Context Menu
-	// Refactor Rename
-	public static final String JSP_REFACTORRENAME_HELPID = PREFIX + "jspr0010"; //$NON-NLS-1$
-
-	// Refactor Move
-	public static final String JSP_REFACTORMOVE_HELPID = PREFIX + "jspr0020"; //$NON-NLS-1$
-
+	// // JSP Fragment Property Page
+	// public static final String JSP_FRAGMENT_HELPID = PREFIX + "jspf1000";
+	// //$NON-NLS-1$
+	
+//	// JSP Source Editor Context Menu
+//	// Refactor Rename
+//	public static final String JSP_REFACTORRENAME_HELPID = PREFIX + "jspr0010"; //$NON-NLS-1$
+//	
+//	// Refactor Move
+//	public static final String JSP_REFACTORMOVE_HELPID = PREFIX + "jspr0020"; //$NON-NLS-1$
+	
 	// JSP New File Wizard - Template Page
 	public static final String JSP_NEWWIZARD_TEMPLATE_HELPID = PREFIX + "jspw0010"; //$NON-NLS-1$
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java
index 088b648..be5c52d 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/JSPJavaHyperlinkDetector.java
@@ -24,8 +24,8 @@
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
 import org.eclipse.jst.jsp.ui.internal.Logger;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java
index bd39186..3422b2d 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/TaglibHyperlinkDetector.java
@@ -16,17 +16,17 @@
 import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
 import org.eclipse.jface.text.hyperlink.URLHyperlink;
 import org.eclipse.jst.jsp.core.internal.provisional.JSP11Namespace;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.taglib.ITLDRecord;
 import org.eclipse.jst.jsp.core.taglib.ITaglibRecord;
 import org.eclipse.jst.jsp.core.taglib.TaglibIndex;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
 import org.eclipse.jst.jsp.ui.internal.Logger;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitioning;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMAttr;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 import org.w3c.dom.Attr;
@@ -48,7 +48,7 @@
 				try {
 					// check if jsp tag/directive first
 					ITypedRegion partition = TextUtilities.getPartition(doc, IStructuredPartitioning.DEFAULT_STRUCTURED_PARTITIONING, region.getOffset(), false);
-					if (partition != null && partition.getType() == IJSPPartitions.JSP_DIRECTIVE) {
+					if (partition != null && partition.getType() == IJSPPartitionTypes.JSP_DIRECTIVE) {
 						// check if jsp taglib directive
 						Node currentNode = getCurrentNode(doc, region.getOffset());
 						if (currentNode != null && currentNode.getNodeType() == Node.ELEMENT_NODE && JSP11Namespace.ElementName.DIRECTIVE_TAGLIB.equalsIgnoreCase(currentNode.getNodeName())) {
@@ -130,7 +130,7 @@
 					int regLength = valueRegion.getTextLength();
 					String attValue = att.getValueRegionText();
 					if (StringUtils.isQuoted(attValue)) {
-						++regOffset;
+						regOffset = ++regOffset;
 						regLength = regLength - 2;
 					}
 					hyperRegion = new Region(regOffset, regLength);
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java
index fb4765c..3c60920 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/hyperlink/XMLHyperlinkDetector.java
@@ -18,11 +18,11 @@
 import org.eclipse.jface.text.hyperlink.IHyperlinkDetector;
 import org.eclipse.jface.text.hyperlink.URLHyperlink;
 import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
 import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
@@ -304,7 +304,7 @@
 					int regLength = valueRegion.getTextLength();
 					String attValue = att.getValueRegionText();
 					if (StringUtils.isQuoted(attValue)) {
-						++regOffset;
+						regOffset = ++regOffset;
 						regLength = regLength - 2;
 					}
 					hyperRegion = new Region(regOffset, regLength);
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java
index 2891ad6..1ac5f8a 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPJavaSelectionProvider.java
@@ -19,7 +19,7 @@
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
 import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java
index b61d4bd..53a3d01 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/refactoring/JSPMoveElementActionDelegate.java
@@ -12,15 +12,29 @@
 
 package org.eclipse.jst.jsp.ui.internal.java.refactoring;
 
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.corext.refactoring.reorg.JavaMoveProcessor;
+import org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter;
+import org.eclipse.jdt.internal.ui.refactoring.reorg.CreateTargetQueries;
+import org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgMoveWizard;
+import org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgQueries;
 import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
+import org.eclipse.jst.jsp.ui.internal.Logger;
+import org.eclipse.ltk.core.refactoring.participants.MoveRefactoring;
+import org.eclipse.ltk.ui.refactoring.RefactoringWizard;
 import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IActionDelegate2;
 import org.eclipse.ui.IEditorActionDelegate;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IViewActionDelegate;
 import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.wst.sse.ui.internal.util.PlatformStatusLineUtil;
 
 /**
@@ -31,15 +45,15 @@
  * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817 
  */
 public class JSPMoveElementActionDelegate implements IEditorActionDelegate, IActionDelegate2, IViewActionDelegate {
-	//private IEditorPart fEditor;
+	private IEditorPart fEditor;
 
 	public void setActiveEditor(IAction action, IEditorPart targetEditor) {
-		//fEditor = targetEditor;
+		fEditor = targetEditor;
 	}
 
 	public void dispose() {
 		// nulling out just in case
-		//fEditor = null;
+		fEditor = null;
 	}
 
 	public void init(IAction action) {
@@ -54,53 +68,50 @@
 	}
 
 	public void run(IAction action) {
-		
-		// no-op until we know how we're supposed to use this 
-		// eclipse 3.2M5
-		// public move support: https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817
-		
-//		IJavaElement[] elements = getSelectedElements();
-//		if (elements.length > 0) {
-//
-//			// need to check if it's movable
-//			try {
-//				JavaMoveProcessor processor = JavaMoveProcessor.create(getResources(elements), elements);
-//				
-//				Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
-//				MoveRefactoring refactoring = new MoveRefactoring(processor);
-//
-//				RefactoringWizard wizard = createWizard(refactoring);
-//
-//				/*
-//				 * We want to get the shell from the refactoring dialog but
-//				 * it's not known at this point, so we pass the wizard and
-//				 * then, once the dialog is open, we will have access to its
-//				 * shell.
-//				 */
-//
-//				processor.setCreateTargetQueries(new CreateTargetQueries(wizard));
-//				processor.setReorgQueries(new ReorgQueries(wizard));
-//				// String openRefactoringWizMsg =
-//				// RefactoringMessages.getString("OpenRefactoringWizardAction.refactoring");
-//				// //$NON-NLS-1$
-//				String openRefactoringWizMsg = JSPUIMessages.MoveElementWizard; // "Move
-//																				// the
-//																				// selected
-//																				// elements";
-//																				// //$NON-NLS-1$
-//				new RefactoringStarter().activate(refactoring, wizard, parent, openRefactoringWizMsg, true);
-//
-//				PlatformStatusLineUtil.clearStatusLine();
-//
-//			}
-//			catch (JavaModelException e) {
-//				Logger.logException(e);
-//			}
-//		}
-//		else {
-//			PlatformStatusLineUtil.displayErrorMessage(JSPUIMessages.JSPMoveElementAction_0); //$NON-NLS-1$
-//		}
-		
+		IJavaElement[] elements = getSelectedElements();
+		if (elements.length > 0) {
+
+			// need to check if it's movable
+			try {
+				JavaMoveProcessor processor = JavaMoveProcessor.create(getResources(elements), elements/*
+																										 * ,
+																										 * getCodeGenerationSettings()
+																										 */);
+				Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+
+				MoveRefactoring refactoring = new MoveRefactoring(processor);
+
+				RefactoringWizard wizard = createWizard(refactoring);
+
+				/*
+				 * We want to get the shell from the refactoring dialog but
+				 * it's not known at this point, so we pass the wizard and
+				 * then, once the dialog is open, we will have access to its
+				 * shell.
+				 */
+
+				processor.setCreateTargetQueries(new CreateTargetQueries(wizard));
+				processor.setReorgQueries(new ReorgQueries(wizard));
+				// String openRefactoringWizMsg =
+				// RefactoringMessages.getString("OpenRefactoringWizardAction.refactoring");
+				// //$NON-NLS-1$
+				String openRefactoringWizMsg = JSPUIMessages.MoveElementWizard; // "Move
+																				// the
+																				// selected
+																				// elements";
+																				// //$NON-NLS-1$
+				new RefactoringStarter().activate(refactoring, wizard, parent, openRefactoringWizMsg, true);
+
+				PlatformStatusLineUtil.clearStatusLine();
+
+			}
+			catch (JavaModelException e) {
+				Logger.logException(e);
+			}
+		}
+		else {
+			PlatformStatusLineUtil.displayErrorMessage(JSPUIMessages.JSPMoveElementAction_0); //$NON-NLS-1$
+		}
 	}
 
 	public void selectionChanged(IAction action, ISelection selection) {
@@ -111,6 +122,32 @@
 		// do nothing
 	}
 
+	private IJavaElement[] getSelectedElements() {
 
+		IJavaElement[] elements = new IJavaElement[0];
+		if (fEditor instanceof ITextEditor)
+			elements = JSPJavaSelectionProvider.getSelection((ITextEditor) fEditor);
+		return elements;
+	}
+
+	private IResource[] getResources(IJavaElement[] elements) {
+		IResource[] resources = new IResource[elements.length];
+		for (int i = 0; i < elements.length; i++) {
+			try {
+				resources[i] = elements[i].getPrimaryElement().getCorrespondingResource();// elements[i].getResource();
+			}
+			catch (JavaModelException e) {
+				Logger.logException(e);
+			}
+		}
+		return resources;
+	}
 	
+	/**
+	 * will change post 3.0 with public move support
+	 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61817
+	 */
+	private RefactoringWizard createWizard(MoveRefactoring refactoring) {
+		return new ReorgMoveWizard(refactoring);
+	}
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java
index 9ff15c3..a8742cb 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/java/search/JSPFindOccurrencesProcessor.java
@@ -19,11 +19,11 @@
 import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
+import org.eclipse.jst.jsp.core.internal.provisional.text.IJSPPartitionTypes;
 import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.jst.jsp.core.text.IJSPPartitions;
 import org.eclipse.search.ui.ISearchQuery;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.ui.internal.search.FindOccurrencesProcessor;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
@@ -36,7 +36,7 @@
 public class JSPFindOccurrencesProcessor extends FindOccurrencesProcessor {
 
 	protected String[] getPartitionTypes() {
-		return new String[]{IJSPPartitions.JSP_DEFAULT, IJSPPartitions.JSP_CONTENT_JAVA};
+		return new String[]{IJSPPartitionTypes.JSP_DEFAULT, IJSPPartitionTypes.JSP_CONTENT_JAVA};
 	}
 
 	protected String[] getRegionTypes() {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java
index 7e9eb80..1a9c56e 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPColorPage.java
@@ -28,8 +28,8 @@
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.html.ui.internal.style.IStyleConstantsHTML;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore;
 import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey;
 import org.eclipse.wst.sse.ui.internal.preferences.ui.StyledTextColorPicker;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java
index f81c4e4..991a942 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/preferences/ui/JSPFilesPreferencePage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004 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
@@ -10,13 +10,10 @@
  *******************************************************************************/
 package org.eclipse.jst.jsp.ui.internal.preferences.ui;
 
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.content.IContentType;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
 import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
-import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
 import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
 import org.eclipse.jst.jsp.ui.internal.editor.IHelpContextIds;
@@ -55,7 +52,7 @@
 	protected Control createContents(Composite parent) {
 		Control c = super.createContents(parent);
 
-		Group g = createGroup((Composite) c, 1);
+		Group g = createGroup((Composite)c, 1);
 		g.setText(JSPUIMessages.JSPFilesPreferencePage_0);
 		fValidateFragments = createCheckBox(g, JSPUIMessages.JSPFilesPreferencePage_1);
 		boolean validateFragments = getModelPreferences().getBoolean(JSPCorePreferenceNames.VALIDATE_FRAGMENTS);
@@ -74,10 +71,6 @@
 		// no loading preferences
 	}
 
-	protected IContentType getContentType() {
-		return Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-	}
-
 	/*
 	 * (non-Javadoc)
 	 * 
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java
index ba3e93e..f4316f9 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/projection/StructuredTextFoldingProviderJSP.java
@@ -4,12 +4,12 @@
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.source.projection.IProjectionListener;
 import org.eclipse.jface.text.source.projection.ProjectionViewer;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.PropagatingAdapter;
 import org.eclipse.wst.sse.core.internal.model.FactoryRegistry;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.projection.IStructuredTextFoldingProvider;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 import org.w3c.dom.Document;
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java
index 25dfb44..031b108 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/HTMLPrinter.java
@@ -17,7 +17,6 @@
 
 import org.eclipse.jst.jsp.ui.internal.Logger;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.SWTError;
 import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.widgets.Display;
 
@@ -32,28 +31,34 @@
 	static RGB BG_COLOR_RGB = null;
 
 	static {
-		final Display display = Display.getDefault();
-		if (display != null && !display.isDisposed()) {
-			try {
+		// try to do in advance
+		getSystemBGColor();
+	}
+
+	private static RGB getSystemBGColor() {
+		RGB result = null;
+		if (BG_COLOR_RGB == null) {
+			final Display display = Display.getCurrent();
+			if (display != null && !display.isDisposed()) {
+
 				display.asyncExec(new Runnable() {
-					/*
-					 * @see java.lang.Runnable#run()
-					 */
 					public void run() {
-						BG_COLOR_RGB = display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB();
+						if (display != null && !display.isDisposed()) {
+							BG_COLOR_RGB = display.getSystemColor(SWT.COLOR_INFO_BACKGROUND).getRGB();
+						}
 					}
 				});
-			}
-			catch (SWTError err) {
-				// see: https://bugs.eclipse.org/bugs/show_bug.cgi?id=45294
-				if (err.code != SWT.ERROR_DEVICE_DISPOSED)
-					throw err;
+
 			}
 		}
+		else {
+			result = BG_COLOR_RGB;
+		}
+		return result;
 	}
 
 	private HTMLPrinter() {
-		// nothing
+		super();
 	}
 
 	private static String replace(String text, char c, String s) {
@@ -77,8 +82,6 @@
 	}
 
 	public static String convertToHTMLContent(String content) {
-		content = replace(content, '&', "&amp;"); //$NON-NLS-1$
-		content = replace(content, '"', "&quot;"); //$NON-NLS-1$
 		content = replace(content, '<', "&lt;"); //$NON-NLS-1$
 		return replace(content, '>', "&gt;"); //$NON-NLS-1$
 	}
@@ -98,7 +101,7 @@
 		}
 		catch (IOException x) {
 			// never expected
-			Logger.log(Logger.WARNING_DEBUG, x.getMessage(), x);
+			Logger.logException(x);
 		}
 
 		return null;
@@ -156,18 +159,22 @@
 	}
 
 	public static void insertPageProlog(StringBuffer buffer, int position) {
-		insertPageProlog(buffer, position, getBgColor());
+		insertPageProlog(buffer, position, getBgColor()); //$NON-NLS-1$
 	}
 
 	public static void insertPageProlog(StringBuffer buffer, int position, URL styleSheetURL) {
-		insertPageProlog(buffer, position, getBgColor(), styleSheetURL);
+		insertPageProlog(buffer, position, getBgColor(), styleSheetURL); //$NON-NLS-1$
 	}
 
-	private static RGB getBgColor() {
-		if (BG_COLOR_RGB != null)
-			return BG_COLOR_RGB;
-		// RGB value of info bg color on WindowsXP
-		return new RGB(255, 255, 225);
+	static RGB getBgColor() {
+		RGB result = getSystemBGColor();
+		if (result == null) {
+			// use RGB value of default info bg color
+			// on WindowsXP
+			result = new RGB(255, 255, 225);
+		}
+		return result;
+
 	}
 
 	public static void addPageProlog(StringBuffer buffer) {
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPInformationProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPInformationProvider.java
deleted file mode 100644
index b2f680b..0000000
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPInformationProvider.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.jsp.ui.internal.taginfo;
-
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.information.IInformationProvider;
-import org.eclipse.jface.text.information.IInformationProviderExtension;
-import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
-
-/**
- * Provides context help for JSP tags (Show tooltip description)
- */
-public class JSPInformationProvider implements IInformationProvider, IInformationProviderExtension {
-	private ITextHover fTextHover = null;
-
-	public JSPInformationProvider() {
-		fTextHover = SSEUIPlugin.getDefault().getTextHoverManager().createBestMatchHover(new JSPTagInfoHoverProcessor());
-	}
-
-	public IRegion getSubject(ITextViewer textViewer, int offset) {
-		return fTextHover.getHoverRegion(textViewer, offset);
-	}
-
-	public String getInformation(ITextViewer textViewer, IRegion subject) {
-		return (String) getInformation2(textViewer, subject);
-	}
-
-	public Object getInformation2(ITextViewer textViewer, IRegion subject) {
-		return fTextHover.getHoverInfo(textViewer, subject);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java
index 88c6093..7ee1293 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocHoverProcessor.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2004, 2006 IBM Corporation and others.
+ * Copyright (c) 2004 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
@@ -18,127 +18,112 @@
 import org.eclipse.jdt.ui.JavaElementLabels;
 import org.eclipse.jdt.ui.JavadocContentAccess;
 import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextHover;
 import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.jst.jsp.core.internal.java.IJSPTranslation;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslation;
 import org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.ui.internal.taginfo.AbstractHoverProcessor;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
 
 /**
  * Provides javadoc hover help documentation for java code inside JSPs
  */
-public class JSPJavaJavadocHoverProcessor extends AbstractHoverProcessor {
-	/*
-	 * Bulk of the work was copied from
-	 * org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover
-	 */
-	private final long LABEL_FLAGS = JavaElementLabels.ALL_FULLY_QUALIFIED | JavaElementLabels.M_PRE_RETURNTYPE | JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_PARAMETER_NAMES | JavaElementLabels.M_EXCEPTIONS | JavaElementLabels.F_PRE_TYPE_SIGNATURE | JavaElementLabels.M_PRE_TYPE_PARAMETERS | JavaElementLabels.T_TYPE_PARAMETERS | JavaElementLabels.USE_RESOLVED;
-	private final long LOCAL_VARIABLE_FLAGS = LABEL_FLAGS & ~JavaElementLabels.F_FULLY_QUALIFIED | JavaElementLabels.F_POST_QUALIFIED;
-
-	private String getHoverInfo(IJavaElement[] result) {
-		StringBuffer buffer = new StringBuffer();
-		int nResults = result.length;
-		if (nResults == 0)
-			return null;
-
-		if (nResults > 1) {
-
-			for (int i = 0; i < result.length; i++) {
-				HTMLPrinter.startBulletList(buffer);
-				IJavaElement curr = result[i];
-				if (curr instanceof IMember || curr.getElementType() == IJavaElement.LOCAL_VARIABLE)
-					HTMLPrinter.addBullet(buffer, getInfoText(curr));
-				HTMLPrinter.endBulletList(buffer);
-			}
-
-		}
-		else {
-
-			IJavaElement curr = result[0];
-			if (curr instanceof IMember) {
-				IMember member = (IMember) curr;
-				HTMLPrinter.addSmallHeader(buffer, getInfoText(member));
-				Reader reader;
-				try {
-					reader = JavadocContentAccess.getHTMLContentReader(member, true, true);
-				}
-				catch (JavaModelException ex) {
-					return null;
-				}
-				if (reader != null) {
-					HTMLPrinter.addParagraph(buffer, reader);
-				}
-			}
-			else if (curr.getElementType() == IJavaElement.LOCAL_VARIABLE || curr.getElementType() == IJavaElement.TYPE_PARAMETER)
-				HTMLPrinter.addSmallHeader(buffer, getInfoText(curr));
-		}
-
-		if (buffer.length() > 0) {
-			HTMLPrinter.insertPageProlog(buffer, 0);
-			HTMLPrinter.addPageEpilog(buffer);
-			return buffer.toString();
-		}
-
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.text.ITextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer,
-	 *      org.eclipse.jface.text.IRegion)
-	 */
-	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
-		// get JSP translation object for this viewer's document
-		IDOMModel xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(textViewer.getDocument());
-		try {
-			if (xmlModel != null) {
-				IDOMDocument xmlDoc = xmlModel.getDocument();
-				JSPTranslationAdapter adapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
-				if (adapter != null) {
-					JSPTranslation translation = adapter.getJSPTranslation();
-					
-					IJavaElement[] result = translation.getElementsFromJspRange(hoverRegion.getOffset(), hoverRegion.getOffset() + hoverRegion.getLength());
-					return translation.fixupMangledName(getHoverInfo(result));
-				}
-			}
-		}
-		finally {
-			if (xmlModel != null)
-				xmlModel.releaseFromRead();
-		}
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.eclipse.jface.text.ITextHover#getHoverRegion(org.eclipse.jface.text.ITextViewer,
-	 *      int)
-	 */
-	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
-		return JavaWordFinder.findWord(textViewer.getDocument(), offset);
-	}
-
+public class JSPJavaJavadocHoverProcessor implements ITextHover {
+	private final long LABEL_FLAGS=  JavaElementLabels.ALL_FULLY_QUALIFIED
+	| JavaElementLabels.M_PRE_RETURNTYPE | JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_PARAMETER_NAMES | JavaElementLabels.M_EXCEPTIONS 
+	| JavaElementLabels.F_PRE_TYPE_SIGNATURE;
+	
 	private String getInfoText(IJavaElement member) {
-		long flags = member.getElementType() == IJavaElement.LOCAL_VARIABLE ? LOCAL_VARIABLE_FLAGS : LABEL_FLAGS;
-		String label = JavaElementLabels.getElementLabel(member, flags);
-		StringBuffer buf = new StringBuffer();
-		for (int i = 0; i < label.length(); i++) {
-			char ch = label.charAt(i);
+		String label= JavaElementLabels.getElementLabel(member, LABEL_FLAGS);
+		StringBuffer buf= new StringBuffer();
+		for (int i= 0; i < label.length(); i++) {
+			char ch= label.charAt(i);
 			if (ch == '<') {
 				buf.append("&lt;"); //$NON-NLS-1$
-			}
-			else if (ch == '>') {
+			} else if (ch == '>') {
 				buf.append("&gt;"); //$NON-NLS-1$
-			}
-			else {
+			} else {
 				buf.append(ch);
 			}
 		}
 		return buf.toString();
 	}
+	
+	private String getHoverInfo(IJavaElement[] result) {
+		StringBuffer buffer= new StringBuffer();
+		int nResults= result.length;
+		if (nResults == 0)
+			return null;
+		
+		if (nResults > 1) {
+			
+			for (int i= 0; i < result.length; i++) {
+				HTMLPrinter.startBulletList(buffer);
+				IJavaElement curr= result[i];
+				if (curr instanceof IMember || curr.getElementType() == IJavaElement.LOCAL_VARIABLE)
+					HTMLPrinter.addBullet(buffer, getInfoText(curr));
+				HTMLPrinter.endBulletList(buffer);
+			}
+			
+		} else {
+			
+			IJavaElement curr= result[0];
+			if (curr instanceof IMember) {
+				IMember member= (IMember) curr;
+				HTMLPrinter.addSmallHeader(buffer, getInfoText(member));
+				Reader reader;
+				try {
+					reader= JavadocContentAccess.getHTMLContentReader(member, true);
+				} catch (JavaModelException ex) {
+					return null;
+				}
+				if (reader != null) {
+					HTMLPrinter.addParagraph(buffer, reader);
+				}
+			} else if (curr.getElementType() == IJavaElement.LOCAL_VARIABLE)
+				HTMLPrinter.addSmallHeader(buffer, getInfoText(curr));
+		}
+		
+		if (buffer.length() > 0) {
+			HTMLPrinter.insertPageProlog(buffer, 0);
+			HTMLPrinter.addPageEpilog(buffer);
+			return buffer.toString();
+		}
+		
+		return null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.text.ITextHover#getHoverInfo(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion)
+	 */
+	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
+		// get JSP translation object for this viewer's document
+		IDOMModel xmlModel = (IDOMModel) StructuredModelManager.getModelManager().getExistingModelForRead(textViewer.getDocument());
+		try {
+			if(xmlModel != null) {
+				IDOMDocument xmlDoc = xmlModel.getDocument();
+				JSPTranslationAdapter adapter = (JSPTranslationAdapter) xmlDoc.getAdapterFor(IJSPTranslation.class);
+				if (adapter != null) {
+					JSPTranslation translation = adapter.getJSPTranslation();
+					IJavaElement[] result = translation.getElementsFromJspRange(hoverRegion.getOffset(), hoverRegion.getOffset() + hoverRegion.getLength());
+					return getHoverInfo(result);
+				}
+			}
+		}
+		finally {
+			if(xmlModel != null) 
+				xmlModel.releaseFromRead();
+		}
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.text.ITextHover#getHoverRegion(org.eclipse.jface.text.ITextViewer, int)
+	 */
+	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
+		return JavaWordFinder.findWord(textViewer.getDocument(), offset);
+	}
+
 }
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocInformationProvider.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocInformationProvider.java
deleted file mode 100644
index 190f5aa..0000000
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/taginfo/JSPJavaJavadocInformationProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.jsp.ui.internal.taginfo;
-
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.information.IInformationProvider;
-import org.eclipse.jface.text.information.IInformationProviderExtension;
-import org.eclipse.wst.sse.ui.internal.SSEUIPlugin;
-
-/**
- * Provides javadoc context information for java code inside JSPs (Shows
- * tooltip description)
- */
-public class JSPJavaJavadocInformationProvider implements IInformationProvider, IInformationProviderExtension {
-	private ITextHover fTextHover = null;
-
-	public JSPJavaJavadocInformationProvider() {
-		fTextHover = SSEUIPlugin.getDefault().getTextHoverManager().createBestMatchHover(new JSPJavaJavadocHoverProcessor());
-	}
-
-	public IRegion getSubject(ITextViewer textViewer, int offset) {
-		return fTextHover.getHoverRegion(textViewer, offset);
-	}
-
-	public String getInformation(ITextViewer textViewer, IRegion subject) {
-		return (String) getInformation2(textViewer, subject);
-	}
-
-	public Object getInformation2(ITextViewer textViewer, IRegion subject) {
-		return fTextHover.getHoverInfo(textViewer, subject);
-	}
-}
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java
index f670de6..c96288e 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java
@@ -1,13 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.jsp.ui.internal.wizard;
 
 import java.io.ByteArrayInputStream;
@@ -18,11 +8,8 @@
 import java.util.List;
 
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.core.runtime.content.IContentType;
@@ -31,7 +18,6 @@
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
-import org.eclipse.jst.jsp.core.internal.preferences.JSPCorePreferenceNames;
 import org.eclipse.jst.jsp.core.internal.provisional.contenttype.ContentTypeIdForJSP;
 import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
 import org.eclipse.jst.jsp.ui.internal.Logger;
@@ -51,107 +37,29 @@
 	private WizardNewFileCreationPage fNewFilePage;
 	private NewJSPTemplatesWizardPage fNewFileTemplatesPage;
 	private IStructuredSelection fSelection;
-	private IContentType fContentType;
 	private List fValidExtensions = null;
 
 	/**
-	 * Adds default extension to the filename
-	 * 
-	 * @param filename
-	 * @return
-	 */
-	String addDefaultExtension(String filename) {
-		StringBuffer newFileName = new StringBuffer(filename);
-
-		Preferences preference = JSPCorePlugin.getDefault().getPluginPreferences();
-		String ext = preference.getString(JSPCorePreferenceNames.DEFAULT_EXTENSION);
-
-		newFileName.append("."); //$NON-NLS-1$
-		newFileName.append(ext);
-
-		return newFileName.toString();
-	}
-
-	/**
-	 * Get content type associated with this new file wizard
-	 * 
-	 * @return IContentType
-	 */
-	IContentType getContentType() {
-		if (fContentType == null)
-			fContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
-		return fContentType;
-	}
-
-	/**
 	 * Get list of valid extensions for JSP Content type
 	 * 
 	 * @return
 	 */
 	List getValidExtensions() {
 		if (fValidExtensions == null) {
-			IContentType type = getContentType();
+			IContentType type = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
 			fValidExtensions = new ArrayList(Arrays.asList(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
 		}
 		return fValidExtensions;
 	}
 
-	/**
-	 * Verifies if fileName is valid name for content type. Takes base content
-	 * type into consideration.
-	 * 
-	 * @param fileName
-	 * @return true if extension is valid for this content type
-	 */
-	boolean extensionValidForContentType(String fileName) {
-		boolean valid = false;
-
-		IContentType type = getContentType();
-		// there is currently an extension
-		if (fileName.lastIndexOf('.') != -1) {
-			// check what content types are associated with current extension
-			IContentType[] types = Platform.getContentTypeManager().findContentTypesFor(fileName);
-			int i = 0;
-			while (i < types.length && !valid) {
-				valid = types[i].isKindOf(type);
-				++i;
-			}
-		}
-		else
-			valid = true; // no extension so valid
-		return valid;
-	}
-
 	public void addPages() {
 		fNewFilePage = new WizardNewFileCreationPage("JSPWizardNewFileCreationPage", new StructuredSelection(IDE.computeSelectedResources(fSelection))) { //$NON-NLS-1$
 			protected boolean validatePage() {
-				String fileName = getFileName();
-				IPath fullPath = getContainerFullPath();
-				if ((fullPath != null) && (fullPath.isEmpty() == false) && (fileName != null)) {
-					// check that filename does not contain invalid extension
-					if (!extensionValidForContentType(fileName)) {
-						setErrorMessage(NLS.bind(JSPUIMessages._ERROR_FILENAME_MUST_END_JSP, getValidExtensions().toString()));
-						return false;
-					}
-					// no file extension specified so check adding default
-					// extension doesn't equal a file that already exists
-					if (fileName.lastIndexOf('.') == -1) {
-						String newFileName = addDefaultExtension(fileName);
-						IPath resourcePath = fullPath.append(newFileName);
-
-						IWorkspace workspace = ResourcesPlugin.getWorkspace();
-						IStatus result = workspace.validatePath(resourcePath.toString(), IResource.FOLDER);
-						if (!result.isOK()) {
-							// path invalid
-							setErrorMessage(result.getMessage());
-							return false;
-						}
-
-						if ((workspace.getRoot().getFolder(resourcePath).exists() || workspace.getRoot().getFile(resourcePath).exists())) {
-							setErrorMessage(JSPUIMessages.ResourceGroup_nameExists);
-							return false;
-						}
-					}
+				IPath handlePath = new Path(getFileName());
+				String extension = handlePath.getFileExtension();
+				if (extension == null || !getValidExtensions().contains(extension)) {
+					setErrorMessage(NLS.bind(JSPUIMessages._ERROR_FILENAME_MUST_END_JSP, getValidExtensions().toString()));
+					return false;
 				}
 				setErrorMessage(null);
 				return super.validatePage();
@@ -169,7 +77,7 @@
 	public void init(IWorkbench aWorkbench, IStructuredSelection aSelection) {
 		fSelection = aSelection;
 		setWindowTitle(JSPUIMessages._UI_WIZARD_NEW_TITLE);
-
+		
 		ImageDescriptor descriptor = JSPEditorPluginImageHelper.getInstance().getImageDescriptor(JSPEditorPluginImages.IMG_OBJ_WIZBAN_NEWJSPFILE);
 		setDefaultPageImageDescriptor(descriptor);
 	}
@@ -191,60 +99,43 @@
 	}
 
 	public boolean performFinish() {
-		boolean performedOK = false;
-
 		// save user options for next use
 		fNewFileTemplatesPage.saveLastSavedPreferences();
 
-		// no file extension specified so add default extension
-		String fileName = fNewFilePage.getFileName();
-		if (fileName.lastIndexOf('.') == -1) {
-			String newFileName = addDefaultExtension(fileName);
-			fNewFilePage.setFileName(newFileName);
-		}
-
 		// create a new empty file
 		IFile file = fNewFilePage.createNewFile();
 
-		// if there was problem with creating file, it will be null, so make
-		// sure to check
-		if (file != null) {
-			// put template contents into file
-			String templateString = fNewFileTemplatesPage.getTemplateString();
-			if (templateString != null) {
-				// determine the encoding for the new file
-				Preferences preference = JSPCorePlugin.getDefault().getPluginPreferences();
-				String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET);
+		// put template contents into file
+		String templateString = fNewFileTemplatesPage.getTemplateString();
+		if (templateString != null) {
+			// determine the encoding for the new file
+			Preferences preference = JSPCorePlugin.getDefault().getPluginPreferences();
+			String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET);
 
-				try {
-					ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-					OutputStreamWriter outputStreamWriter = null;
-					if (charSet == null || charSet.trim().equals("")) { //$NON-NLS-1$
-						// just use default encoding
-						outputStreamWriter = new OutputStreamWriter(outputStream);
-					}
-					else {
-						outputStreamWriter = new OutputStreamWriter(outputStream, charSet);
-					}
-					outputStreamWriter.write(templateString);
-					outputStreamWriter.flush();
-					outputStreamWriter.close();
-					ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
-					file.setContents(inputStream, true, false, null);
-					inputStream.close();
+			try {
+				ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+				OutputStreamWriter outputStreamWriter = null;
+				if (charSet == null || charSet.trim().equals("")) { //$NON-NLS-1$
+					// just use default encoding
+					outputStreamWriter = new OutputStreamWriter(outputStream);
+				} else {
+					outputStreamWriter = new OutputStreamWriter(outputStream, charSet);
 				}
-				catch (Exception e) {
-					Logger.log(Logger.WARNING_DEBUG, "Could not create contents for new JSP file", e); //$NON-NLS-1$
-				}
+				outputStreamWriter.write(templateString);
+				outputStreamWriter.flush();
+				outputStreamWriter.close();
+				ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+				file.setContents(inputStream, true, false, null);
+				inputStream.close();
 			}
-
-			// open the file in editor
-			openEditor(file);
-
-			// everything's fine
-			performedOK = true;
+			catch (Exception e) {
+				Logger.log(Logger.WARNING_DEBUG, "Could not create contents for new JSP file", e); //$NON-NLS-1$
+			}
 		}
-		return performedOK;
+
+		// open the file in editor
+		openEditor(file);
+		return true;
 	}
 
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 0fb6374..0000000
--- a/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:37:26 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.pde.prefs
index cefb51a..42fb716 100644
--- a/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.wst.css.core/.settings/org.eclipse.pde.prefs
@@ -1,5 +1,4 @@
-#Tue Apr 04 01:43:09 EDT 2006
-compilers.p.build=0
+#Fri May 27 23:56:32 EDT 2005
 compilers.p.deprecated=1
 compilers.p.illegal-att-value=0
 compilers.p.no-required-att=0
diff --git a/bundles/org.eclipse.wst.css.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.css.core/META-INF/MANIFEST.MF
index 725eba4..b14badc 100644
--- a/bundles/org.eclipse.wst.css.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.css.core/META-INF/MANIFEST.MF
@@ -2,41 +2,39 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.css.core; singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.wst.css.core.internal.CSSCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.css.core.internal;x-internal:=true,
- org.eclipse.wst.css.core.internal.cleanup;x-internal:=true,
- org.eclipse.wst.css.core.internal.contentmodel;x-internal:=true,
- org.eclipse.wst.css.core.internal.contentproperties;x-internal:=true,
- org.eclipse.wst.css.core.internal.contenttype;x-internal:=true,
- org.eclipse.wst.css.core.internal.document;x-internal:=true,
- org.eclipse.wst.css.core.internal.encoding;x-internal:=true,
- org.eclipse.wst.css.core.internal.event;x-internal:=true,
- org.eclipse.wst.css.core.internal.eventimpl;x-internal:=true,
- org.eclipse.wst.css.core.internal.format;x-internal:=true,
- org.eclipse.wst.css.core.internal.formatter;x-internal:=true,
- org.eclipse.wst.css.core.internal.metamodel;x-internal:=true,
- org.eclipse.wst.css.core.internal.metamodel.util;x-internal:=true,
- org.eclipse.wst.css.core.internal.metamodelimpl;x-internal:=true,
- org.eclipse.wst.css.core.internal.modelhandler;x-internal:=true,
- org.eclipse.wst.css.core.internal.parser;x-internal:=true,
- org.eclipse.wst.css.core.internal.parser.regions;x-internal:=true,
- org.eclipse.wst.css.core.internal.parserz;x-internal:=true,
- org.eclipse.wst.css.core.internal.preferences;x-internal:=true,
- org.eclipse.wst.css.core.internal.provisional.adapters;x-internal:=true,
- org.eclipse.wst.css.core.internal.provisional.contenttype;x-internal:=true,
- org.eclipse.wst.css.core.internal.provisional.document;x-internal:=true,
- org.eclipse.wst.css.core.internal.provisional.preferences;x-internal:=true,
- org.eclipse.wst.css.core.internal.provisional.text;x-internal:=true,
- org.eclipse.wst.css.core.internal.tasks;x-internal:=true,
- org.eclipse.wst.css.core.internal.text;x-internal:=true,
- org.eclipse.wst.css.core.internal.util;x-internal:=true,
- org.eclipse.wst.css.core.internal.util.declaration;x-internal:=true,
- org.eclipse.wst.css.core.text
+Export-Package: org.eclipse.wst.css.core.internal,
+ org.eclipse.wst.css.core.internal.cleanup,
+ org.eclipse.wst.css.core.internal.contentmodel,
+ org.eclipse.wst.css.core.internal.contenttype,
+ org.eclipse.wst.css.core.internal.document,
+ org.eclipse.wst.css.core.internal.encoding,
+ org.eclipse.wst.css.core.internal.event,
+ org.eclipse.wst.css.core.internal.eventimpl,
+ org.eclipse.wst.css.core.internal.format,
+ org.eclipse.wst.css.core.internal.formatter,
+ org.eclipse.wst.css.core.internal.metamodel,
+ org.eclipse.wst.css.core.internal.metamodel.util,
+ org.eclipse.wst.css.core.internal.metamodelimpl,
+ org.eclipse.wst.css.core.internal.modelhandler,
+ org.eclipse.wst.css.core.internal.parser,
+ org.eclipse.wst.css.core.internal.parser.regions,
+ org.eclipse.wst.css.core.internal.parserz,
+ org.eclipse.wst.css.core.internal.preferences,
+ org.eclipse.wst.css.core.internal.provisional.adapters,
+ org.eclipse.wst.css.core.internal.provisional.contenttype,
+ org.eclipse.wst.css.core.internal.provisional.document,
+ org.eclipse.wst.css.core.internal.provisional.preferences,
+ org.eclipse.wst.css.core.internal.provisional.text,
+ org.eclipse.wst.css.core.internal.tasks,
+ org.eclipse.wst.css.core.internal.text,
+ org.eclipse.wst.css.core.internal.util,
+ org.eclipse.wst.css.core.internal.util.declaration
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.core.resources,
  org.eclipse.wst.xml.core,
  org.eclipse.wst.sse.core
-Eclipse-LazyStart: true; exceptions="org.eclipse.wst.css.core.internal.contenttype"
+Eclipse-AutoStart: true; exceptions="org.eclipse.wst.css.core.internal.contenttype"
diff --git a/bundles/org.eclipse.wst.css.core/plugin.properties b/bundles/org.eclipse.wst.css.core/plugin.properties
index c527aa0..97e65bf 100644
--- a/bundles/org.eclipse.wst.css.core/plugin.properties
+++ b/bundles/org.eclipse.wst.css.core/plugin.properties
@@ -10,6 +10,7 @@
 ###############################################################################
 providerName=Eclipse.org
 pluginName=Structured Source CSS Model
+nlFeatureName=Structured Source CSS Model NL Support
 cssprofile_css2.name=CSS2: Cascading Style Sheets, level 2
 cssprofile_css1.name=CSS1: Cascading Style Sheets, level 1
 cssprofile_mobile1_0.name=CSS Mobile Profile 1.0
diff --git a/bundles/org.eclipse.wst.css.core/plugin.xml b/bundles/org.eclipse.wst.css.core/plugin.xml
index e6c7cd1..15e9920 100644
--- a/bundles/org.eclipse.wst.css.core/plugin.xml
+++ b/bundles/org.eclipse.wst.css.core/plugin.xml
@@ -81,4 +81,5 @@
 		<initializer
 			class="org.eclipse.wst.css.core.internal.preferences.CSSCorePreferenceInitializer" />
 	</extension>
+	
 </plugin>
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCoreMessages.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCoreMessages.java
index 97761bb..9593893 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCoreMessages.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCoreMessages.java
@@ -32,8 +32,6 @@
 	public static String _6concat_ERROR_;
 	public static String _7concat_ERROR_;
 	public static String _8concat_ERROR_;
-	public static String CSSContentPropertiesManager_Updating;
-	public static String CSSContentPropertiesManager_Problems_Updating;
 
 	static {
 		// load message values from bundle file
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePlugin.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePlugin.java
index 8693215..710b39a 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePlugin.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePlugin.java
@@ -13,8 +13,6 @@
 import org.eclipse.core.resources.IWorkspace;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.Plugin;
-import org.eclipse.wst.css.core.internal.contentproperties.CSSContentPropertiesManager;
-import org.osgi.framework.BundleContext;
 
 /**
  * The main plugin class to be used in the desktop.
@@ -44,19 +42,4 @@
 	public static IWorkspace getWorkspace() {
 		return ResourcesPlugin.getWorkspace();
 	}
-	
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-
-		// listen for resource changes to update content properties keys
-		CSSContentPropertiesManager.startup();
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// stop listenning for resource changes to update content properties
-		// keys
-		CSSContentPropertiesManager.shutdown();
-
-		super.stop(context);
-	}
 }
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePluginResources.properties b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePluginResources.properties
index 762f57b..6e42bd3 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePluginResources.properties
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/CSSCorePluginResources.properties
@@ -21,6 +21,3 @@
 _6concat_ERROR_={0}first region is not in model.
 _7concat_ERROR_={0}last region is null.
 _8concat_ERROR_={0}last region is not in model.
-#
-CSSContentPropertiesManager_Updating=Updating CSS Content Settings
-CSSContentPropertiesManager_Problems_Updating=Problem saving CSS Content Settings for {0}
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contentproperties/CSSContentProperties.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contentproperties/CSSContentProperties.java
deleted file mode 100644
index 3bbc582..0000000
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contentproperties/CSSContentProperties.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.wst.css.core.internal.contentproperties;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.wst.css.core.internal.CSSCorePlugin;
-import org.eclipse.wst.css.core.internal.Logger;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-/**
- * Properties constants used by CSS. Clients should only read and modify the
- * CSS properties programmatically using this class.
- * 
- * @since 1.1
- */
-public class CSSContentProperties {
-	static final String CSSCORE_ID = CSSCorePlugin.getDefault().getBundle().getSymbolicName();
-	private static final String PROJECT_KEY = "<project>"; //$NON-NLS-1$
-
-	/**
-	 * The default css profile to use when none is specified.
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 */
-	public static final String CSS_PROFILE = "css-profile"; //$NON-NLS-1$
-
-	/**
-	 * Generates a preference key based on resourcePath
-	 * 
-	 * @param resourcePath
-	 *            the path the key will be based off of
-	 * @return preference key based on resourcePath (basically the
-	 *         resourcePath without the filename); PROJECT_KEY if resourcePath
-	 *         is null
-	 */
-	static String getKeyFor(IPath resourcePath) {
-		String key = PROJECT_KEY;
-		if (resourcePath != null && resourcePath.segmentCount() > 1) {
-			key = resourcePath.removeFirstSegments(1).toString();
-		}
-		return key;
-	}
-
-	/**
-	 * Get the preferences node associated with the given project scope and
-	 * preference key (subNode) If create is true, the preference node will be
-	 * created if one does not already exist
-	 * 
-	 * @param project
-	 *            the project the preference node is under
-	 * @param preferenceKey
-	 *            the subnode/category the preference node is located in
-	 * @param create
-	 *            if true, a preference node will be created if one does not
-	 *            already exist
-	 * @return Preferences associated with the given project scope and
-	 *         preference key. null if one could not be found and create is
-	 *         false
-	 */
-	static Preferences getPreferences(IProject project, String preferenceKey, boolean create) {
-		if (create)
-			// create all nodes down to the one we are interested in
-			return new ProjectScope(project).getNode(CSSCORE_ID).node(preferenceKey);
-		// be careful looking up for our node so not to create any nodes as
-		// side effect
-		Preferences node = Platform.getPreferencesService().getRootNode().node(ProjectScope.SCOPE);
-		try {
-			// TODO once bug 90500 is fixed, should be as simple as this:
-			// String path = project.getName() + IPath.SEPARATOR +
-			// ResourcesPlugin.PI_RESOURCES + IPath.SEPARATOR +
-			// ENCODING_PREF_NODE;
-			// return node.nodeExists(path) ? node.node(path) : null;
-			// for now, take the long way
-			if (!node.nodeExists(project.getName()))
-				return null;
-			node = node.node(project.getName());
-			if (!node.nodeExists(CSSCORE_ID))
-				return null;
-			node = node.node(CSSCORE_ID);
-			if (!node.nodeExists(preferenceKey))
-				return null;
-			return node.node(preferenceKey);
-		}
-		catch (BackingStoreException e) {
-			// nodeExists failed
-			Logger.log(Logger.WARNING_DEBUG, "Could not retrieve preference node", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	/**
-	 * Returns the value for the given key in the given context.
-	 * 
-	 * @param key
-	 *            The property key
-	 * @param resource
-	 *            The current context or <code>null</code> if no context is
-	 *            available and the workspace setting should be taken. Note
-	 *            that passing <code>null</code> should be avoided.
-	 * @param recurse
-	 *            whether the parent should be queried till property is found
-	 * @return Returns the current value for the key.
-	 * @since 1.1
-	 */
-	public static String getProperty(String key, IResource resource, boolean recurse) {
-		String val = null;
-		// boolean preferenceFound = false;
-		if (resource != null) {
-			IProject project = resource.getProject();
-			if (project != null) {
-				Preferences preferences = getPreferences(project, key, false);
-				if (preferences != null) {
-					val = internalGetProperty(resource, recurse, preferences);
-					// preferenceFound = true;
-				}
-			}
-		}
-		// Workbench preference may not be needed so leave out for now
-		// // no preferences found - for performance reasons,
-		// // short-circuit
-		// // lookup by falling back to workspace's default
-		// // setting
-		// if (!preferenceFound)
-		// val = getWorkbenchPreference(key);
-		return val;
-	}
-
-	private static String internalGetProperty(IResource resource, boolean recurse, Preferences preferences) {
-		String value = preferences.get(getKeyFor(resource.getFullPath()), null);
-		if (value == null && resource != resource.getProject() && recurse) {
-			value = preferences.get(getKeyFor(null), null);
-		}
-
-		// Workbench preference may not be needed so leave out for now
-		// // ensure we default to the workspace preference if none is found
-		// return value == null ? getWorkbenchPreference(key) : value;
-		return value;
-	}
-
-	/**
-	 * Sets the value for the given key in the given context.
-	 * 
-	 * @param key
-	 *            The property key
-	 * @param resource
-	 *            The current context. Note context cannot be
-	 *            <code>null</code>.
-	 * @param value
-	 *            The value to set for the key. If value is <code>null</code>
-	 *            the key is removed from properties.
-	 * @since 1.1
-	 */
-	public static void setProperty(String key, IResource resource, String value) throws CoreException {
-		if (resource != null) {
-			IProject project = resource.getProject();
-			if (project != null) {
-				Preferences preferences = getPreferences(project, key, true);
-				if (value == null || value.trim().length() == 0)
-					preferences.remove(getKeyFor(resource.getFullPath()));
-				else
-					preferences.put(getKeyFor(resource.getFullPath()), value);
-				try {
-					// save changes
-					preferences.flush();
-				}
-				catch (BackingStoreException e) {
-					throw new CoreException(new Status(IStatus.ERROR, CSSCORE_ID, IStatus.ERROR, "Unable to set property", e)); //$NON-NLS-1$
-				}
-			}
-		}
-		// Workbench preference may not be needed so leave out for now
-		// just set a preference in the instance scope
-		// if (!preferenceFound) {
-		// setWorkbenchPreference(key);
-		// }
-	}
-}
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contentproperties/CSSContentPropertiesManager.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contentproperties/CSSContentPropertiesManager.java
deleted file mode 100644
index 25a4b8d..0000000
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/contentproperties/CSSContentPropertiesManager.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 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.wst.css.core.internal.contentproperties;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResourceChangeEvent;
-import org.eclipse.core.resources.IResourceChangeListener;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.resources.IResourceStatus;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.css.core.internal.CSSCoreMessages;
-import org.eclipse.wst.css.core.internal.Logger;
-import org.osgi.framework.Bundle;
-import org.osgi.service.prefs.BackingStoreException;
-import org.osgi.service.prefs.Preferences;
-
-public class CSSContentPropertiesManager {
-	public CSSContentPropertiesManager() {
-		super();
-		fResourceChangeListener = new ResourceChangeListener();
-		fJob = new ContentPropertiesManagerJob();
-	}
-
-	private static CSSContentPropertiesManager _instance = null;
-	private IResourceChangeListener fResourceChangeListener;
-	ContentPropertiesManagerJob fJob;
-
-	/**
-	 * This job implementation is used to allow the resource change listener
-	 * to schedule operations that need to modify the workspace.
-	 */
-	private class ContentPropertiesManagerJob extends Job {
-		private static final int PROPERTIES_UPDATE_DELAY = 500;
-		private List asyncChanges = new ArrayList();
-
-		public ContentPropertiesManagerJob() {
-			super(CSSCoreMessages.CSSContentPropertiesManager_Updating);
-			setSystem(true);
-			setPriority(Job.INTERACTIVE);
-		}
-
-		public void addChanges(Set newChanges) {
-			if (newChanges.isEmpty())
-				return;
-			synchronized (asyncChanges) {
-				asyncChanges.addAll(newChanges);
-				asyncChanges.notify();
-			}
-			schedule(PROPERTIES_UPDATE_DELAY);
-		}
-
-		public IProject getNextChange() {
-			synchronized (asyncChanges) {
-				return asyncChanges.isEmpty() ? null : (IProject) asyncChanges.remove(asyncChanges.size() - 1);
-			}
-		}
-
-		protected IStatus run(IProgressMonitor monitor) {
-			MultiStatus result = new MultiStatus(CSSContentProperties.CSSCORE_ID, IResourceStatus.FAILED_SETTING_CHARSET, CSSCoreMessages.CSSContentPropertiesManager_Updating, null);
-			monitor = monitor == null ? new NullProgressMonitor() : monitor;
-			try {
-				monitor.beginTask(CSSCoreMessages.CSSContentPropertiesManager_Updating, asyncChanges.size());
-				try {
-					IProject next;
-					while ((next = getNextChange()) != null) {
-						// just exit if the system is shutting down or has
-						// been shut down
-						// it is too late to change the workspace at this
-						// point anyway
-						if (Platform.getBundle("org.eclipse.osgi").getState() != Bundle.ACTIVE) //$NON-NLS-1$
-							return Status.OK_STATUS;
-						try {
-							// save the preferences nodes
-							if (next.isAccessible()) {
-								// save css profile preferences
-								Preferences projectPrefs = CSSContentProperties.getPreferences(next, CSSContentProperties.CSS_PROFILE, false);
-								if (projectPrefs != null)
-									projectPrefs.flush();
-
-							}
-						}
-						catch (BackingStoreException e) {
-							// we got an error saving
-							String detailMessage = NLS.bind(CSSCoreMessages.CSSContentPropertiesManager_Problems_Updating, next.getFullPath());
-							result.add(new Status(1 << (IResourceStatus.FAILED_SETTING_CHARSET % 100 / 33), ResourcesPlugin.PI_RESOURCES, IResourceStatus.FAILED_SETTING_CHARSET, detailMessage, e));
-						}
-					}
-					monitor.worked(1);
-				}
-				catch (OperationCanceledException e) {
-					throw e;
-				}
-			}
-			finally {
-				monitor.done();
-			}
-			return result;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.core.runtime.jobs.Job#shouldRun()
-		 */
-		public boolean shouldRun() {
-			synchronized (asyncChanges) {
-				return !asyncChanges.isEmpty();
-			}
-		}
-	}
-
-	class ResourceChangeListener implements IResourceChangeListener {
-		private void processEntryChanges(IResourceDelta projectDelta, Set projectsToSave) {
-			// check each resource with css content setting to see if it has
-			// been moved/deleted
-			boolean resourceChanges = false;
-
-			// project affected
-			IProject currentProject = (IProject) projectDelta.getResource();
-
-			resourceChanges = processPreferences(currentProject, CSSContentProperties.CSS_PROFILE, projectDelta, projectsToSave);
-
-			// if there was a preference key change, need to save preferences
-			if (resourceChanges)
-				projectsToSave.add(currentProject);
-		}
-
-		/**
-		 * Goes through all the resource-dependent preferences associated with
-		 * currentProject & key and updates the preference keys if needed
-		 * based on projectDelta
-		 * 
-		 * @param currentProject
-		 *            current project of the preferences to be looked at
-		 * @param key
-		 *            current key/subcategory of the preferences to be looked
-		 *            at
-		 * @param projectDelta
-		 *            the changes to process the preference keys against
-		 * @param projectsToSave
-		 *            the projects that need to be updated/saved
-		 * @return true if currentProject's preferences were modified
-		 */
-		private boolean processPreferences(IProject currentProject, String key, IResourceDelta projectDelta, Set projectsToSave) {
-			boolean resourceChanges = false;
-
-			// get the project-key preference node
-			Preferences projectPrefs = CSSContentProperties.getPreferences(currentProject, key, false);
-			if (projectPrefs == null)
-				// no preferences for this project-key, just bail
-				return false;
-			String[] affectedResources;
-			try {
-				affectedResources = projectPrefs.keys();
-			}
-			catch (BackingStoreException e) {
-				// problems with the project scope... we gonna miss the
-				// changes (but will log)
-				Logger.log(Logger.WARNING_DEBUG, "Problem retreiving JSP Fragment preferences", e); //$NON-NLS-1$
-				return false;
-			}
-
-			// go through each preference key (which is really a file name)
-			for (int i = 0; i < affectedResources.length; i++) {
-				// see if preference key/file name was file that was changed
-				IResourceDelta memberDelta = projectDelta.findMember(new Path(affectedResources[i]));
-				// no changes for the given resource
-				if (memberDelta == null)
-					continue;
-				if (memberDelta.getKind() == IResourceDelta.REMOVED) {
-					resourceChanges = true;
-					// remove the setting for the original location
-					String currentValue = projectPrefs.get(affectedResources[i], null);
-					projectPrefs.remove(affectedResources[i]);
-					if ((memberDelta.getFlags() & IResourceDelta.MOVED_TO) != 0) {
-						// if moving, copy the setting for the new location
-						IProject targetProject = ResourcesPlugin.getWorkspace().getRoot().getProject(memberDelta.getMovedToPath().segment(0));
-						Preferences targetPrefs = CSSContentProperties.getPreferences(targetProject, key, true);
-						targetPrefs.put(CSSContentProperties.getKeyFor(memberDelta.getMovedToPath()), currentValue);
-						if (targetProject != currentProject)
-							projectsToSave.add(targetProject);
-					}
-				}
-			}
-			return resourceChanges;
-		}
-
-		/**
-		 * For any change to the encoding file or any resource with encoding
-		 * set, just discard the cache for the corresponding project.
-		 */
-		public void resourceChanged(IResourceChangeEvent event) {
-			IResourceDelta delta = event.getDelta();
-			if (delta == null)
-				return;
-			IResourceDelta[] projectDeltas = delta.getAffectedChildren();
-			// process each project in the delta
-			Set projectsToSave = new HashSet();
-			for (int i = 0; i < projectDeltas.length; i++)
-				// nothing to do if a project has been added/removed/moved
-				if (projectDeltas[i].getKind() == IResourceDelta.CHANGED && (projectDeltas[i].getFlags() & IResourceDelta.OPEN) == 0)
-					processEntryChanges(projectDeltas[i], projectsToSave);
-			fJob.addChanges(projectsToSave);
-		}
-	}
-
-	public synchronized static void startup() {
-		_instance = new CSSContentPropertiesManager();
-		ResourcesPlugin.getWorkspace().addResourceChangeListener(_instance.fResourceChangeListener, IResourceChangeEvent.POST_CHANGE);
-	}
-
-	public synchronized static void shutdown() {
-		ResourcesPlugin.getWorkspace().removeResourceChangeListener(_instance.fResourceChangeListener);
-		_instance = null;
-	}
-}
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/document/CSSStyleDeclItemImpl.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/document/CSSStyleDeclItemImpl.java
index 7b90807..208b951 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/document/CSSStyleDeclItemImpl.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/document/CSSStyleDeclItemImpl.java
@@ -24,8 +24,6 @@
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion;
-import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.internal.text.TextRegionListImpl;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.css.CSSValue;
 
@@ -230,35 +228,31 @@
 		}
 		setCssValueTextCore(value);
 	}
-
 	private void setCssValueTextCore(String value) throws DOMException {
 		// use temporary document
-		synchronized (CSSStyleDeclarationImpl.class) {
+		synchronized(CSSStyleDeclarationImpl.class) {
 			if (sharedStructuredDocument == null) {
 				IDocumentLoader loader = new CSSDocumentLoader();
 				sharedStructuredDocument = (IStructuredDocument) loader.createNewStructuredDocument();
 				((CSSSourceParser) sharedStructuredDocument.getParser()).setParserMode(CSSSourceParser.MODE_DECLARATION_VALUE);
-
+				
 			}
 			sharedStructuredDocument.set(value);
 			IStructuredDocumentRegion node = sharedStructuredDocument.getFirstStructuredDocumentRegion();
-
+			
 			if (node == null) {
 				return;
 			}
 			if (node.getNext() != null) {
 				throw new DOMException(DOMException.INVALID_MODIFICATION_ERR, "");//$NON-NLS-1$
 			}
-
+			
 			CSSDeclarationItemParser itemParser = new CSSDeclarationItemParser(getOwnerDocument());
 			itemParser.setStructuredDocumentTemporary(true);
-			// make a copy of nodelist because setupValues will destroy list
-			ITextRegionList nodeList = new TextRegionListImpl(node.getRegions());
-			itemParser.setupValues(this, node, nodeList);
+			itemParser.setupValues(this, node, node.getRegions());
 		}
 	}
-
-	private static IStructuredDocument sharedStructuredDocument;
+	private static IStructuredDocument sharedStructuredDocument; 
 
 	/**
 	 * @param newPriority
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentCharsetDetector.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentCharsetDetector.java
index d03f797..62034c5 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentCharsetDetector.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/encoding/CSSDocumentCharsetDetector.java
@@ -22,7 +22,7 @@
 import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegionList;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion;
 import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegionList;
-import org.eclipse.wst.sse.core.utils.StringUtils;
+import org.eclipse.wst.sse.core.internal.util.StringUtils;
 
 
 public class CSSDocumentCharsetDetector extends CSSResourceEncodingDetector implements IDocumentCharsetDetector {
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/util/CSSProfileFinder.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/util/CSSProfileFinder.java
index dfb0f30..ed11f62 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/util/CSSProfileFinder.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/metamodel/util/CSSProfileFinder.java
@@ -10,20 +10,25 @@
  *******************************************************************************/
 package org.eclipse.wst.css.core.internal.metamodel.util;
 
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.wst.css.core.internal.contentproperties.CSSContentProperties;
 import org.eclipse.wst.css.core.internal.metamodel.CSSProfile;
 import org.eclipse.wst.css.core.internal.metamodel.CSSProfileRegistry;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSDocument;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.internal.contentproperties.ContentSettingsCreator;
+import org.eclipse.wst.sse.internal.contentproperties.IContentSettings;
 
 
 public class CSSProfileFinder {
+
+	final static private String CSS_PROFILE = "css-profile"; //$NON-NLS-1$
+
 	/**
 	 * Constructor for CSSProfileFinder.
 	 */
@@ -71,12 +76,22 @@
 		CSSProfile profile = null;
 
 		if (baseLocation != null) {
+			IContentSettings cs = ContentSettingsCreator.create();
 			IPath path = new Path(baseLocation);
 			IResource resource = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path);
 			if (resource == null && path.segmentCount() > 1)
 				resource = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
 			if (resource != null) {
-				String profileID = CSSContentProperties.getProperty(CSSContentProperties.CSS_PROFILE, resource, true);
+				IProject project = resource.getProject();
+				// at first, initialized with project settings
+				if (project != null) {
+					String profileID = cs.getProperty(project, CSS_PROFILE);
+					if (profileID != null && 0 < profileID.length()) {
+						profile = reg.getProfile(profileID);
+					}
+				}
+				// if resource settings exist, overwrite with project settings
+				String profileID = cs.getProperty(resource, CSS_PROFILE);
 				if (profileID != null && 0 < profileID.length()) {
 					profile = reg.getProfile(profileID);
 				}
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceInitializer.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceInitializer.java
index 2056288..fc3997d 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceInitializer.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceInitializer.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 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
@@ -44,11 +44,7 @@
 		}
 		node.put(CommonEncodingPreferenceNames.OUTPUT_CODESET, defaultEnc);
 		node.put(CommonEncodingPreferenceNames.END_OF_LINE_CODE, ""); //$NON-NLS-1$
-
-		// this could be made smarter by actually looking up the content
-		// type's valid extensions
-		node.put(CSSCorePreferenceNames.DEFAULT_EXTENSION, "css"); //$NON-NLS-1$
-
+		
 		// additional css core preferences
 		node.putInt(CSSCorePreferenceNames.FORMAT_PROP_PRE_DELIM, 0);
 		node.putInt(CSSCorePreferenceNames.FORMAT_PROP_POST_DELIM, 1);
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceNames.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceNames.java
index d3fa08d..130389a 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceNames.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/preferences/CSSCorePreferenceNames.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 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
@@ -39,15 +39,6 @@
 	public static final String CLEANUP_CASE_SELECTOR = "cleanupSelectorCase"; //$NON-NLS-1$
 
 	/**
-	 * The default extension to use when none is specified in the New CSS File
-	 * Wizard.
-	 * <p>
-	 * Value is of type <code>String</code>.
-	 * </p>
-	 */
-	public static final String DEFAULT_EXTENSION = "defaultExtension"; //$NON-NLS-1$
-	
-	/**
 	 * The maximum width of a line before a line split is needed.
 	 * <p>
 	 * Value is of type <code>Integer</code>.
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/provisional/text/ICSSPartitionTypes.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/provisional/text/ICSSPartitionTypes.java
index fe95c77..3b8a4fa 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/provisional/text/ICSSPartitionTypes.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/provisional/text/ICSSPartitionTypes.java
@@ -7,7 +7,7 @@
  * partitioning for CSS and all its partitions. Clients should reference the
  * partition type Strings defined here directly.
  * 
- * @deprecated org.eclipse.wst.css.core.text.ICSSPartitions
+ * @plannedfor 1.0
  */
 public interface ICSSPartitionTypes extends IStructuredPartitionTypes {
 
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/text/StructuredTextPartitionerForCSS.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/text/StructuredTextPartitionerForCSS.java
index 04451cd..47361db 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/text/StructuredTextPartitionerForCSS.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/text/StructuredTextPartitionerForCSS.java
@@ -11,20 +11,20 @@
 package org.eclipse.wst.css.core.internal.text;
 
 import org.eclipse.jface.text.IDocumentPartitioner;
-import org.eclipse.wst.css.core.text.ICSSPartitions;
+import org.eclipse.wst.css.core.internal.provisional.text.ICSSPartitionTypes;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes;
 import org.eclipse.wst.sse.core.internal.text.rules.StructuredTextPartitioner;
-import org.eclipse.wst.sse.core.text.IStructuredPartitions;
 
 public class StructuredTextPartitionerForCSS extends StructuredTextPartitioner {
 	
-	public final static String[] legalTypes = new String[]{ICSSPartitions.STYLE, IStructuredPartitions.DEFAULT_PARTITION};
+	public final static String[] legalTypes = new String[]{ICSSPartitionTypes.STYLE, IStructuredPartitionTypes.DEFAULT_PARTITION};
 
 	public StructuredTextPartitionerForCSS() {
 		super();
 	}
 
 	public String getDefaultPartitionType() {
-		return ICSSPartitions.STYLE;
+		return ICSSPartitionTypes.STYLE;
 	}
 
 	public String[] getLegalContentTypes() {
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/URLModelProviderCSS.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/URLModelProviderCSS.java
index f72bb62..c25e9a2 100644
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/URLModelProviderCSS.java
+++ b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/internal/util/URLModelProviderCSS.java
@@ -31,10 +31,10 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.encoding.EncodingRule;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.exceptions.ResourceAlreadyExists;
 import org.eclipse.wst.sse.core.internal.provisional.exceptions.ResourceInUse;
 import org.eclipse.wst.sse.core.internal.util.PathHelper;
diff --git a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/text/ICSSPartitions.java b/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/text/ICSSPartitions.java
deleted file mode 100644
index 1386b9c..0000000
--- a/bundles/org.eclipse.wst.css.core/src/org/eclipse/wst/css/core/text/ICSSPartitions.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.eclipse.wst.css.core.text;
-
-
-/**
- * This interface is not intended to be implemented. It defines the
- * partitioning for CSS and all its partitions. Clients should reference the
- * partition type Strings defined here directly.
- * 
- * @since 1.1
- */
-public interface ICSSPartitions {
-
-	String STYLE = "org.eclipse.wst.css.STYLE"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 1ec642d..0000000
--- a/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:37:38 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.pde.prefs
index 7f6d407..42fb716 100644
--- a/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.wst.css.ui/.settings/org.eclipse.pde.prefs
@@ -1,5 +1,4 @@
-#Tue Apr 04 01:43:13 EDT 2006
-compilers.p.build=0
+#Fri May 27 23:56:32 EDT 2005
 compilers.p.deprecated=1
 compilers.p.illegal-att-value=0
 compilers.p.no-required-att=0
diff --git a/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
index 825f1ee..06bc72a 100644
--- a/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.css.ui/META-INF/MANIFEST.MF
@@ -2,30 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.css.ui; singleton:=true
-Bundle-Version: 1.0.100.qualifier
+Bundle-Version: 1.0.0.qualifier
 Bundle-Activator: org.eclipse.wst.css.ui.internal.CSSUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.css.ui,
- org.eclipse.wst.css.ui.internal;x-internal:=true,
- org.eclipse.wst.css.ui.internal.autoedit;x-internal:=true,
- org.eclipse.wst.css.ui.internal.contentassist;x-internal:=true,
- org.eclipse.wst.css.ui.internal.contentoutline;x-internal:=true,
- org.eclipse.wst.css.ui.internal.contentproperties;x-internal:=true,
- org.eclipse.wst.css.ui.internal.contentproperties.ui;x-internal:=true,
- org.eclipse.wst.css.ui.internal.edit.ui;x-internal:=true,
- org.eclipse.wst.css.ui.internal.editor;x-internal:=true,
- org.eclipse.wst.css.ui.internal.image;x-internal:=true,
- org.eclipse.wst.css.ui.internal.preferences;x-internal:=true,
- org.eclipse.wst.css.ui.internal.preferences.ui;x-internal:=true,
- org.eclipse.wst.css.ui.internal.projection;x-internal:=true,
- org.eclipse.wst.css.ui.internal.properties;x-internal:=true,
- org.eclipse.wst.css.ui.internal.registry;x-internal:=true,
- org.eclipse.wst.css.ui.internal.selection;x-internal:=true,
- org.eclipse.wst.css.ui.internal.style;x-internal:=true,
- org.eclipse.wst.css.ui.internal.templates;x-internal:=true,
- org.eclipse.wst.css.ui.internal.text;x-internal:=true,
- org.eclipse.wst.css.ui.internal.wizard;x-internal:=true,
+ org.eclipse.wst.css.ui.internal,
+ org.eclipse.wst.css.ui.internal.autoedit,
+ org.eclipse.wst.css.ui.internal.contentassist,
+ org.eclipse.wst.css.ui.internal.contentoutline,
+ org.eclipse.wst.css.ui.internal.contentproperties,
+ org.eclipse.wst.css.ui.internal.contentproperties.ui,
+ org.eclipse.wst.css.ui.internal.edit.ui,
+ org.eclipse.wst.css.ui.internal.editor,
+ org.eclipse.wst.css.ui.internal.image,
+ org.eclipse.wst.css.ui.internal.preferences,
+ org.eclipse.wst.css.ui.internal.preferences.ui,
+ org.eclipse.wst.css.ui.internal.projection,
+ org.eclipse.wst.css.ui.internal.properties,
+ org.eclipse.wst.css.ui.internal.registry,
+ org.eclipse.wst.css.ui.internal.selection,
+ org.eclipse.wst.css.ui.internal.style,
+ org.eclipse.wst.css.ui.internal.templates,
+ org.eclipse.wst.css.ui.internal.text,
+ org.eclipse.wst.css.ui.internal.wizard,
  org.eclipse.wst.css.ui.views.contentoutline,
  org.eclipse.wst.css.ui.views.properties
 Require-Bundle: org.eclipse.ui.ide,
@@ -43,4 +43,4 @@
  org.eclipse.core.resources,
  org.eclipse.core.runtime,
  org.eclipse.ui.ide
-Eclipse-LazyStart: true
+Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.wst.css.ui/plugin.properties b/bundles/org.eclipse.wst.css.ui/plugin.properties
index 3c0e4a2..265ddec 100644
--- a/bundles/org.eclipse.wst.css.ui/plugin.properties
+++ b/bundles/org.eclipse.wst.css.ui/plugin.properties
@@ -10,6 +10,7 @@
 ###############################################################################
 providerName=Eclipse.org
 pluginName=SSE CSS Source Editor
+nlFeatureName=SSE CSS Source Editor NL Support
 CSS_Source_Page_Editor.name=CSS Editor
 CSS_Files.name=CSS Files
 CSS_Source.name=CSS Source
diff --git a/bundles/org.eclipse.wst.css.ui/plugin.xml b/bundles/org.eclipse.wst.css.ui/plugin.xml
index f9c05f6..21c0be8 100644
--- a/bundles/org.eclipse.wst.css.ui/plugin.xml
+++ b/bundles/org.eclipse.wst.css.ui/plugin.xml
@@ -5,7 +5,7 @@
 	<extension point="org.eclipse.ui.editors">
 		<editor
 			name="%CSS_Source_Page_Editor.name"
-			icon="$nl$/icons/full/obj16/sourceEditor.gif"
+			icon="icons/full/obj16/sourceEditor.gif"
 			contributorClass="org.eclipse.wst.css.ui.internal.ActionContributorCSS"
 			class="org.eclipse.wst.sse.ui.StructuredTextEditor"
 			symbolicFontName="org.eclipse.wst.sse.ui.textfont"
@@ -81,18 +81,14 @@
 		</page>
 	</extension>
 
-	<!-- CSS Content Settings Property Page -->
 	<extension point="org.eclipse.ui.propertyPages">
 		<page
 			objectClass="org.eclipse.core.resources.IFile"
 			adaptable="true"
 			name="%WebContentSettings.name"
-			class="org.eclipse.wst.css.ui.internal.contentproperties.ui.CSSWebContentSettingsPropertyPage"
-			id="org.eclipse.wst.css.ui.internal.contentproperties.CSSWebContentSettingsPropertyPage.css">
-			<filter
-				name="contentTypeId"
-				value="org.eclipse.wst.css.core.csssource">
-			</filter>
+			nameFilter="*.css"
+			class="org.eclipse.wst.css.ui.internal.contentproperties.ui.CSSContentSettingsPropertyPage"
+			id="org.eclipse.wst.css.ui.csspropertypage">
 		</page>
 	</extension>
 
@@ -121,7 +117,7 @@
 			name="%_UI_WIZARD_NAME"
 			class="org.eclipse.wst.css.ui.internal.wizard.NewCSSWizard"
 			category="org.eclipse.wst.web.ui"
-			icon="$nl$/icons/full/etool16/newcss_wiz.gif">
+			icon="icons/full/etool16/newcss_wiz.gif">
 			<description>%_UI_WIZARD_CREATE_NEW_FILE</description>
 			<selection class="org.eclipse.core.resources.IResource" />
 		</wizard>
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java
index 7504b6b..c41fe5c 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/StructuredTextViewerConfigurationCSS.java
@@ -21,11 +21,11 @@
 import org.eclipse.wst.css.core.internal.CSSCorePlugin;
 import org.eclipse.wst.css.core.internal.format.FormatProcessorCSS;
 import org.eclipse.wst.css.core.internal.preferences.CSSCorePreferenceNames;
-import org.eclipse.wst.css.core.text.ICSSPartitions;
+import org.eclipse.wst.css.core.internal.provisional.text.ICSSPartitionTypes;
 import org.eclipse.wst.css.ui.internal.autoedit.StructuredAutoEditStrategyCSS;
 import org.eclipse.wst.css.ui.internal.contentassist.CSSContentAssistProcessor;
 import org.eclipse.wst.css.ui.internal.style.LineStyleProviderForCSS;
-import org.eclipse.wst.sse.core.text.IStructuredPartitions;
+import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredPartitionTypes;
 import org.eclipse.wst.sse.ui.StructuredTextViewerConfiguration;
 import org.eclipse.wst.sse.ui.internal.format.StructuredFormattingStrategy;
 import org.eclipse.wst.sse.ui.internal.provisional.style.LineStyleProvider;
@@ -67,7 +67,7 @@
 			allStrategies.add(superStrategies[i]);
 		}
 
-		if (contentType == ICSSPartitions.STYLE) {
+		if (contentType == ICSSPartitionTypes.STYLE) {
 			allStrategies.add(new StructuredAutoEditStrategyCSS());
 		}
 
@@ -76,7 +76,7 @@
 
 	public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
 		if (fConfiguredContentTypes == null) {
-			fConfiguredContentTypes = new String[]{ICSSPartitions.STYLE, IStructuredPartitions.DEFAULT_PARTITION, IStructuredPartitions.UNKNOWN_PARTITION};
+			fConfiguredContentTypes = new String[]{ICSSPartitionTypes.STYLE, IStructuredPartitionTypes.DEFAULT_PARTITION, IStructuredPartitionTypes.UNKNOWN_PARTITION};
 		}
 		return fConfiguredContentTypes;
 	}
@@ -84,7 +84,7 @@
 	protected IContentAssistProcessor[] getContentAssistProcessors(ISourceViewer sourceViewer, String partitionType) {
 		IContentAssistProcessor[] processors = null;
 
-		if ((partitionType == ICSSPartitions.STYLE) || (partitionType == IStructuredPartitions.UNKNOWN_PARTITION)) {
+		if ((partitionType == ICSSPartitionTypes.STYLE) || (partitionType == IStructuredPartitionTypes.UNKNOWN_PARTITION)) {
 			processors = new IContentAssistProcessor[]{new CSSContentAssistProcessor()};
 		}
 
@@ -92,7 +92,7 @@
 	}
 
 	public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) {
-		final MultiPassContentFormatter formatter = new MultiPassContentFormatter(getConfiguredDocumentPartitioning(sourceViewer), ICSSPartitions.STYLE);
+		final MultiPassContentFormatter formatter = new MultiPassContentFormatter(getConfiguredDocumentPartitioning(sourceViewer), ICSSPartitionTypes.STYLE);
 
 		formatter.setMasterStrategy(new StructuredFormattingStrategy(new FormatProcessorCSS()));
 
@@ -145,7 +145,7 @@
 	public LineStyleProvider[] getLineStyleProviders(ISourceViewer sourceViewer, String partitionType) {
 		LineStyleProvider[] providers = null;
 
-		if (partitionType == ICSSPartitions.STYLE) {
+		if (partitionType == ICSSPartitionTypes.STYLE) {
 			providers = new LineStyleProvider[]{getLineStyleProviderForCSS()};
 		}
 
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIMessages.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIMessages.java
index 94cec38..001bcc9 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIMessages.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIMessages.java
@@ -18,22 +18,6 @@
 	private static final String BUNDLE_NAME = "org.eclipse.wst.css.ui.internal.CSSUIPluginResources";//$NON-NLS-1$
 	private static ResourceBundle fResourceBundle;
 
-	static {
-		// load message values from bundle file
-		NLS.initializeMessages(BUNDLE_NAME, CSSUIMessages.class);
-	}
-
-	public static ResourceBundle getResourceBundle() {
-		try {
-			if (fResourceBundle == null)
-				fResourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
-		}
-		catch (MissingResourceException x) {
-			fResourceBundle = null;
-		}
-		return fResourceBundle;
-	}
-	
 	public static String INFO_Not_Categorized_1;
 	public static String PrefsLabel_WrappingWithoutAttr;
 	public static String PrefsLabel_WrappingInsertLineBreak;
@@ -104,7 +88,6 @@
 	public static String StructureSelectPrevious_tooltip;
 	public static String StructureSelectPrevious_description;
 	public static String Creating_files_encoding;
-	public static String ResourceGroup_nameExists;
 	public static String NewCSSTemplatesWizardPage_0;
 	public static String NewCSSTemplatesWizardPage_1;
 	public static String NewCSSTemplatesWizardPage_2;
@@ -112,6 +95,20 @@
 	public static String NewCSSTemplatesWizardPage_4;
 	public static String NewCSSTemplatesWizardPage_5;
 	public static String NewCSSTemplatesWizardPage_6;
-	public static String CSSContentSettingsPropertyPage_0;
-	public static String CSSContentSettingsPropertyPage_1;
+
+	static {
+		// load message values from bundle file
+		NLS.initializeMessages(BUNDLE_NAME, CSSUIMessages.class);
+	}
+
+	public static ResourceBundle getResourceBundle() {
+		try {
+			if (fResourceBundle == null)
+				fResourceBundle = ResourceBundle.getBundle(BUNDLE_NAME);
+		}
+		catch (MissingResourceException x) {
+			fResourceBundle = null;
+		}
+		return fResourceBundle;
+	}
 }
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIPluginResources.properties b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIPluginResources.properties
index 64a1c80..dfa88c5 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIPluginResources.properties
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/CSSUIPluginResources.properties
@@ -55,7 +55,7 @@
 _UI_WIZARD_NEW_TITLE = New Cascading Style Sheet
 _UI_WIZARD_NEW_HEADING = Cascading Style Sheet
 _UI_WIZARD_NEW_DESCRIPTION = Create a new CSS file.
-_ERROR_FILENAME_MUST_END_CSS = The file name must end in one of the following extensions {0}.
+_ERROR_FILENAME_MUST_END_CSS = The file name must end in .css
 #
 Title_InvalidValue=Invalid Value
 Message_InvalidValue=Invalid property value.
@@ -94,7 +94,6 @@
 StructureSelectPrevious_description=Expand selection to include previous sibling
 ##
 Creating_files_encoding=Creating files encoding preference
-ResourceGroup_nameExists = The same name already exists.
 NewCSSTemplatesWizardPage_0=Select CSS Template
 NewCSSTemplatesWizardPage_1=Select a template as initial content in the CSS page.
 NewCSSTemplatesWizardPage_2=Name
@@ -102,6 +101,3 @@
 NewCSSTemplatesWizardPage_4=Use CSS Template
 NewCSSTemplatesWizardPage_5=Preview:
 NewCSSTemplatesWizardPage_6=Templates are 'New CSS' templates found in the <a>CSS Templates</a> preference page.
-# CSS Content Settings
-CSSContentSettingsPropertyPage_0=The type of CSS to use.  The project setting is used if you specify "none."
-CSSContentSettingsPropertyPage_1=CSS Profile:
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentassist/CSSContentAssistProcessor.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentassist/CSSContentAssistProcessor.java
index d434cc0..2d30ad6 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentassist/CSSContentAssistProcessor.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentassist/CSSContentAssistProcessor.java
@@ -19,10 +19,10 @@
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
 import org.eclipse.wst.css.ui.internal.templates.TemplateContextTypeIdsCSS;
 import org.eclipse.wst.html.core.internal.htmlcss.StyleAdapterFactory;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.INodeAdapter;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
 import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.StructuredTextViewer;
 import org.eclipse.wst.sse.ui.internal.contentassist.ContentAssistUtils;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ContentSettingsRegistry.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ContentSettingsRegistry.java
index e12c2c6..c0445fe 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ContentSettingsRegistry.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ContentSettingsRegistry.java
@@ -15,10 +15,6 @@
 import org.eclipse.wst.css.ui.internal.CSSUIMessages;
 import org.eclipse.wst.sse.ui.internal.contentproperties.ui.ComboList;
 
-/**
- * @deprecated This class only contains helper methods that you should
- *             actually implement yourself.
- */
 public final class ContentSettingsRegistry {
 	private static final String NONE = CSSUIMessages.UI_none;
 
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSContentSettingsPropertyPage.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSContentSettingsPropertyPage.java
index 708d063..e83da28 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSContentSettingsPropertyPage.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSContentSettingsPropertyPage.java
@@ -21,9 +21,6 @@
 import org.eclipse.wst.sse.ui.internal.contentproperties.ui.ComboListOnPropertyPage;
 import org.eclipse.wst.sse.ui.internal.contentproperties.ui.ContentSettingsPropertyPage;
 
-/**
- * @deprecated Use CSSWebContentSettingsPropertyPage instead
- */
 public final class CSSContentSettingsPropertyPage extends ContentSettingsPropertyPage {
 
 	private final int N_CSS_PROFILE = 0;
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSWebContentSettingsPropertyPage.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSWebContentSettingsPropertyPage.java
deleted file mode 100644
index 6465fac..0000000
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/contentproperties/ui/CSSWebContentSettingsPropertyPage.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2004 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.wst.css.ui.internal.contentproperties.ui;
-
-
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.PropertyPage;
-import org.eclipse.wst.css.core.internal.contentproperties.CSSContentProperties;
-import org.eclipse.wst.css.core.internal.metamodel.CSSProfile;
-import org.eclipse.wst.css.core.internal.metamodel.CSSProfileRegistry;
-import org.eclipse.wst.css.ui.internal.CSSUIMessages;
-import org.eclipse.wst.css.ui.internal.Logger;
-import org.eclipse.wst.css.ui.internal.editor.IHelpContextIds;
-
-public final class CSSWebContentSettingsPropertyPage extends PropertyPage {
-	private static final String SELECT_NONE = CSSUIMessages.UI_none;
-
-	private Combo fProfileCombo;
-	private List fProfileIds;
-
-	public CSSWebContentSettingsPropertyPage() {
-		super();
-		setDescription(CSSUIMessages.CSSContentSettingsPropertyPage_0);
-	}
-
-	private Composite createComposite(Composite parent, int numColumns) {
-		Composite composite = new Composite(parent, SWT.NULL);
-
-		// GridLayout
-		GridLayout layout = new GridLayout();
-		layout.numColumns = numColumns;
-		composite.setLayout(layout);
-
-		// GridData
-		GridData data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalIndent = 0;
-		composite.setLayoutData(data);
-
-		return composite;
-	}
-
-	protected Control createContents(Composite parent) {
-		Composite propertyPage = createComposite(parent, 2);
-
-		// CSS Profile control
-		Text languageLabel = new Text(propertyPage, SWT.READ_ONLY);
-		languageLabel.setText(CSSUIMessages.CSSContentSettingsPropertyPage_1);
-		fProfileCombo = new Combo(propertyPage, SWT.READ_ONLY);
-		GridData data = new GridData(GridData.FILL, GridData.FILL, true, false);
-		data.horizontalIndent = 0;
-		fProfileCombo.setLayoutData(data);
-
-		populateValues();
-		initializeValues();
-
-		PlatformUI.getWorkbench().getHelpSystem().setHelp(propertyPage, IHelpContextIds.CSS_CONTENT_SETTINGS_HELPID);
-		return propertyPage;
-	}
-
-	/**
-	 * Get the resource this properties page is for
-	 * 
-	 * @return IResource for this properties page or null if there is no
-	 *         IResource
-	 */
-	private IResource getResource() {
-		IResource resource = null;
-		if (getElement() instanceof IResource) {
-			resource = (IResource) getElement();
-		}
-		return resource;
-	}
-
-	private void initializeValues() {
-		int index = 0;
-		String profile = CSSContentProperties.getProperty(CSSContentProperties.CSS_PROFILE, getResource(), false);
-		if (profile != null && profile.length() > 0) {
-			/*
-			 * If item is already part of combo, select it. Otherwise, select
-			 * none.
-			 */
-			index = fProfileIds.indexOf(profile);
-		}
-		index = index >= 0 ? index : 0;
-		fProfileCombo.select(index);
-	}
-
-	private void populateValues() {
-		fProfileIds = new ArrayList();
-		// add none first
-		fProfileCombo.add(SELECT_NONE);
-		fProfileIds.add(null);
-
-		CSSProfileRegistry reg = CSSProfileRegistry.getInstance();
-		Iterator i = reg.getProfiles();
-		while (i.hasNext()) {
-			CSSProfile profile = (CSSProfile) i.next();
-			String id = profile.getProfileID();
-			String name = profile.getProfileName();
-			fProfileCombo.add(name);
-			fProfileIds.add(id);
-		}
-	}
-
-	protected void performDefaults() {
-		int index = fProfileCombo.indexOf(SELECT_NONE);
-		if (index > -1)
-			fProfileCombo.select(index);
-
-		super.performDefaults();
-	}
-
-	public boolean performOk() {
-		int index = fProfileCombo.getSelectionIndex();
-		if (index > -1) {
-			String id = (String) fProfileIds.get(index);
-			if (id == null || id.length() == 0 || id.equalsIgnoreCase(SELECT_NONE)) {
-				// if none, use null
-				id = null;
-			}
-			try {
-				CSSContentProperties.setProperty(CSSContentProperties.CSS_PROFILE, getResource(), id);
-			}
-			catch (CoreException e) {
-				// maybe in future, let user know there was a problem saving
-				// file
-				Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e);
-			}
-		}
-		return super.performOk();
-	}
-}
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/edit/ui/CleanupActionCSSDelegate.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/edit/ui/CleanupActionCSSDelegate.java
index f261af2..859efbc 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/edit/ui/CleanupActionCSSDelegate.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/edit/ui/CleanupActionCSSDelegate.java
@@ -15,9 +15,9 @@
 import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.wst.css.core.internal.cleanup.CleanupProcessorCSS;
 import org.eclipse.wst.css.ui.internal.CSSUIMessages;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.cleanup.IStructuredCleanupProcessor;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.SSEUIMessages;
 
 /**
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSColorPage.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSColorPage.java
index e4f9123..d3df1ab 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSColorPage.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSColorPage.java
@@ -24,8 +24,8 @@
 import org.eclipse.wst.css.ui.internal.CSSUIPlugin;
 import org.eclipse.wst.css.ui.internal.editor.IHelpContextIds;
 import org.eclipse.wst.css.ui.internal.style.IStyleConstantsCSS;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore;
 import org.eclipse.wst.sse.ui.internal.preferences.OverlayPreferenceStore.OverlayKey;
 import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractColorPage;
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSFilesPreferencePage.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSFilesPreferencePage.java
index ab01fe8..36f3e38 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSFilesPreferencePage.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/preferences/ui/CSSFilesPreferencePage.java
@@ -8,15 +8,12 @@
  ****************************************************************************/
 package org.eclipse.wst.css.ui.internal.preferences.ui;
 
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Preferences;
-import org.eclipse.core.runtime.content.IContentType;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.css.core.internal.CSSCorePlugin;
-import org.eclipse.wst.css.core.internal.provisional.contenttype.ContentTypeIdForCSS;
 import org.eclipse.wst.css.ui.internal.CSSUIPlugin;
 import org.eclipse.wst.css.ui.internal.editor.IHelpContextIds;
 import org.eclipse.wst.xml.ui.internal.preferences.XMLFilesPreferencePage;
@@ -39,8 +36,4 @@
 		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IHelpContextIds.CSS_PREFWEBX_FILES_HELPID);
 		return c;
 	}
-
-	protected IContentType getContentType() {
-		return Platform.getContentTypeManager().getContentType(ContentTypeIdForCSS.ContentTypeID_CSS);
-	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/projection/StructuredTextFoldingProviderCSS.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/projection/StructuredTextFoldingProviderCSS.java
index 2c97adb..22e5551 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/projection/StructuredTextFoldingProviderCSS.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/projection/StructuredTextFoldingProviderCSS.java
@@ -6,10 +6,10 @@
 import org.eclipse.jface.text.source.projection.ProjectionViewer;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSDocument;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.model.FactoryRegistry;
 import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.sse.ui.internal.projection.IStructuredTextFoldingProvider;
 
 /**
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/properties/CSSTextPropertyDescriptor.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/properties/CSSTextPropertyDescriptor.java
index ddfbb99..a0deb92 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/properties/CSSTextPropertyDescriptor.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/properties/CSSTextPropertyDescriptor.java
@@ -27,8 +27,8 @@
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSModel;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
 import org.eclipse.wst.css.core.internal.util.CSSPathService;
-import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.core.internal.provisional.StructuredModelManager;
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
 
 /**
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/style/LineStyleProviderForEmbeddedCSS.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/style/LineStyleProviderForEmbeddedCSS.java
index bb903a5..0e52ab1 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/style/LineStyleProviderForEmbeddedCSS.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/style/LineStyleProviderForEmbeddedCSS.java
@@ -54,7 +54,7 @@
 				if (regionStart <= start && start < regionEnd) {
 					TextAttribute attribute = getAttributeFor(token.kind);
 					if (attribute != null) {
-						holdResults.add(new StyleRange(start, token.length, attribute.getForeground(), attribute.getBackground(), attribute.getStyle()));
+						holdResults.add(new StyleRange(start, token.length, attribute.getForeground(), attribute.getBackground()));
 					}
 					else {
 						holdResults.add(new StyleRange(start, token.length, null, null));
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/wizard/NewCSSWizard.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/wizard/NewCSSWizard.java
index e811db6..dad0429 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/wizard/NewCSSWizard.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/internal/wizard/NewCSSWizard.java
@@ -1,14 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 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.wst.css.ui.internal.wizard;
 
 import java.io.ByteArrayInputStream;
@@ -19,11 +8,8 @@
 import java.util.List;
 
 import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Preferences;
 import org.eclipse.core.runtime.content.IContentType;
@@ -31,7 +17,6 @@
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.StructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
@@ -40,7 +25,6 @@
 import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
 import org.eclipse.ui.ide.IDE;
 import org.eclipse.wst.css.core.internal.CSSCorePlugin;
-import org.eclipse.wst.css.core.internal.preferences.CSSCorePreferenceNames;
 import org.eclipse.wst.css.core.internal.provisional.contenttype.ContentTypeIdForCSS;
 import org.eclipse.wst.css.ui.internal.CSSUIMessages;
 import org.eclipse.wst.css.ui.internal.Logger;
@@ -52,107 +36,29 @@
 	private WizardNewFileCreationPage fNewFilePage;
 	private NewCSSTemplatesWizardPage fNewFileTemplatesPage;
 	private IStructuredSelection fSelection;
-	private IContentType fContentType;
 	private List fValidExtensions = null;
 
 	/**
-	 * Adds default extension to the filename
-	 * 
-	 * @param filename
-	 * @return
-	 */
-	String addDefaultExtension(String filename) {
-		StringBuffer newFileName = new StringBuffer(filename);
-
-		Preferences preference = CSSCorePlugin.getDefault().getPluginPreferences();
-		String ext = preference.getString(CSSCorePreferenceNames.DEFAULT_EXTENSION);
-
-		newFileName.append("."); //$NON-NLS-1$
-		newFileName.append(ext);
-
-		return newFileName.toString();
-	}
-
-	/**
-	 * Get content type associated with this new file wizard
-	 * 
-	 * @return IContentType
-	 */
-	IContentType getContentType() {
-		if (fContentType == null)
-			fContentType = Platform.getContentTypeManager().getContentType(ContentTypeIdForCSS.ContentTypeID_CSS);
-		return fContentType;
-	}
-
-	/**
 	 * Get list of valid extensions for CSS Content type
 	 * 
 	 * @return
 	 */
 	List getValidExtensions() {
 		if (fValidExtensions == null) {
-			IContentType type = getContentType();
+			IContentType type = Platform.getContentTypeManager().getContentType(ContentTypeIdForCSS.ContentTypeID_CSS);
 			fValidExtensions = new ArrayList(Arrays.asList(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
 		}
 		return fValidExtensions;
 	}
 	
-	/**
-	 * Verifies if fileName is valid name for content type. Takes base content
-	 * type into consideration.
-	 * 
-	 * @param fileName
-	 * @return true if extension is valid for this content type
-	 */
-	boolean extensionValidForContentType(String fileName) {
-		boolean valid = false;
-
-		IContentType type = getContentType();
-		// there is currently an extension
-		if (fileName.lastIndexOf('.') != -1) {
-			// check what content types are associated with current extension
-			IContentType[] types = Platform.getContentTypeManager().findContentTypesFor(fileName);
-			int i = 0;
-			while (i < types.length && !valid) {
-				valid = types[i].isKindOf(type);
-				++i;
-			}
-		}
-		else
-			valid = true; // no extension so valid
-		return valid;
-	}
-
 	public void addPages() {
 		fNewFilePage = new WizardNewFileCreationPage("CSSWizardNewFileCreationPage", new StructuredSelection(IDE.computeSelectedResources(fSelection))) { //$NON-NLS-1$
 			protected boolean validatePage() {
-				String fileName = getFileName();
-				IPath fullPath = getContainerFullPath();
-				if ((fullPath != null) && (fullPath.isEmpty() == false) && (fileName != null)) {
-					// check that filename does not contain invalid extension
-					if (!extensionValidForContentType(fileName)) {
-						setErrorMessage(NLS.bind(CSSUIMessages._ERROR_FILENAME_MUST_END_CSS, getValidExtensions().toString()));
-						return false;
-					}
-					// no file extension specified so check adding default
-					// extension doesn't equal a file that already exists
-					if (fileName.lastIndexOf('.') == -1) {
-						String newFileName = addDefaultExtension(fileName);
-						IPath resourcePath = fullPath.append(newFileName);
-
-						IWorkspace workspace = ResourcesPlugin.getWorkspace();
-						IStatus result = workspace.validatePath(resourcePath.toString(), IResource.FOLDER);
-						if (!result.isOK()) {
-							// path invalid
-							setErrorMessage(result.getMessage());
-							return false;
-						}
-
-						if ((workspace.getRoot().getFolder(resourcePath).exists() || workspace.getRoot().getFile(resourcePath).exists())) {
-							setErrorMessage(CSSUIMessages.ResourceGroup_nameExists);
-							return false;
-						}
-					}
+				IPath handlePath = new Path(getFileName());
+				String extension = handlePath.getFileExtension();
+				if (extension == null || !extension.equalsIgnoreCase("css")) { //$NON-NLS-1$
+					setErrorMessage(CSSUIMessages._ERROR_FILENAME_MUST_END_CSS); //$NON-NLS-1$
+					return false;
 				}
 				setErrorMessage(null);
 				return super.validatePage();
@@ -162,7 +68,7 @@
 		fNewFilePage.setDescription(CSSUIMessages._UI_WIZARD_NEW_DESCRIPTION); //$NON-NLS-1$
 
 		addPage(fNewFilePage);
-
+		
 		fNewFileTemplatesPage = new NewCSSTemplatesWizardPage();
 		addPage(fNewFileTemplatesPage);
 	}
@@ -191,59 +97,42 @@
 	}
 
 	public boolean performFinish() {
-		boolean performedOK = false;
-
 		// save user options for next use
 		fNewFileTemplatesPage.saveLastSavedPreferences();
-
-		// no file extension specified so add default extension
-		String fileName = fNewFilePage.getFileName();
-		if (fileName.lastIndexOf('.') == -1) {
-			String newFileName = addDefaultExtension(fileName);
-			fNewFilePage.setFileName(newFileName);
-		}
-
-		// create a new empty file
+		
 		IFile file = fNewFilePage.createNewFile();
+		
+		// put template contents into file
+		String templateString = fNewFileTemplatesPage.getTemplateString();
+		if (templateString != null) {
+			// determine the encoding for the new file
+			Preferences preference = CSSCorePlugin.getDefault().getPluginPreferences();
+			String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET);
 
-		// if there was problem with creating file, it will be null, so make
-		// sure to check
-		if (file != null) {
-			// put template contents into file
-			String templateString = fNewFileTemplatesPage.getTemplateString();
-			if (templateString != null) {
-				// determine the encoding for the new file
-				Preferences preference = CSSCorePlugin.getDefault().getPluginPreferences();
-				String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET);
-
-				try {
-					ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-					OutputStreamWriter outputStreamWriter = null;
-					if (charSet == null || charSet.trim().equals("")) { //$NON-NLS-1$
-						// just use default encoding
-						outputStreamWriter = new OutputStreamWriter(outputStream);
-					}
-					else {
-						outputStreamWriter = new OutputStreamWriter(outputStream, charSet);
-					}
-					outputStreamWriter.write(templateString);
-					outputStreamWriter.flush();
-					outputStreamWriter.close();
-					ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
-					file.setContents(inputStream, true, false, null);
-					inputStream.close();
+			try {
+				ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+				OutputStreamWriter outputStreamWriter = null;
+				if (charSet == null || charSet.trim().equals("")) { //$NON-NLS-1$
+					// just use default encoding
+					outputStreamWriter = new OutputStreamWriter(outputStream);
+				} else {
+					outputStreamWriter = new OutputStreamWriter(outputStream, charSet);
 				}
-				catch (Exception e) {
-					Logger.log(Logger.WARNING_DEBUG, "Could not create contents for new CSS file", e); //$NON-NLS-1$
-				}
+				outputStreamWriter.write(templateString);
+				outputStreamWriter.flush();
+				outputStreamWriter.close();
+				ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+				file.setContents(inputStream, true, false, null);
+				inputStream.close();
 			}
-			// open the file in editor
-			openEditor(file);
-
-			// everything's fine
-			performedOK = true;
+			catch (Exception e) {
+				Logger.log(Logger.WARNING_DEBUG, "Could not create contents for new CSS file", e); //$NON-NLS-1$
+			}
 		}
-		return performedOK;
+
+		// open the file in editor
+		openEditor(file);
+		return true;
 	}
 
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeContentProviderCSS.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeContentProviderCSS.java
index 4912dc9..9b51b4e 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeContentProviderCSS.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeContentProviderCSS.java
@@ -21,10 +21,6 @@
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSPrimitiveValue;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleDeclItem;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleDeclaration;
-import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.ui.internal.contentoutline.IJFaceNodeAdapter;
-import org.eclipse.wst.sse.ui.internal.contentoutline.IJFaceNodeAdapterFactory;
 import org.w3c.dom.css.CSSRule;
 import org.w3c.dom.stylesheets.MediaList;
 
@@ -84,7 +80,6 @@
 	public Object[] getChildren(Object object) {
 		if (object instanceof ICSSNode) {
 			ICSSNode node = (ICSSNode) object;
-
 			short nodeType = node.getNodeType();
 			if (nodeType == ICSSNode.STYLERULE_NODE || nodeType == ICSSNode.PAGERULE_NODE || nodeType == ICSSNode.FONTFACERULE_NODE) {
 				for (node = node.getFirstChild(); node != null && !(node instanceof ICSSStyleDeclaration); node.getNextSibling()) {
@@ -97,13 +92,6 @@
 				if (!(child instanceof ICSSPrimitiveValue) && !(child instanceof MediaList)) {
 					children.add(child);
 				}
-				/*
-				 * Required to correctly connect the refreshing behavior to
-				 * the tree
-				 */
-				if (child instanceof INodeNotifier) {
-					((INodeNotifier) child).getAdapterFor(IJFaceNodeAdapter.class);
-				}
 				child = child.getNextSibling();
 			}
 			return children.toArray();
@@ -124,19 +112,7 @@
 			ArrayList v = new ArrayList();
 			// internalGetElements(object, v);
 			addElements(object, v);
-			Object[] elements = v.toArray();
-
-			for (int i = 0; i < elements.length; i++) {
-				/*
-				 * Required to correctly connect the refreshing behavior to
-				 * the tree
-				 */
-				if (elements[i] instanceof INodeNotifier) {
-					((INodeNotifier) elements[i]).getAdapterFor(IJFaceNodeAdapter.class);
-				}
-			}
-
-			return elements;
+			return v.toArray();
 		}
 		return new Object[0];
 
@@ -149,16 +125,15 @@
 	 * requested.
 	 */
 	public Object getParent(Object object) {
+		// IJFaceNodeAdapter adapter = getAdapter(object);
+		/*
+		 * ICSSNodeAdapter adapter = (ICSSNodeAdapter)getAdapter(object); if
+		 * (adapter != null) return adapter.getParent((ICSSNode) object); else
+		 * return null;
+		 */
 		if (object instanceof ICSSNode) {
 			ICSSNode node = ((ICSSNode) object).getParentNode();
 			if (node != null && node.getNodeType() == ICSSNode.STYLEDECLARATION_NODE) {
-				/*
-				 * Required to also correctly connect style declaration to the
-				 * refreshing behavior in the tree
-				 */
-				if (node instanceof INodeNotifier) {
-					((INodeNotifier) node).getAdapterFor(IJFaceNodeAdapter.class);
-				}
 				node = node.getParentNode();
 			}
 			return node;
@@ -173,14 +148,6 @@
 	public boolean hasChildren(Object object) {
 		// return getAdapter(object).hasChildren((ICSSNode) object);
 		if (object instanceof ICSSNode) {
-			/*
-			 * Required to correctly connect the refreshing behavior to the
-			 * tree
-			 */
-			if (object instanceof INodeNotifier) {
-				((INodeNotifier) object).getAdapterFor(IJFaceNodeAdapter.class);
-			}
-
 			if (object instanceof ICSSStyleDeclItem)
 				return false;
 			else
@@ -196,21 +163,6 @@
 	 *      java.lang.Object, java.lang.Object)
 	 */
 	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
-		if (oldInput != null && oldInput instanceof IStructuredModel) {
-			IJFaceNodeAdapterFactory factory = (IJFaceNodeAdapterFactory) ((IStructuredModel) oldInput).getFactoryRegistry().getFactoryFor(IJFaceNodeAdapter.class);
-			if (factory != null) {
-				factory.removeListener(viewer);
-			}
-		}
-		if (newInput != null && newInput instanceof IStructuredModel) {
-			IJFaceNodeAdapterFactory factory = (IJFaceNodeAdapterFactory) ((IStructuredModel) newInput).getFactoryRegistry().getFactoryFor(IJFaceNodeAdapter.class);
-			if (factory != null) {
-				factory.addListener(viewer);
-			}
-			if (newInput instanceof ICSSModel) {
-				((INodeNotifier) ((ICSSModel) newInput).getDocument()).getAdapterFor(IJFaceNodeAdapter.class);
-			}
-		}
 	}
 
 	/**
diff --git a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeLabelProviderCSS.java b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeLabelProviderCSS.java
index 44e5519..f7a45fd 100644
--- a/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeLabelProviderCSS.java
+++ b/bundles/org.eclipse.wst.css.ui/src/org/eclipse/wst/css/ui/views/contentoutline/JFaceNodeLabelProviderCSS.java
@@ -14,6 +14,7 @@
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSMediaRule;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSNode;
+import org.eclipse.wst.css.core.internal.provisional.document.ICSSPageRule;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSPrimitiveValue;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleDeclItem;
 import org.eclipse.wst.css.core.internal.provisional.document.ICSSStyleRule;
@@ -90,7 +91,7 @@
 					}
 					break;
 				case ICSSNode.PAGERULE_NODE :
-					result = "@page";//$NON-NLS-1$
+					result = ((ICSSPageRule) element).getSelectors().getString();
 					break;
 				case ICSSNode.STYLEDECLARATION_NODE :
 					result = "properties";//$NON-NLS-1$
diff --git a/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index ec22a14..0000000
--- a/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue Apr 04 03:37:50 EDT 2006
-eclipse.preferences.version=1
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.jdt.core.prefs
index 6fb224d..50369da 100644
--- a/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,4 @@
-#Tue Apr 04 03:19:49 EDT 2006

+#Sat Oct 01 09:01:07 EDT 2005

 eclipse.preferences.version=1

 org.eclipse.jdt.core.builder.cleanOutputFolder=clean

 org.eclipse.jdt.core.builder.duplicateResourceTask=warning

@@ -17,20 +17,17 @@
 org.eclipse.jdt.core.compiler.doc.comment.support=enabled

 org.eclipse.jdt.core.compiler.maxProblemPerUnit=500

 org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.autoboxing=error

 org.eclipse.jdt.core.compiler.problem.deprecation=warning

 org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled

 org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled

 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning

 org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning

-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning

 org.eclipse.jdt.core.compiler.problem.fieldHiding=warning

 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore

 org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error

 org.eclipse.jdt.core.compiler.problem.forbiddenReference=error

 org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning

 org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning

-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning

 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error

 org.eclipse.jdt.core.compiler.problem.invalidJavadoc=ignore

 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled

@@ -46,12 +43,10 @@
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private

 org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning

 org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error

-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error

+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning

 org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore

-org.eclipse.jdt.core.compiler.problem.nullReference=warning

 org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning

-org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning

-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error

+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning

 org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled

 org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error

 org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning

diff --git a/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.pde.prefs b/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.pde.prefs
index de845b2..c9a18d3 100644
--- a/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.pde.prefs
+++ b/bundles/org.eclipse.wst.dtd.core/.settings/org.eclipse.pde.prefs
@@ -1,5 +1,4 @@
-#Tue Apr 04 01:43:18 EDT 2006

-compilers.p.build=0

+#Fri May 27 23:56:32 EDT 2005

 compilers.p.deprecated=1

 compilers.p.illegal-att-value=0

 compilers.p.no-required-att=0

diff --git a/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF
index 4f0831b..3984f31 100644
--- a/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.wst.dtd.core/META-INF/MANIFEST.MF
@@ -2,32 +2,30 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.dtd.core; singleton:=true
-Bundle-Version: 1.1.0.qualifier
+Bundle-Version: 1.0.1.qualifier
 Bundle-Activator: org.eclipse.wst.dtd.core.internal.DTDCorePlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Export-Package: org.eclipse.wst.dtd.core.internal;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.content;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.contentmodel;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.document;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.emf;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.emf.impl;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.emf.util;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.encoding;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.event;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.modelhandler;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.parser;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.preferences;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.provisional.contenttype;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.provisional.document;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.provisional.text;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.saxparser;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.tasks;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.text;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.tokenizer;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.util;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.internal.validation;x-friends:="org.eclipse.wst.dtd.core,org.eclipse.wst.dtd.ui,org.eclipse.wst.xml.core,org.eclipse.wst.xml.ui,org.eclipse.wst.xsd.core,org.eclipse.wst.xsd.ui",
- org.eclipse.wst.dtd.core.text,
+Export-Package: org.eclipse.wst.dtd.core.internal,
+ org.eclipse.wst.dtd.core.internal.content,
+ org.eclipse.wst.dtd.core.internal.contentmodel,
+ org.eclipse.wst.dtd.core.internal.document,
+ org.eclipse.wst.dtd.core.internal.emf,
+ org.eclipse.wst.dtd.core.internal.emf.impl,
+ org.eclipse.wst.dtd.core.internal.emf.util,
+ org.eclipse.wst.dtd.core.internal.encoding,
+ org.eclipse.wst.dtd.core.internal.event,
+ org.eclipse.wst.dtd.core.internal.modelhandler,
+ org.eclipse.wst.dtd.core.internal.parser,
+ org.eclipse.wst.dtd.core.internal.provisional.contenttype,
+ org.eclipse.wst.dtd.core.internal.provisional.document,
+ org.eclipse.wst.dtd.core.internal.provisional.text,
+ org.eclipse.wst.dtd.core.internal.saxparser,
+ org.eclipse.wst.dtd.core.internal.tasks,
+ org.eclipse.wst.dtd.core.internal.text,
+ org.eclipse.wst.dtd.core.internal.tokenizer,
+ org.eclipse.wst.dtd.core.internal.util,
+ org.eclipse.wst.dtd.core.internal.validation,
  rose
 Require-Bundle: org.eclipse.core.resources,
  org.eclipse.core.runtime,
@@ -37,6 +35,5 @@
  org.eclipse.wst.common.uriresolver,
  org.eclipse.wst.sse.core,
  org.eclipse.wst.xml.core,
- com.ibm.icu,
  org.eclipse.wst.validation
-Eclipse-LazyStart: true
+Eclipse-AutoStart: true
diff --git a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDInternalEntityImpl.java b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDInternalEntityImpl.java
index 0d200db..a825514 100644
--- a/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDInternalEntityImpl.java
+++ b/bundles/org.eclipse.wst.dtd.core/emfmodel/org/eclipse/wst/dtd/core/internal/emf/impl/DTDInternalEntityImpl.java
@@ -12,7 +12,7 @@
 package org.eclipse.wst.dtd.core.internal.emf.impl;
 
 import java.text.CharacterIterator;
-import com.ibm.icu.text.StringCharacterIterator;
+import java.text.StringCharacterIterator;
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
diff --git a/bundles/org.eclipse.wst.dtd.core/plugin.properties b/bundles/org.eclipse.wst.dtd.core/plugin.properties
index 5b557d4..50405a6 100644
--- a/bundles/org.eclipse.wst.dtd.core/plugin.properties
+++ b/bundles/org.eclipse.wst.dtd.core/plugin.properties
@@ -13,7 +13,7 @@
 
 providerName=Eclipse.org
 pluginName=Structured Source DTD Core
+nlFeatureName=Structured Source DTD Core NL Support
 #
 Structured_DTD_Document_Factory_Extension.name=Structured DTD Document Factory Extension
-DTD_Content_Type_Extension_Element.name=DTD
-_DTD_VALIDATOR_NAME               = DTD Validator
+DTD_Content_Type_Extension_Element.name=DTD
\ No newline at end of file
diff --git a/bundles/org.eclipse.wst.dtd.core/plugin.xml b/bundles/org.eclipse.wst.dtd.core/plugin.xml
index 3fb0ea4..cc6c541 100644
--- a/bundles/org.eclipse.wst.dtd.core/plugin.xml
+++ b/bundles/org.eclipse.wst.dtd.core/plugin.xml
@@ -79,53 +79,4 @@
 		</factory>
 	</extension>
 
-	<!-- initialize dtd core preferences -->
-	<extension point="org.eclipse.core.runtime.preferences">
-		<initializer
-			class="org.eclipse.wst.dtd.core.internal.preferences.DTDCorePreferenceInitializer" />
-	</extension>
-	
-	<!-- ====================================================== -->
-	<!-- Register the DTD validator with the validation 		-->
-	<!-- framework. 										    -->
-	<!-- ====================================================== -->
-	<extension
-		id="dtdDTDValidator"
-		name="%_DTD_VALIDATOR_NAME"
-		point="org.eclipse.wst.validation.validator">
-		<validator>
-			<filter
-				objectClass="org.eclipse.core.resources.IFile"
-				caseSensitive="false"
-				nameFilter="*.dtd">
-			</filter>
-			<helper
-				class="org.eclipse.wst.xml.core.internal.validation.core.Helper">
-			</helper>
-			<run
-         async="true"
-         class="org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator"
-         enabled="true"
-         fullBuild="true"
-         incremental="true">
-			</run>
-		</validator>
-	</extension>
-
-	<!-- ====================================================== -->
-	<!-- DTD as you type validation								-->
-	<!-- ====================================================== -->
-	<extension point="org.eclipse.wst.sse.ui.sourcevalidation">
-		<validator
-			scope="total"
-			class="org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator"
-			id="org.eclipse.wst.dtd.dtdsourcevalidator">
-			<contentTypeIdentifier
-				id="org.eclipse.wst.dtd.core.dtdsource">
-				<partitionType id="org.eclipse.wst.dtd.DEFAULT">
-				</partitionType>
-			</contentTypeIdentifier>
-		</validator>
-	</extension>
-	
 </plugin>
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java
index 288496e..a143120 100644
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java
+++ b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationMessages.java
@@ -28,7 +28,6 @@
 	public static String Missing_required_files_2;
 	public static String Missing_required_files_3;
 	public static String Missing_required_files_4;
-	public static String MESSAGE_DTD_VALIDATION_MESSAGE_UI_;
 
 	static {
 		// load message values from bundle file
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties
index 511b713..1986a3c 100644
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties
+++ b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidationResources.properties
@@ -25,5 +25,3 @@
 Missing_required_files_2=Download Xerces 2.6.2 and place xercesImpl.jar and xmlParserAPIs.jar in a folder entitled jars in the org.eclipse.wst.xml.validation plugin.\n\n
 Missing_required_files_3=For more information see www.eclipse.org/webtools/wst/components/xml/xercesInfo.xml.
 Missing_required_files_4=Missing Xerces
-
-MESSAGE_DTD_VALIDATION_MESSAGE_UI_=DTD Validator validating {0}
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java
deleted file mode 100644
index c7f5b00..0000000
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/DTDValidator.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2004 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.wst.dtd.core.internal.validation;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.StringTokenizer;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
-import org.eclipse.wst.xml.core.internal.validation.core.LazyURLInputStream;
-import org.eclipse.wst.xml.core.internal.validation.core.ValidationInfo;
-import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.DeclHandler;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * DTD validation.
- */
-public class DTDValidator {
-	/**
-	 * An entity resolver that wraps a URI resolver.
-	 */
-	class DTDEntityResolver implements EntityResolver {
-		private String fBaseLocation = null;
-		private URIResolver fURIResolver = null;
-
-		/**
-		 * Constructor.
-		 * 
-		 * @param idresolver
-		 *            The idresolver this entity resolver wraps.
-		 * @param baselocation
-		 *            The base location to resolve with.
-		 */
-		public DTDEntityResolver(URIResolver uriresolver, String baselocation) {
-			this.fURIResolver = uriresolver;
-            
-            // TODO cs: we never seem to set a URIResolver
-            // I create one here up front just incase
-            //
-            if (fURIResolver == null)
-            {
-              fURIResolver = URIResolverPlugin.createResolver();              
-            }  
-			this.fBaseLocation = baselocation;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
-		 *      java.lang.String)
-		 */
-		public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
-			String location = null;
-            
-            
-			if (fBaseLocation.equals(systemId)) {
-				location = systemId;
-			}
-			else {
-				location = fURIResolver.resolve(fBaseLocation, publicId, systemId);
-			}
-			InputSource is = null;
-			if (location != null && !location.equals("")) //$NON-NLS-1$
-			{
-			  // CS : while working on bug 113537 I noticed we're not using the LazyURLInputStream
-		      // so fixed this to avoid leaking file handles
-			  //
-              String physical = fURIResolver.resolvePhysicalLocation(fBaseLocation, publicId, location); 
-			  is = new InputSource(location);
-			  is.setByteStream(new LazyURLInputStream(physical));
-			}
-			return is;
-		}
-	}
-
-	/**
-	 * An error handler for DTD validation.
-	 * 
-	 * @author Lawrence Mandel, IBM
-	 */
-	class DTDErrorHandler implements ErrorHandler {
-
-		private final int ERROR = 0;
-		private final ValidationInfo fValidationInfo;
-
-		private final int WARNING = 1;
-
-		/**
-		 * Constructor.
-		 * 
-		 * @param valinfo
-		 *            The validation info object to use to register validation
-		 *            messages.
-		 */
-		public DTDErrorHandler(ValidationInfo valinfo) {
-			this.fValidationInfo = valinfo;
-		}
-
-		/**
-		 * Add a validation message with the given severity.
-		 * 
-		 * @param exception
-		 *            The exception that contains the information about the
-		 *            message.
-		 * @param severity
-		 *            The severity of the validation message.
-		 */
-		protected void addValidationMessage(SAXParseException exception, int severity) {
-			if (exception.getSystemId() != null) {
-				if (severity == WARNING) {
-					fValidationInfo.addWarning(exception.getLocalizedMessage(), exception.getLineNumber(), exception.getColumnNumber(), exception.getSystemId());
-				}
-				else {
-					fValidationInfo.addError(exception.getLocalizedMessage(), exception.getLineNumber(), exception.getColumnNumber(), exception.getSystemId());
-				}
-			}
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
-		 */
-		public void error(SAXParseException exception) throws SAXException {
-			addValidationMessage(exception, ERROR);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
-		 */
-		public void fatalError(SAXParseException exception) throws SAXException {
-			addValidationMessage(exception, ERROR);
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
-		 */
-		public void warning(SAXParseException exception) throws SAXException {
-			addValidationMessage(exception, WARNING);
-		}
-	}
-
-	class MultiHandler extends DefaultHandler implements org.xml.sax.DTDHandler, ContentHandler, LexicalHandler, DeclHandler {
-		private static final String ELEMENT_MODIFIERS = "*+?"; //$NON-NLS-1$
-
-		private static final String MODEL_DELIMITERS = ",()| "; //$NON-NLS-1$
-
-		private List fElemDecls = new ArrayList();
-
-		private Hashtable fElemRefs = new Hashtable();
-
-		private List fIgnoreElemModel = new ArrayList();
-
-		private List fIgnoreElemRefs = new ArrayList();
-
-		private Locator fLocator = null;
-
-		public MultiHandler() {
-			fIgnoreElemRefs.add("#PCDATA"); //$NON-NLS-1$
-			fIgnoreElemModel.add("ANY"); //$NON-NLS-1$
-			fIgnoreElemModel.add("EMPTY"); //$NON-NLS-1$
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.DeclHandler#attributeDecl(java.lang.String,
-		 *      java.lang.String, java.lang.String, java.lang.String,
-		 *      java.lang.String)
-		 */
-		public void attributeDecl(String eName, String aName, String type, String valueDefault, String value) throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int)
-		 */
-		public void comment(char[] arg0, int arg1, int arg2) throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.DeclHandler#elementDecl(java.lang.String,
-		 *      java.lang.String)
-		 */
-		public void elementDecl(String name, String model) throws SAXException {
-			// Add this element to the list of declared elements.
-			fElemDecls.add(name);
-
-			// Return if the element model should be ignored. The model should
-			// be
-			// ignored in such cases as when it is equal to EMPTY or ANY.
-			if (fIgnoreElemModel.contains(model)) {
-				return;
-			}
-			// Add each referenced element to the list of referenced elements
-			int line = fLocator.getLineNumber();
-			int column = fLocator.getColumnNumber();
-			String uri = fLocator.getSystemId();
-
-			StringTokenizer strtok = new StringTokenizer(model, MODEL_DELIMITERS);
-			while (strtok.hasMoreTokens()) {
-				String token = strtok.nextToken();
-				int tokenlength = token.length();
-				if (ELEMENT_MODIFIERS.indexOf(token.charAt(tokenlength - 1)) != -1) {
-					token = token.substring(0, tokenlength - 1);
-					// If the token is now empty (it was only ?,* or +) then
-					// continue.
-					if (token.length() == 0) {
-						continue;
-					}
-				}
-				if (fIgnoreElemRefs.contains(token)) {
-					continue;
-				}
-				ElementRefLocation elemLoc = (ElementRefLocation) fElemRefs.get(token);
-				ElementRefLocation tokenLoc = new ElementRefLocation(line, column, uri, elemLoc);
-				fElemRefs.put(token, tokenLoc);
-			}
-
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#endCDATA()
-		 */
-		public void endCDATA() throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#endDTD()
-		 */
-		public void endDTD() throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#endEntity(java.lang.String)
-		 */
-		public void endEntity(String arg0) throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.DeclHandler#externalEntityDecl(java.lang.String,
-		 *      java.lang.String, java.lang.String)
-		 */
-		public void externalEntityDecl(String name, String publicId, String systemId) throws SAXException {
-			// No method impl.
-		}
-
-		/**
-		 * Get the list of element declarations.
-		 * 
-		 * @return The list of element declarations.
-		 */
-		public List getElementDeclarations() {
-			return fElemDecls;
-		}
-
-		/**
-		 * Get the element references hashtable.
-		 * 
-		 * @return The element references hashtable.
-		 */
-		public Hashtable getElementReferences() {
-			return fElemRefs;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.DeclHandler#internalEntityDecl(java.lang.String,
-		 *      java.lang.String)
-		 */
-		public void internalEntityDecl(String name, String value) throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
-		 */
-		public void setDocumentLocator(Locator locator) {
-			super.setDocumentLocator(locator);
-			this.fLocator = locator;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#startCDATA()
-		 */
-		public void startCDATA() throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String,
-		 *      java.lang.String, java.lang.String)
-		 */
-		public void startDTD(String name, String publicId, String systemId) throws SAXException {
-			// No method impl.
-		}
-
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.xml.sax.ext.LexicalHandler#startEntity(java.lang.String)
-		 */
-		public void startEntity(String name) throws SAXException {
-			// No method impl.
-		}
-	}
-
-	
-
-	private URIResolver fResolver = null;
-
-	public DTDValidator() {
-		super();
-	}
-
-	/**
-	 * Set the URI resolver to use with XSD validation.
-	 * 
-	 * @param uriresolver
-	 *            The URI resolver to use.
-	 */
-	public void setURIResolver(URIResolver uriresolver) {
-		this.fResolver = uriresolver;
-	}
-
-	/**
-	 * Validate the DTD file located at the URI.
-	 * 
-	 * @param uri
-	 *            The URI of the file to validate.
-	 * @return A validation report for the validation.
-	 */
-	public ValidationReport validate(String uri) {
-		ValidationInfo valinfo = new ValidationInfo(uri);
-		try {
-			SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
-			XMLReader reader = parser.getXMLReader();
-			MultiHandler dtdHandler = new MultiHandler();
-			reader.setProperty("http://xml.org/sax/properties/declaration-handler", dtdHandler); //$NON-NLS-1$
-			reader.setProperty("http://xml.org/sax/properties/lexical-handler", dtdHandler); //$NON-NLS-1$
-			reader.setContentHandler(dtdHandler);
-			reader.setDTDHandler(dtdHandler);
-			reader.setErrorHandler(new DTDErrorHandler(valinfo));
-			reader.setEntityResolver(new DTDEntityResolver(fResolver, uri));
-			String document = "<!DOCTYPE root SYSTEM \"" + uri + "\"><root/>"; //$NON-NLS-1$ //$NON-NLS-2$
-
-			reader.parse(new InputSource(new StringReader(document)));
-
-			List elemDecls = dtdHandler.getElementDeclarations();
-			Hashtable elemRefs = dtdHandler.getElementReferences();
-			validateElementReferences(elemDecls, elemRefs, valinfo);
-		}
-		catch (ParserConfigurationException e) {
-
-		}
-		catch (IOException e) {
-
-		}
-		catch (SAXException e) {
-
-		}
-		return valinfo;
-	}
-
-	/**
-	 * Validate the element references in the DTD. An element reference is
-	 * <!ELEMENT elem (elementReference)>
-	 * 
-	 * @param elemDecls
-	 *            A list of valid element declarations.
-	 * @param elemRefs
-	 *            A hashtable containing element references as keys and
-	 *            locations in the document as values.
-	 * @param valinfo
-	 *            The validation info object to store validation information.
-	 */
-	private void validateElementReferences(List elemDecls, Hashtable elemRefs, ValidationInfo valinfo) {
-		Enumeration keys = elemRefs.keys();
-		while (keys.hasMoreElements()) {
-			String elemRef = (String) keys.nextElement();
-			// If the element hasn't been declared create an error.
-			if (!elemDecls.contains(elemRef)) {
-				ElementRefLocation elemLoc = (ElementRefLocation) elemRefs.get(elemRef);
-				do {
-					valinfo.addError(NLS.bind(DTDValidationMessages._ERROR_REF_ELEMENT_UNDEFINED, "'" + elemRef + "'"), elemLoc.getLine(), elemLoc.getColumn(), elemLoc.getURI()); //$NON-NLS-1$ //$NON-NLS-2$
-					elemLoc = elemLoc.getNext();
-				}
-				while (elemLoc != null);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/Validator.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/Validator.java
new file mode 100644
index 0000000..289b46c
--- /dev/null
+++ b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/Validator.java
@@ -0,0 +1,460 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2004 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.wst.dtd.core.internal.validation;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolver;
+import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
+import org.eclipse.wst.xml.core.internal.validation.core.LazyURLInputStream;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationInfo;
+import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.ext.DeclHandler;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * DTD validation.
+ * 
+ * @author Lawrence Mandel, IBM
+ */
+public class Validator {
+	/**
+	 * An entity resolver that wraps a URI resolver.
+	 * 
+	 * @author Lawrence Mandel, IBM
+	 */
+	class DTDEntityResolver implements EntityResolver {
+		private String fBaseLocation = null;
+		private URIResolver fURIResolver = null;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param idresolver
+		 *            The idresolver this entity resolver wraps.
+		 * @param baselocation
+		 *            The base location to resolve with.
+		 */
+		public DTDEntityResolver(URIResolver uriresolver, String baselocation) {
+			this.fURIResolver = uriresolver;
+            
+            // TODO cs: we never seem to set a URIResolver
+            // I create one here up front just incase
+            //
+            if (fURIResolver == null)
+            {
+              fURIResolver = URIResolverPlugin.createResolver();              
+            }  
+			this.fBaseLocation = baselocation;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.EntityResolver#resolveEntity(java.lang.String,
+		 *      java.lang.String)
+		 */
+		public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException {
+			String location = null;
+            
+            
+			if (fBaseLocation.equals(systemId)) {
+				location = systemId;
+			}
+			else {
+				location = fURIResolver.resolve(fBaseLocation, publicId, systemId);
+			}
+			InputSource is = null;
+			if (location != null && !location.equals("")) //$NON-NLS-1$
+			{
+			  // CS : while working on bug 113537 I noticed we're not using the LazyURLInputStream
+		      // so fixed this to avoid leaking file handles
+			  //
+              String physical = fURIResolver.resolvePhysicalLocation(fBaseLocation, publicId, location); 
+			  is = new InputSource(location);
+			  is.setByteStream(new LazyURLInputStream(physical));
+			}
+			return is;
+		}
+	}
+
+	/**
+	 * An error handler for DTD validation.
+	 * 
+	 * @author Lawrence Mandel, IBM
+	 */
+	class DTDErrorHandler implements ErrorHandler {
+
+		private final int ERROR = 0;
+		private final ValidationInfo fValidationInfo;
+
+		private final int WARNING = 1;
+
+		/**
+		 * Constructor.
+		 * 
+		 * @param valinfo
+		 *            The validation info object to use to register validation
+		 *            messages.
+		 */
+		public DTDErrorHandler(ValidationInfo valinfo) {
+			this.fValidationInfo = valinfo;
+		}
+
+		/**
+		 * Add a validation message with the given severity.
+		 * 
+		 * @param exception
+		 *            The exception that contains the information about the
+		 *            message.
+		 * @param severity
+		 *            The severity of the validation message.
+		 */
+		protected void addValidationMessage(SAXParseException exception, int severity) {
+			if (exception.getSystemId() != null) {
+				if (severity == WARNING) {
+					fValidationInfo.addWarning(exception.getLocalizedMessage(), exception.getLineNumber(), exception.getColumnNumber(), exception.getSystemId());
+				}
+				else {
+					fValidationInfo.addError(exception.getLocalizedMessage(), exception.getLineNumber(), exception.getColumnNumber(), exception.getSystemId());
+				}
+			}
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
+		 */
+		public void error(SAXParseException exception) throws SAXException {
+			addValidationMessage(exception, ERROR);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
+		 */
+		public void fatalError(SAXParseException exception) throws SAXException {
+			addValidationMessage(exception, ERROR);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ErrorHandler#warning(org.xml.sax.SAXParseException)
+		 */
+		public void warning(SAXParseException exception) throws SAXException {
+			addValidationMessage(exception, WARNING);
+		}
+	}
+
+	class MultiHandler extends DefaultHandler implements org.xml.sax.DTDHandler, ContentHandler, LexicalHandler, DeclHandler {
+		private static final String ELEMENT_MODIFIERS = "*+?"; //$NON-NLS-1$
+
+		private static final String MODEL_DELIMITERS = ",()| "; //$NON-NLS-1$
+
+		private List fElemDecls = new ArrayList();
+
+		private Hashtable fElemRefs = new Hashtable();
+
+		private List fIgnoreElemModel = new ArrayList();
+
+		private List fIgnoreElemRefs = new ArrayList();
+
+		private Locator fLocator = null;
+
+		public MultiHandler() {
+			fIgnoreElemRefs.add("#PCDATA"); //$NON-NLS-1$
+			fIgnoreElemModel.add("ANY"); //$NON-NLS-1$
+			fIgnoreElemModel.add("EMPTY"); //$NON-NLS-1$
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.DeclHandler#attributeDecl(java.lang.String,
+		 *      java.lang.String, java.lang.String, java.lang.String,
+		 *      java.lang.String)
+		 */
+		public void attributeDecl(String eName, String aName, String type, String valueDefault, String value) throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#comment(char[], int, int)
+		 */
+		public void comment(char[] arg0, int arg1, int arg2) throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.DeclHandler#elementDecl(java.lang.String,
+		 *      java.lang.String)
+		 */
+		public void elementDecl(String name, String model) throws SAXException {
+			// Add this element to the list of declared elements.
+			fElemDecls.add(name);
+
+			// Return if the element model should be ignored. The model should
+			// be
+			// ignored in such cases as when it is equal to EMPTY or ANY.
+			if (fIgnoreElemModel.contains(model)) {
+				return;
+			}
+			// Add each referenced element to the list of referenced elements
+			int line = fLocator.getLineNumber();
+			int column = fLocator.getColumnNumber();
+			String uri = fLocator.getSystemId();
+
+			StringTokenizer strtok = new StringTokenizer(model, MODEL_DELIMITERS);
+			while (strtok.hasMoreTokens()) {
+				String token = strtok.nextToken();
+				int tokenlength = token.length();
+				if (ELEMENT_MODIFIERS.indexOf(token.charAt(tokenlength - 1)) != -1) {
+					token = token.substring(0, tokenlength - 1);
+					// If the token is now empty (it was only ?,* or +) then
+					// continue.
+					if (token.length() == 0) {
+						continue;
+					}
+				}
+				if (fIgnoreElemRefs.contains(token)) {
+					continue;
+				}
+				ElementRefLocation elemLoc = (ElementRefLocation) fElemRefs.get(token);
+				ElementRefLocation tokenLoc = new ElementRefLocation(line, column, uri, elemLoc);
+				fElemRefs.put(token, tokenLoc);
+			}
+
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#endCDATA()
+		 */
+		public void endCDATA() throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#endDTD()
+		 */
+		public void endDTD() throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#endEntity(java.lang.String)
+		 */
+		public void endEntity(String arg0) throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.DeclHandler#externalEntityDecl(java.lang.String,
+		 *      java.lang.String, java.lang.String)
+		 */
+		public void externalEntityDecl(String name, String publicId, String systemId) throws SAXException {
+			// No method impl.
+		}
+
+		/**
+		 * Get the list of element declarations.
+		 * 
+		 * @return The list of element declarations.
+		 */
+		public List getElementDeclarations() {
+			return fElemDecls;
+		}
+
+		/**
+		 * Get the element references hashtable.
+		 * 
+		 * @return The element references hashtable.
+		 */
+		public Hashtable getElementReferences() {
+			return fElemRefs;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.DeclHandler#internalEntityDecl(java.lang.String,
+		 *      java.lang.String)
+		 */
+		public void internalEntityDecl(String name, String value) throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
+		 */
+		public void setDocumentLocator(Locator locator) {
+			super.setDocumentLocator(locator);
+			this.fLocator = locator;
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#startCDATA()
+		 */
+		public void startCDATA() throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#startDTD(java.lang.String,
+		 *      java.lang.String, java.lang.String)
+		 */
+		public void startDTD(String name, String publicId, String systemId) throws SAXException {
+			// No method impl.
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see org.xml.sax.ext.LexicalHandler#startEntity(java.lang.String)
+		 */
+		public void startEntity(String name) throws SAXException {
+			// No method impl.
+		}
+	}
+
+	private static Validator _instance = null;
+
+	public static Validator getInstance() {
+		if (_instance == null) {
+			_instance = new Validator();
+		}
+		return _instance;
+	}
+
+	private URIResolver fResolver = null;
+
+	private Validator() {
+		super();
+	}
+
+	/**
+	 * Set the URI resolver to use with XSD validation.
+	 * 
+	 * @param uriresolver
+	 *            The URI resolver to use.
+	 */
+	public void setURIResolver(URIResolver uriresolver) {
+		this.fResolver = uriresolver;
+	}
+
+	/**
+	 * Validate the DTD file located at the URI.
+	 * 
+	 * @param uri
+	 *            The URI of the file to validate.
+	 * @return A validation report for the validation.
+	 */
+	public ValidationReport validate(String uri) {
+		ValidationInfo valinfo = new ValidationInfo(uri);
+		try {
+			SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
+			XMLReader reader = parser.getXMLReader();
+			MultiHandler dtdHandler = new MultiHandler();
+			reader.setProperty("http://xml.org/sax/properties/declaration-handler", dtdHandler); //$NON-NLS-1$
+			reader.setProperty("http://xml.org/sax/properties/lexical-handler", dtdHandler); //$NON-NLS-1$
+			reader.setContentHandler(dtdHandler);
+			reader.setDTDHandler(dtdHandler);
+			reader.setErrorHandler(new DTDErrorHandler(valinfo));
+			reader.setEntityResolver(new DTDEntityResolver(fResolver, uri));
+			String document = "<!DOCTYPE root SYSTEM \"" + uri + "\"><root/>"; //$NON-NLS-1$ //$NON-NLS-2$
+
+			reader.parse(new InputSource(new StringReader(document)));
+
+			List elemDecls = dtdHandler.getElementDeclarations();
+			Hashtable elemRefs = dtdHandler.getElementReferences();
+			validateElementReferences(elemDecls, elemRefs, valinfo);
+		}
+		catch (ParserConfigurationException e) {
+
+		}
+		catch (IOException e) {
+
+		}
+		catch (SAXException e) {
+
+		}
+		return valinfo;
+	}
+
+	/**
+	 * Validate the element references in the DTD. An element reference is
+	 * <!ELEMENT elem (elementReference)>
+	 * 
+	 * @param elemDecls
+	 *            A list of valid element declarations.
+	 * @param elemRefs
+	 *            A hashtable containing element references as keys and
+	 *            locations in the document as values.
+	 * @param valinfo
+	 *            The validation info object to store validation information.
+	 */
+	private void validateElementReferences(List elemDecls, Hashtable elemRefs, ValidationInfo valinfo) {
+		Enumeration keys = elemRefs.keys();
+		while (keys.hasMoreElements()) {
+			String elemRef = (String) keys.nextElement();
+			// If the element hasn't been declared create an error.
+			if (!elemDecls.contains(elemRef)) {
+				ElementRefLocation elemLoc = (ElementRefLocation) elemRefs.get(elemRef);
+				do {
+					valinfo.addError(NLS.bind(DTDValidationMessages._ERROR_REF_ELEMENT_UNDEFINED, "'" + elemRef + "'"), elemLoc.getLine(), elemLoc.getColumn(), elemLoc.getURI()); //$NON-NLS-1$ //$NON-NLS-2$
+					elemLoc = elemLoc.getNext();
+				}
+				while (elemLoc != null);
+			}
+		}
+	}
+}
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/eclipse/DTDValidator.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/eclipse/DTDValidator.java
deleted file mode 100644
index 9c44a64..0000000
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/eclipse/DTDValidator.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 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.wst.dtd.core.internal.validation.eclipse;
-
-import org.eclipse.wst.common.uriresolver.internal.provisional.URIResolverPlugin;
-
-/**
- * An DTD validator specific to Eclipse. This validator will wrap the internal
- * DTD validator to provide automatic URI resolution support.
- * Using this class is equivalent to using the internal DTD validator and registering
- * the URI resolver from the URI resolution framework.
- */
-public class DTDValidator extends
-		org.eclipse.wst.dtd.core.internal.validation.DTDValidator 
-{
-  private static DTDValidator _instance = null;
-  
-  /**
-   * Constructor. Registers URI resolution framework with the DTD validator.
-   */
-  protected DTDValidator()
-  {
-	super();
-	setURIResolver(URIResolverPlugin.createResolver());
-  }
-
-  /**
-   * Get the one and only instance of the Eclipse specific DTD validator.
-   * 
-   * @return
-   * 		The one and only instance of the Eclipse specific DTD validator.
-   */
-  public static DTDValidator getInstance() 
-  {
-	if (_instance == null) 
-	{
-	  _instance = new DTDValidator();
-	}
-	return _instance;
-  }
-
-}
diff --git a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/eclipse/Validator.java b/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/eclipse/Validator.java
deleted file mode 100644
index 8997b4c..0000000
--- a/bundles/org.eclipse.wst.dtd.core/src-validation/org/eclipse/wst/dtd/core/internal/validation/eclipse/Validator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2001, 2006 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.wst.dtd.core.internal.validation.eclipse;
-
-import java.io.InputStream;
-
-import org.eclipse.wst.dtd.core.internal.validation.DTDValidationMessages;
-import org.eclipse.wst.xml.core.internal.validation.core.AbstractNestedValidator;
-import org.eclipse.wst.xml.core.internal.validation.core.NestedValidatorContext;
-import org.eclipse.wst.xml.core.internal.validation.core.ValidationReport;
-
-/**
- * DTD validator that is contributed to the validation framework.
- */
-public class Validator extends AbstractNestedValidator 
-{
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.xml.core.internal.validation.core.AbstractNestedValidator#getValidatorName()
-   */
-  protected String getValidatorName() 
-  {
-	return DTDValidationMessages.MESSAGE_DTD_VALIDATION_MESSAGE_UI_;
-  }
-
-  /* (non-Javadoc)
-   * @see org.eclipse.wst.xml.core.internal.validation.core.AbstractNestedValidator#validate(java.lang.String, java.io.InputStream, org.eclipse.wst.xml.core.internal.validation.core.NestedValidatorContext)
-   */
-  public ValidationReport validate(String uri, InputStream inputstream, NestedValidatorContext context) 
-  {
-	DTDValidator validator = DTDValidator.getInstance();
-
-	ValidationReport valreport = null;
-	valreport = validator.validate(uri);
-	
-	return valreport;
-  }
-
-}
diff --git