backout of changes
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/build.properties b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/build.properties
index 355f285..75cde60 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/build.properties
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/build.properties
@@ -1,11 +1,12 @@
-# <copyright>
-# </copyright>
-#
-# $Id: build.properties,v 1.4 2008/11/05 21:08:03 dacarver Exp $
-
-bin.includes = .,\
+bin.includes = plugin.properties,\
                META-INF/,\
-               plugin.properties
-jars.compile.order = .
-output.. = bin/
+               .,\
+               lib/,\
+               lib/flute.jar,\
+               bin/
+src.includes = lib/,\
+               src/
 source.. = src/
+jars.compile.order = .
+bin.excludes = lib/.cvsignore
+src.excludes = lib/.cvsignore
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/plugin.properties b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/plugin.properties
index 43f2c71..8a7bbd6 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/plugin.properties
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/plugin.properties
@@ -1,2 +1,2 @@
-providerName=Eclipse.org
-pluginName = Vexdocument Model
+plugin.name=Vex Toolkit
+providerName=Eclipse.org
\ No newline at end of file
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/VEXCorePlugin.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/VEXCorePlugin.java
index bf2ee26..d84b61f 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/VEXCorePlugin.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/VEXCorePlugin.java
@@ -11,10 +11,10 @@
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal;
 
-import org.eclipse.core.runtime.Plugin;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
 
-public class VEXCorePlugin extends Plugin {
+public class VEXCorePlugin extends AbstractUIPlugin {
 
 	private static VEXCorePlugin instance;
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/PseudoElement.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/PseudoElement.java
index 2f3a447..fa6fd79 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/PseudoElement.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/PseudoElement.java
@@ -11,7 +11,7 @@
 package org.eclipse.wst.xml.vex.core.internal.css;
 
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Represents a :before or :after pseudo-element.
@@ -29,7 +29,7 @@
 	 * @param name
 	 *            Name of this pseudo-element, e.g. PseudoElement.BEFORE.
 	 */
-	public PseudoElement(VEXElement parent, String name) {
+	public PseudoElement(IVEXElement parent, String name) {
 		super(name);
 		this.setParent(parent);
 	}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/Rule.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/Rule.java
index a5a599f..81fb739 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/Rule.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/Rule.java
@@ -18,7 +18,7 @@
 import java.util.List;
 import java.util.StringTokenizer;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 import org.w3c.css.sac.AttributeCondition;
 import org.w3c.css.sac.CombinatorCondition;
 import org.w3c.css.sac.Condition;
@@ -116,7 +116,7 @@
 	 * @param element
 	 *            Element to check.
 	 */
-	public boolean matches(VEXElement element) {
+	public boolean matches(IVEXElement element) {
 		return matches(this.selector, element);
 	}
 
@@ -125,7 +125,7 @@
 	/**
 	 * Returns true if the given element matches the given selector.
 	 */
-	private static boolean matches(Selector selector, VEXElement element) {
+	private static boolean matches(Selector selector, IVEXElement element) {
 
 		if (element == null) {
 			// This can happen when, e.g., with the rule "foo > *".
@@ -189,7 +189,7 @@
 
 		case Selector.SAC_CHILD_SELECTOR:
 			DescendantSelector ds2 = (DescendantSelector) selector;
-			VEXElement parent = element.getParent();
+			IVEXElement parent = element.getParent();
 			if (element instanceof PseudoElement) {
 				parent = parent.getParent(); // sigh - this looks inelegant, but
 												// whatcha gonna do?
@@ -207,12 +207,12 @@
 				// find next sibling
 
 				final Iterator i = element.getParent().getChildIterator();
-				VEXElement e = null;
-				VEXElement f = null;
+				IVEXElement e = null;
+				IVEXElement f = null;
 
 				while (i.hasNext() && e != element) {
 					f = e;
-					e = (VEXElement) i.next();
+					e = (IVEXElement) i.next();
 				}
 
 				if (e == element) {
@@ -232,8 +232,8 @@
 	 * Returns true if some ancestor of the given element matches the given
 	 * selector.
 	 */
-	private static boolean matchesAncestor(Selector selector, VEXElement element) {
-		VEXElement e = element;
+	private static boolean matchesAncestor(Selector selector, IVEXElement element) {
+		IVEXElement e = element;
 		while (e != null) {
 			if (matches(selector, e)) {
 				return true;
@@ -243,7 +243,7 @@
 		return false;
 	}
 
-	private static boolean matchesCondition(Condition condition, VEXElement element) {
+	private static boolean matchesCondition(Condition condition, IVEXElement element) {
 
 		AttributeCondition acon;
 		String attributeName;
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/StyleSheet.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/StyleSheet.java
index 7946e23..21d3424 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/StyleSheet.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/css/StyleSheet.java
@@ -25,7 +25,7 @@
 
 import org.eclipse.wst.xml.vex.core.internal.core.FontSpec;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 import org.w3c.css.sac.LexicalUnit;
 
 /**
@@ -132,7 +132,7 @@
 	 * @param element
 	 *            IVEXElement for which styles are to be flushed.
 	 */
-	public void flushStyles(VEXElement element) {
+	public void flushStyles(IVEXElement element) {
 		this.getStyleMap().remove(element);
 	}
 
@@ -143,7 +143,7 @@
 	 * @param element
 	 *            Parent element of the pseudo-element.
 	 */
-	public VEXElement getAfterElement(VEXElement element) {
+	public IVEXElement getAfterElement(IVEXElement element) {
 		PseudoElement pe = new PseudoElement(element, PseudoElement.AFTER);
 		Styles styles = this.getStyles(pe);
 		if (styles == null) {
@@ -160,7 +160,7 @@
 	 * @param element
 	 *            Parent element of the pseudo-element.
 	 */
-	public VEXElement getBeforeElement(VEXElement element) {
+	public IVEXElement getBeforeElement(IVEXElement element) {
 		PseudoElement pe = new PseudoElement(element, PseudoElement.BEFORE);
 		Styles styles = this.getStyles(pe);
 		if (styles == null) {
@@ -184,7 +184,7 @@
 	 * @param element
 	 *            IVEXElement for which to calculate the styles.
 	 */
-	public Styles getStyles(VEXElement element) {
+	public Styles getStyles(IVEXElement element) {
 
 		Styles styles;
 		WeakReference ref = (WeakReference) this.getStyleMap().get(element);
@@ -215,7 +215,7 @@
 		return styles;
 	}
 
-	private Styles calculateStyles(VEXElement element) {
+	private Styles calculateStyles(IVEXElement element) {
 
 		Styles styles = new Styles();
 		Styles parentStyles = null;
@@ -309,7 +309,7 @@
 	/**
 	 * Returns all the declarations that apply to the given element.
 	 */
-	private Map getApplicableDecls(VEXElement element) {
+	private Map getApplicableDecls(IVEXElement element) {
 		// Find all the property declarations that apply to this element.
 		List declList = new ArrayList();
 		Rule[] rules = this.getRules();
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DOMDocumentReader.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DOMDocumentReader.java
index 1a6574c..5935380 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DOMDocumentReader.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DOMDocumentReader.java
@@ -18,7 +18,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 
 import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
@@ -34,7 +34,7 @@
 	 * @param domDocument
 	 *            IDOMDocument from which to load the document.
 	 */
-	public VEXDocument read(IDOMDocument domDocument) throws IOException,
+	public IVEXDocument read(IDOMDocument domDocument) throws IOException,
 			ParserConfigurationException, SAXException {
 		Reader reader = new StringReader(domDocument.getSource());
 		return read(new InputSource(new BufferedReader(reader)));
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Document.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Document.java
index 347ff45..02cdcbd 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Document.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Document.java
@@ -15,13 +15,13 @@
 import java.util.List;
 
 import org.eclipse.wst.xml.vex.core.internal.core.ListenerList;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Content;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Position;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocumentFragment;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IContent;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IPosition;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocumentFragment;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotRedoException;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotUndoException;
 import org.eclipse.wst.xml.vex.core.internal.undo.IUndoableEdit;
@@ -30,9 +30,9 @@
  * Represents an XML document.
  * 
  */
-public class Document implements VEXDocument {
+public class Document implements IVEXDocument {
 
-	private Content content;
+	private IContent content;
 	private RootElement rootElement;
 	private ListenerList listeners = new ListenerList(DocumentListener.class,
 			DocumentEvent.class);
@@ -41,7 +41,7 @@
 	private String publicID;
 	private String systemID;
 	private String encoding;
-	private Validator validator;
+	private IValidator validator;
 
 	/**
 	 * Class constructor.
@@ -69,7 +69,7 @@
 	 *            RootElement of the document.
 	 * 
 	 */
-	public Document(Content content, RootElement rootElement) {
+	public Document(IContent content, RootElement rootElement) {
 		this.content = content;
 		this.rootElement = rootElement;
 	}
@@ -86,19 +86,16 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#canInsertFragment(int, org.eclipse.wst.xml.vex.core.internal.dom.DocumentFragment)
 	 * 
 	 */
-	public boolean canInsertFragment(int offset, VEXDocumentFragment fragment) {
+	public boolean canInsertFragment(int offset, IVEXDocumentFragment fragment) {
 
 		if (this.validator == null) {
 			return true;
 		}
 
-		VEXElement element = this.getElementAt(offset);
-		List<String> seq1 = this.getNodeNames(element.getStartOffset() + 1, offset);
-
-		List<String> seq2 = fragment.getNodeNames();
-
-		List<String> seq3 = this.getNodeNames(offset, element.getEndOffset());
-
+		IVEXElement element = this.getElementAt(offset);
+		String[] seq1 = this.getNodeNames(element.getStartOffset() + 1, offset);
+		String[] seq2 = fragment.getNodeNames();
+		String[] seq3 = this.getNodeNames(offset, element.getEndOffset());
 		return this.validator.isValidSequence(element.getName(), seq1, seq2,
 				seq3, true);
 	}
@@ -113,18 +110,12 @@
 			return true;
 		}
 
-		VEXElement element = this.getElementAt(offset);
-		List<String> seq1 = this.getNodeNames(element.getStartOffset() + 1, offset);
+		IVEXElement element = this.getElementAt(offset);
+		String[] seq1 = this.getNodeNames(element.getStartOffset() + 1, offset);
+		String[] seq2 = new String[] { IValidator.PCDATA };
+		String[] seq3 = this.getNodeNames(offset, element.getEndOffset());
 
-		String[] seq2 = new String[] { Validator.PCDATA };
-		List<String> listSeq2 = new ArrayList<String>(seq2.length);
-		for (int i = 0; i < seq2.length; i++) {
-			listSeq2.add(seq2[i]);
-		}
-
-		List<String> seq3 = this.getNodeNames(offset, element.getEndOffset());
-
-		return this.validator.isValidSequence(element.getName(), seq1, listSeq2,
+		return this.validator.isValidSequence(element.getName(), seq1, seq2,
 				seq3, true);
 	}
 
@@ -132,7 +123,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#createPosition(int)
 	 * 
 	 */
-	public Position createPosition(int offset) {
+	public IPosition createPosition(int offset) {
 		return this.content.createPosition(offset);
 	}
 
@@ -143,20 +134,18 @@
 	public void delete(int startOffset, int endOffset)
 			throws DocumentValidationException {
 
-		VEXElement e1 = this.getElementAt(startOffset);
-		VEXElement e2 = this.getElementAt(endOffset);
+		IVEXElement e1 = this.getElementAt(startOffset);
+		IVEXElement e2 = this.getElementAt(endOffset);
 		if (e1 != e2) {
 			throw new IllegalArgumentException("Deletion from " + startOffset
 					+ " to " + endOffset + " is unbalanced");
 		}
 
-		Validator validator = this.getValidator();
+		IValidator validator = this.getValidator();
 		if (validator != null) {
-			List<String> seq1 = this.getNodeNames(e1.getStartOffset() + 1,
+			String[] seq1 = this.getNodeNames(e1.getStartOffset() + 1,
 					startOffset);
-
-			List<String> seq2 = this.getNodeNames(endOffset, e1.getEndOffset());
-
+			String[] seq2 = this.getNodeNames(endOffset, e1.getEndOffset());
 			if (!validator
 					.isValidSequence(e1.getName(), seq1, seq2, null, true)) {
 				throw new DocumentValidationException("Unable to delete from "
@@ -165,7 +154,7 @@
 		}
 
 		// Grab the fragment for the undoable edit while it's still here
-		VEXDocumentFragment frag = getFragment(startOffset, endOffset);
+		IVEXDocumentFragment frag = getFragment(startOffset, endOffset);
 
 		this.fireBeforeContentDeleted(new DocumentEvent(this, e1, startOffset,
 				endOffset - startOffset, null));
@@ -192,18 +181,18 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#findCommonElement(int, int)
 	 * 
 	 */
-	public VEXElement findCommonElement(int offset1, int offset2) {
-		VEXElement element = this.rootElement;
+	public IVEXElement findCommonElement(int offset1, int offset2) {
+		IVEXElement element = this.rootElement;
 		for (;;) {
 			boolean tryAgain = false;
-			List<VEXElement> children = element.getChildElements();
-			for (int i = 0; i < children.size(); i++) {
-				if (offset1 > children.get(i).getStartOffset()
-						&& offset2 > children.get(i).getStartOffset()
-						&& offset1 <= children.get(i).getEndOffset()
-						&& offset2 <= children.get(i).getEndOffset()) {
+			IVEXElement[] children = element.getChildElements();
+			for (int i = 0; i < children.length; i++) {
+				if (offset1 > children[i].getStartOffset()
+						&& offset2 > children[i].getStartOffset()
+						&& offset1 <= children[i].getEndOffset()
+						&& offset2 <= children[i].getEndOffset()) {
 
-					element = children.get(i);
+					element = children[i];
 					tryAgain = true;
 					break;
 				}
@@ -227,17 +216,17 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#getElementAt(int)
 	 * 
 	 */
-	public VEXElement getElementAt(int offset) {
+	public IVEXElement getElementAt(int offset) {
 		if (offset < 1 || offset >= this.getLength()) {
 			throw new IllegalArgumentException("Illegal offset: " + offset
 					+ ". Must be between 1 and n-1");
 		}
-		VEXElement element = this.rootElement;
+		IVEXElement element = this.rootElement;
 		for (;;) {
 			boolean tryAgain = false;
-			List<VEXElement> children = element.getChildElements();
-			for (int i = 0; i < children.size(); i++) {
-				VEXElement child = children.get(i);
+			IVEXElement[] children = element.getChildElements();
+			for (int i = 0; i < children.length; i++) {
+				IVEXElement child = children[i];
 				if (offset <= child.getStartOffset()) {
 					return element;
 				} else if (offset <= child.getEndOffset()) {
@@ -265,7 +254,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#getFragment(int, int)
 	 * 
 	 */
-	public VEXDocumentFragment getFragment(int startOffset, int endOffset) {
+	public IVEXDocumentFragment getFragment(int startOffset, int endOffset) {
 
 		assertOffset(startOffset, 0, this.content.getLength());
 		assertOffset(endOffset, 0, this.content.getLength());
@@ -275,32 +264,33 @@
 					+ ", " + endOffset + ")");
 		}
 
-		VEXElement e1 = this.getElementAt(startOffset);
-		VEXElement e2 = this.getElementAt(endOffset);
+		IVEXElement e1 = this.getElementAt(startOffset);
+		IVEXElement e2 = this.getElementAt(endOffset);
 		if (e1 != e2) {
 			throw new IllegalArgumentException("Fragment from " + startOffset
 					+ " to " + endOffset + " is unbalanced");
 		}
 
-		List<VEXElement> children = e1.getChildElements();
+		IVEXElement[] children = e1.getChildElements();
 
-		Content newContent = new GapContent(endOffset - startOffset);
+		IContent newContent = new GapContent(endOffset - startOffset);
 		String s = this.content.getString(startOffset, endOffset - startOffset);
 		newContent.insertString(0, s);
-		List<VEXElement> newChildren = new ArrayList<VEXElement>();
-		for (int i = 0; i < children.size(); i++) {
-			VEXElement child = children.get(i);
+		List newChildren = new ArrayList();
+		for (int i = 0; i < children.length; i++) {
+			IVEXElement child = children[i];
 			if (child.getEndOffset() <= startOffset) {
 				continue;
 			} else if (child.getStartOffset() >= endOffset) {
 				break;
 			} else {
-				newChildren.add(cloneElement(child, newContent,
+				newChildren.add(this.cloneElement(child, newContent,
 						-startOffset, null));
 			}
 		}
 
-		List<VEXElement> elementArray = newChildren;
+		IVEXElement[] elementArray = (IVEXElement[]) newChildren
+				.toArray(new IVEXElement[newChildren.size()]);
 		return new DocumentFragment(newContent, elementArray);
 	}
 
@@ -316,30 +306,30 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#getNodeNames(int, int)
 	 * 
 	 */
-	public List<String> getNodeNames(int startOffset, int endOffset) {
+	public String[] getNodeNames(int startOffset, int endOffset) {
 
-		List<VEXNode> nodes = this.getNodes(startOffset, endOffset);
-		List<String> nodeNames = new ArrayList<String>(nodes.size());
+		IVEXNode[] nodes = this.getNodes(startOffset, endOffset);
+		String[] names = new String[nodes.length];
 
-		for (int i = 0; i < nodes.size(); i++) {
-			VEXNode node = nodes.get(i);
+		for (int i = 0; i < nodes.length; i++) {
+			IVEXNode node = nodes[i];
 			if (node instanceof Element) {
-				nodeNames.add(((VEXElement) node).getName());
+				names[i] = ((IVEXElement) node).getName();
 			} else {
-				nodeNames.add(Validator.PCDATA);
+				names[i] = IValidator.PCDATA;
 			}
 		}
 
-		return nodeNames;
+		return names;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#getNodes(int, int)
 	 * 
 	 */
-	public List<VEXNode> getNodes(int startOffset, int endOffset) {
+	public IVEXNode[] getNodes(int startOffset, int endOffset) {
 
-		VEXElement element = this.getElementAt(startOffset);
+		IVEXElement element = this.getElementAt(startOffset);
 		if (element != this.getElementAt(endOffset)) {
 			throw new IllegalArgumentException("Offsets are unbalanced: "
 					+ startOffset + " is in " + element.getName() + ", "
@@ -348,9 +338,9 @@
 		}
 
 		List list = new ArrayList();
-		List<VEXNode> nodes = element.getChildNodes();
-		for (int i = 0; i < nodes.size(); i++) {
-			VEXNode node = nodes.get(i);
+		IVEXNode[] nodes = element.getChildNodes();
+		for (int i = 0; i < nodes.length; i++) {
+			IVEXNode node = nodes[i];
 			if (node.getEndOffset() <= startOffset) {
 				continue;
 			} else if (node.getStartOffset() >= endOffset) {
@@ -372,7 +362,7 @@
 			}
 		}
 
-		return list;
+		return (IVEXNode[]) list.toArray(new IVEXNode[list.size()]);
 	}
 
 	/**
@@ -389,25 +379,25 @@
 	 * @param elements
 	 *            child elements that are within the run
 	 */
-	static VEXNode[] createNodeArray(Content content, int startOffset,
-			int endOffset, List<VEXElement> elements) {
+	static IVEXNode[] createNodeArray(IContent content, int startOffset,
+			int endOffset, IVEXElement[] elements) {
 
 		List nodes = new ArrayList();
 		int offset = startOffset;
-		for (int i = 0; i < elements.size(); i++) {
-			int start = elements.get(i).getStartOffset();
+		for (int i = 0; i < elements.length; i++) {
+			int start = elements[i].getStartOffset();
 			if (offset < start) {
 				nodes.add(new Text(content, offset, start));
 			}
-			nodes.add(elements.get(i));
-			offset = elements.get(i).getEndOffset() + 1;
+			nodes.add(elements[i]);
+			offset = elements[i].getEndOffset() + 1;
 		}
 
 		if (offset < endOffset) {
 			nodes.add(new Text(content, offset, endOffset));
 		}
 
-		return (VEXNode[]) nodes.toArray(new VEXNode[nodes.size()]);
+		return (IVEXNode[]) nodes.toArray(new IVEXNode[nodes.size()]);
 	}
 
 	/* (non-Javadoc)
@@ -463,7 +453,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#getValidator()
 	 * 
 	 */
-	public Validator getValidator() {
+	public IValidator getValidator() {
 		return this.validator;
 	}
 
@@ -471,7 +461,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#insertElement(int, org.eclipse.wst.xml.vex.core.internal.dom.Element)
 	 * 
 	 */
-	public void insertElement(int offset, VEXElement element)
+	public void insertElement(int offset, IVEXElement element)
 			throws DocumentValidationException {
 
 		if (offset < 1 || offset >= this.getLength()) {
@@ -481,21 +471,14 @@
 					+ (this.getLength() - 1));
 		}
 
-		Validator validator = this.getValidator();
+		IValidator validator = this.getValidator();
 		if (validator != null) {
-			VEXElement parent = this.getElementAt(offset);
-			List<String> seq1 = this.getNodeNames(parent.getStartOffset() + 1,
+			IVEXElement parent = this.getElementAt(offset);
+			String[] seq1 = this.getNodeNames(parent.getStartOffset() + 1,
 					offset);
-
 			String[] seq2 = new String[] { element.getName() };
-			List<String> listSeq2 = new ArrayList<String>(seq2.length);
-			for (int i = 0; i < seq2.length; i++) {
-				listSeq2.add(seq2[i]);
-			}
-
-			List<String> seq3 = this.getNodeNames(offset, parent.getEndOffset());
-
-			if (!validator.isValidSequence(parent.getName(), seq1, listSeq2, seq3,
+			String[] seq3 = this.getNodeNames(offset, parent.getEndOffset());
+			if (!validator.isValidSequence(parent.getName(), seq1, seq2, seq3,
 					true)) {
 				throw new DocumentValidationException("Cannot insert element "
 						+ element.getName() + " at offset " + offset);
@@ -504,13 +487,13 @@
 
 		// find the parent, and the index into its children at which
 		// this element should be inserted
-		VEXElement parent = this.rootElement;
+		IVEXElement parent = this.rootElement;
 		int childIndex = -1;
 		while (childIndex == -1) {
 			boolean tryAgain = false;
-			List<VEXElement> children = parent.getChildElements();
-			for (int i = 0; i < children.size(); i++) {
-				VEXElement child = children.get(i);
+			IVEXElement[] children = parent.getChildElements();
+			for (int i = 0; i < children.length; i++) {
+				IVEXElement child = children[i];
 				if (offset <= child.getStartOffset()) {
 					childIndex = i;
 					break;
@@ -521,7 +504,7 @@
 				}
 			}
 			if (!tryAgain && childIndex == -1) {
-				childIndex = children.size();
+				childIndex = children.length;
 				break;
 			}
 		}
@@ -546,7 +529,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#insertFragment(int, org.eclipse.wst.xml.vex.core.internal.dom.DocumentFragment)
 	 * 
 	 */
-	public void insertFragment(int offset, VEXDocumentFragment fragment)
+	public void insertFragment(int offset, IVEXDocumentFragment fragment)
 			throws DocumentValidationException {
 
 		if (offset < 1 || offset >= this.getLength()) {
@@ -554,16 +537,13 @@
 					"Error inserting document fragment");
 		}
 
-		VEXElement parent = this.getElementAt(offset);
+		IVEXElement parent = this.getElementAt(offset);
 
 		if (this.validator != null) {
-			List<String> seq1 = this.getNodeNames(parent.getStartOffset() + 1,
+			String[] seq1 = this.getNodeNames(parent.getStartOffset() + 1,
 					offset);
-
-			List<String> seq2 = fragment.getNodeNames();
-
-			List<String> seq3 = this.getNodeNames(offset, parent.getEndOffset());
-
+			String[] seq2 = fragment.getNodeNames();
+			String[] seq3 = this.getNodeNames(offset, parent.getEndOffset());
 			if (!validator.isValidSequence(parent.getName(), seq1, seq2, seq3,
 					true)) {
 
@@ -575,20 +555,20 @@
 		this.fireBeforeContentInserted(new DocumentEvent(this, parent, offset,
 				2, null));
 
-		Content c = fragment.getContent();
+		IContent c = fragment.getContent();
 		String s = c.getString(0, c.getLength());
 		this.content.insertString(offset, s);
 
-		List<VEXElement> children = parent.getChildElements();
+		IVEXElement[] children = parent.getChildElements();
 		int index = 0;
-		while (index < children.size()
-				&& children.get(index).getEndOffset() < offset) {
+		while (index < children.length
+				&& children[index].getEndOffset() < offset) {
 			index++;
 		}
 
-		List<VEXElement> elements = fragment.getElements();
-		for (int i = 0; i < elements.size(); i++) {
-			VEXElement newElement = this.cloneElement(elements.get(i), this.content,
+		IVEXElement[] elements = fragment.getElements();
+		for (int i = 0; i < elements.length; i++) {
+			IVEXElement newElement = this.cloneElement(elements[i], this.content,
 					offset, parent);
 			parent.insertChild(index, newElement);
 			index++;
@@ -613,7 +593,7 @@
 					"Offset must be between 1 and n-1");
 		}
 
-		VEXElement parent = this.getElementAt(offset);
+		IVEXElement parent = this.getElementAt(offset);
 
 		boolean isValid = false;
 		if (this.getCharacterAt(offset - 1) != '\0') {
@@ -621,22 +601,15 @@
 		} else if (this.getCharacterAt(offset) != '\0') {
 			isValid = true;
 		} else {
-			Validator validator = this.getValidator();
+			IValidator validator = this.getValidator();
 			if (validator != null) {
-				List<String> seq1 = this.getNodeNames(parent.getStartOffset() + 1,
+				String[] seq1 = this.getNodeNames(parent.getStartOffset() + 1,
 						offset);
-
-				String[] seq2 = new String[] { Validator.PCDATA };
-				List<String> listSeq2 = new ArrayList<String>(seq2.length);
-				for (int i = 0; i < seq2.length; i++) {
-					listSeq2.add(seq2[i]);
-				}
-
-				List<String> seq3 = this
+				String[] seq2 = new String[] { IValidator.PCDATA };
+				String[] seq3 = this
 						.getNodeNames(offset, parent.getEndOffset());
-
 				isValid = validator.isValidSequence(parent.getName(), seq1,
-						listSeq2, seq3, true);
+						seq2, seq3, true);
 			} else {
 				isValid = true;
 			}
@@ -713,7 +686,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocument#setValidator(org.eclipse.wst.xml.vex.core.internal.dom.Validator)
 	 * 
 	 */
-	public void setValidator(Validator validator) {
+	public void setValidator(IValidator validator) {
 		this.validator = validator;
 	}
 
@@ -726,9 +699,9 @@
 
 		private int startOffset;
 		private int endOffset;
-		private VEXDocumentFragment frag;
+		private IVEXDocumentFragment frag;
 
-		public DeleteEdit(int startOffset, int endOffset, VEXDocumentFragment frag) {
+		public DeleteEdit(int startOffset, int endOffset, IVEXDocumentFragment frag) {
 			this.startOffset = startOffset;
 			this.endOffset = endOffset;
 			this.frag = frag;
@@ -768,9 +741,9 @@
 	private class InsertElementEdit implements IUndoableEdit {
 
 		private int offset;
-		private VEXElement element;
+		private IVEXElement element;
 
-		public InsertElementEdit(int offset, VEXElement element2) {
+		public InsertElementEdit(int offset, IVEXElement element2) {
 			this.offset = offset;
 			this.element = element2;
 		}
@@ -809,9 +782,9 @@
 	private class InsertFragmentEdit implements IUndoableEdit {
 
 		private int offset;
-		private VEXDocumentFragment frag;
+		private IVEXDocumentFragment frag;
 
-		public InsertFragmentEdit(int offset, VEXDocumentFragment frag) {
+		public InsertFragmentEdit(int offset, IVEXDocumentFragment frag) {
 			this.offset = offset;
 			this.frag = frag;
 		}
@@ -916,28 +889,27 @@
 	 * @param parent
 	 *            parent for the cloned Element
 	 */
-	private VEXElement cloneElement(VEXElement original, Content content, int shift,
-			VEXElement parent) {
+	private IVEXElement cloneElement(IVEXElement original, IContent content, int shift,
+			IVEXElement parent) {
 
 		Element clone = new Element(original.getName());
 		clone.setContent(content, original.getStartOffset() + shift, original
 				.getEndOffset()
 				+ shift);
-		List<String> attrNames = original.getAttributeNames();
-		for (int i = 0; i < attrNames.size(); i++) {
-			String attributeName = attrNames.get(i);
+		String[] attrNames = original.getAttributeNames();
+		for (int i = 0; i < attrNames.length; i++) {
 			try {
-				clone.setAttribute(attributeName, original
-						.getAttribute(attributeName));
+				clone.setAttribute(attrNames[i], original
+						.getAttribute(attrNames[i]));
 			} catch (DocumentValidationException ex) {
 				throw new RuntimeException("Unexpected exception: " + ex);
 			}
 		}
 		clone.setParent(parent);
 
-		List<VEXElement> children = original.getChildElements();
-		for (int i = 0; i < children.size(); i++) {
-			VEXElement cloneChild = this.cloneElement(children.get(i), content, shift,
+		IVEXElement[] children = original.getChildElements();
+		for (int i = 0; i < children.length; i++) {
+			IVEXElement cloneChild = this.cloneElement(children[i], content, shift,
 					clone);
 			clone.insertChild(i, cloneChild);
 		}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentBuilder.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentBuilder.java
index daf2742..98dbaba 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentBuilder.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentBuilder.java
@@ -7,15 +7,14 @@
  * 
  * Contributors:
  *     John Krasnay - initial API and implementation
- *     David Carver (STAR) - added namespace awareness.
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
 import java.util.LinkedList;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Content;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IContent;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicyFactory;
 import org.xml.sax.Attributes;
@@ -24,7 +23,6 @@
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.NamespaceSupport;
 
 /**
  * A SAX handler that builds a Vex document. This builder collapses whitespace
@@ -39,11 +37,6 @@
  * </ul>
  */
 public class DocumentBuilder implements ContentHandler, LexicalHandler {
-	
-	 private NamespaceSupport namespaces;
-	 private boolean needNewContext = true;
-
-
 
 	/**
 	 * Class constructor.
@@ -55,13 +48,11 @@
 	public DocumentBuilder(IWhitespacePolicyFactory policyFactory) {
 		this.policyFactory = policyFactory;
 	}
-	
-	
 
 	/**
 	 * Returns the newly built <code>Document</code> object.
 	 */
-	public VEXDocument getDocument() {
+	public IVEXDocument getDocument() {
 		return this.doc;
 	}
 
@@ -108,7 +99,6 @@
 	}
 
 	public void endPrefixMapping(java.lang.String prefix) {
-		namespaces.popContext();
 	}
 
 	public void ignorableWhitespace(char[] ch, int start, int length) {
@@ -125,7 +115,6 @@
 	}
 
 	public void startDocument() {
-		namespaces = new NamespaceSupport();
 	}
 
 	public void startElement(String namespaceURI, String localName,
@@ -144,12 +133,9 @@
 				}
 			} else {
 				element = new Element(qName);
-				VEXElement parent = ((StackEntry) stack.getLast()).element;
+				IVEXElement parent = ((StackEntry) stack.getLast()).element;
 				parent.addChild(element);
 			}
-			element.setNamespace(namespaceURI);
-			element.setNamespacePrefix(namespaces.getPrefix(namespaceURI));
-
 
 			int n = attrs.getLength();
 			for (int i = 0; i < n; i++) {
@@ -172,12 +158,6 @@
 	}
 
 	public void startPrefixMapping(String prefix, String uri) {
-		 if (needNewContext) {
-		      namespaces.pushContext();
-		      needNewContext = false;
-		    }
-		    namespaces.declarePrefix(prefix, uri);
-		
 	}
 
 	// ============================================== LexicalHandler methods
@@ -220,7 +200,7 @@
 	private boolean trimLeading = false;
 
 	// Content object to hold document content
-	private Content content = new GapContent(100);
+	private IContent content = new GapContent(100);
 
 	// Stack of StackElement objects
 	private LinkedList stack = new LinkedList();
@@ -282,11 +262,11 @@
 		this.trimLeading = false;
 	}
 
-	private boolean isBlock(VEXElement element) {
+	private boolean isBlock(IVEXElement element) {
 		return this.policy != null && this.policy.isBlock(element);
 	}
 
-	private boolean isPre(VEXElement element) {
+	private boolean isPre(IVEXElement element) {
 		return this.policy != null && this.policy.isPre(element);
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentEvent.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentEvent.java
index f427c07..b09e05e 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentEvent.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentEvent.java
@@ -12,8 +12,8 @@
 
 import java.util.EventObject;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 import org.eclipse.wst.xml.vex.core.internal.undo.IUndoableEdit;
 
 /**
@@ -22,8 +22,8 @@
  */
 public class DocumentEvent extends EventObject {
 
-	private VEXDocument document;
-	private VEXElement parentElement;
+	private IVEXDocument document;
+	private IVEXElement parentElement;
 	private int offset;
 	private int length;
 	private String attributeName;
@@ -45,7 +45,7 @@
 	 * @param undoableEdit
 	 *            IUndoableEdit that can be used to undo the change.
 	 */
-	public DocumentEvent(VEXDocument document, VEXElement e1, int offset,
+	public DocumentEvent(IVEXDocument document, IVEXElement e1, int offset,
 			int length, IUndoableEdit undoableEdit) {
 
 		super(document);
@@ -72,7 +72,7 @@
 	 * @param undoableEdit
 	 *            IUndoableEdit that can be used to undo the change.
 	 */
-	public DocumentEvent(VEXDocument document, Element parentElement,
+	public DocumentEvent(IVEXDocument document, Element parentElement,
 			String attributeName, String oldAttributeValue,
 			String newAttributeValue, IUndoableEdit undoableEdit) {
 
@@ -105,7 +105,7 @@
 	 * Returns the element containing the change.
 	 * @model
 	 */
-	public VEXElement getParentElement() {
+	public IVEXElement getParentElement() {
 		return this.parentElement;
 	}
 
@@ -139,7 +139,7 @@
 	 * @return the document for which this event was generated
 	 * @model
 	 */
-	public VEXDocument getDocument() {
+	public IVEXDocument getDocument() {
 		return document;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentFragment.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentFragment.java
index a250fe8..92080ce 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentFragment.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentFragment.java
@@ -14,23 +14,20 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Content;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocumentFragment;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IContent;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocumentFragment;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 
 /**
  * Represents a fragment of an XML document.
  */
-public class DocumentFragment implements Serializable, VEXDocumentFragment {
+public class DocumentFragment implements Serializable, IVEXDocumentFragment {
 
-	private Content content;
-	private List<VEXElement> elements;
+	private IContent content;
+	private IVEXElement[] elements;
 
 	/**
 	 * Class constructor.
@@ -40,7 +37,7 @@
 	 * @param elementArray
 	 *            Elements that make up this fragment.
 	 */
-	public DocumentFragment(Content content, List<VEXElement> elementArray) {
+	public DocumentFragment(IContent content, IVEXElement[] elementArray) {
 		this.content = content;
 		this.elements = elementArray;
 	}
@@ -48,7 +45,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocumentFragment#getContent()
 	 */
-	public Content getContent() {
+	public IContent getContent() {
 		return this.content;
 	}
 
@@ -62,22 +59,22 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocumentFragment#getElements()
 	 */
-	public List<VEXElement> getElements() {
-		return elements;
+	public IVEXElement[] getElements() {
+		return this.elements;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocumentFragment#getNodeNames()
 	 */
-	public List<String> getNodeNames() {
+	public String[] getNodeNames() {
 
-		List<VEXNode> nodes = this.getNodes();
-		List<String> names = new ArrayList(nodes.size());
-		for (int i = 0; i < nodes.size(); i++) {
-			if (nodes.get(i) instanceof Text) {
-				names.add(Validator.PCDATA);
+		IVEXNode[] nodes = this.getNodes();
+		String[] names = new String[nodes.length];
+		for (int i = 0; i < nodes.length; i++) {
+			if (nodes[i] instanceof Text) {
+				names[i] = IValidator.PCDATA;
 			} else {
-				names.add(((VEXElement) nodes.get(i)).getName());
+				names[i] = ((IVEXElement) nodes[i]).getName();
 			}
 		}
 
@@ -87,10 +84,9 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXDocumentFragment#getNodes()
 	 */
-	public List<VEXNode> getNodes() {
-		List nodes = Arrays.asList(Document.createNodeArray(this.getContent(), 0, this.getContent()
-				.getLength(), this.getElements()));
-		return nodes;
+	public IVEXNode[] getNodes() {
+		return Document.createNodeArray(this.getContent(), 0, this.getContent()
+				.getLength(), this.getElements());
 	}
 
 	// ======================================================= PRIVATE
@@ -101,28 +97,28 @@
 
 	private void writeObject(ObjectOutputStream out) throws IOException {
 		out.writeUTF(this.content.getString(0, this.content.getLength()));
-		out.writeInt(this.elements.size());
-		for (int i = 0; i < this.elements.size(); i++) {
-			this.writeElement(this.elements.get(i), out);
+		out.writeInt(this.elements.length);
+		for (int i = 0; i < this.elements.length; i++) {
+			this.writeElement(this.elements[i], out);
 		}
 	}
 
-	private void writeElement(VEXElement element, ObjectOutputStream out)
+	private void writeElement(IVEXElement element, ObjectOutputStream out)
 			throws IOException {
 
 		out.writeObject(element.getName());
 		out.writeInt(element.getStartOffset());
 		out.writeInt(element.getEndOffset());
-		List<String> attrNames = element.getAttributeNames();
-		out.writeInt(attrNames.size());
-		for (int i = 0; i < attrNames.size(); i++) {
-			out.writeObject(attrNames.get(i));
-			out.writeObject(element.getAttribute(attrNames.get(i)));
+		String[] attrNames = element.getAttributeNames();
+		out.writeInt(attrNames.length);
+		for (int i = 0; i < attrNames.length; i++) {
+			out.writeObject(attrNames[i]);
+			out.writeObject(element.getAttribute(attrNames[i]));
 		}
-		List<VEXElement> children = element.getChildElements();
-		out.writeInt(children.size());
-		for (int i = 0; i < children.size(); i++) {
-			this.writeElement(children.get(i), out);
+		IVEXElement[] children = element.getChildElements();
+		out.writeInt(children.length);
+		for (int i = 0; i < children.length; i++) {
+			this.writeElement(children[i], out);
 		}
 	}
 
@@ -133,9 +129,9 @@
 		this.content = new GapContent(s.length());
 		content.insertString(0, s);
 		int n = in.readInt();
-		this.elements = new ArrayList<VEXElement>(n);
+		this.elements = new Element[n];
 		for (int i = 0; i < n; i++) {
-			this.elements.add(readElement(in));
+			this.elements[i] = this.readElement(in);
 		}
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReader.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReader.java
index 353b56b..a911959 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReader.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReader.java
@@ -7,7 +7,6 @@
  * 
  * Contributors:
  *     John Krasnay - initial API and implementation
- *     David Carver (STAR) - added namespace awareness.
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
@@ -22,7 +21,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParserFactory;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicyFactory;
 import org.xml.sax.ContentHandler;
 import org.xml.sax.EntityResolver;
@@ -63,7 +62,7 @@
 	 * @param url
 	 *            URL from which to load the document.
 	 */
-	public VEXDocument read(URL url) throws IOException,
+	public IVEXDocument read(URL url) throws IOException,
 			ParserConfigurationException, SAXException {
 
 		return read(new InputSource(url.toString()));
@@ -76,7 +75,7 @@
 	 * @param s
 	 *            String containing the document to be read.
 	 */
-	public VEXDocument read(String s) throws IOException,
+	public IVEXDocument read(String s) throws IOException,
 			ParserConfigurationException, SAXException {
 
 		Reader reader = new CharArrayReader(s.toCharArray());
@@ -89,14 +88,14 @@
 	 * @param is
 	 *            SAX InputSource from which to load the document.
 	 */
-	public VEXDocument read(InputSource is) throws IOException,
+	public IVEXDocument read(InputSource is) throws IOException,
 			ParserConfigurationException, SAXException {
 
 		SAXParserFactory factory = SAXParserFactory.newInstance();
-		factory.setValidating(false);
-		factory.setNamespaceAware(true);
+		factory.setValidating(false); // TODO: experimental--SWT implementation
 		XMLReader xmlReader = factory.newSAXParser().getXMLReader();
-		xmlReader.setFeature("http://xml.org/sax/features/namespaces", true);
+		// xmlReader.setFeature("http://xml.org/sax/features/validation",
+		// false);
 		final org.eclipse.wst.xml.vex.core.internal.dom.DocumentBuilder builder = new org.eclipse.wst.xml.vex.core.internal.dom.DocumentBuilder(
 				this.getWhitespacePolicyFactory());
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriter.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriter.java
index 1f293b4..9b17467 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriter.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriter.java
@@ -15,12 +15,11 @@
 import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.util.Arrays;
-import java.util.List;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 import org.eclipse.wst.xml.vex.core.internal.validator.AttributeDefinition;
 
@@ -136,7 +135,7 @@
 		this.wrapColumn = wrapColumn;
 	}
 
-	public void write(VEXDocument doc, OutputStream os) throws IOException {
+	public void write(IVEXDocument doc, OutputStream os) throws IOException {
 
 		OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
 		PrintWriter pw = new PrintWriter(osw);
@@ -164,7 +163,7 @@
 
 	// ====================================================== PRIVATE
 
-	private void writeNode(VEXNode node, PrintWriter pw, String indent) {
+	private void writeNode(IVEXNode node, PrintWriter pw, String indent) {
 
 		if (node instanceof Text) {
 			TextWrapper wrapper = new TextWrapper();
@@ -190,10 +189,10 @@
 			}
 
 			boolean hasBlockChild = false;
-			List<VEXElement> children = element.getChildElements();
-			for (int i = 0; i < children.size(); i++) {
+			IVEXElement[] children = element.getChildElements();
+			for (int i = 0; i < children.length; i++) {
 				if (this.whitespacePolicy != null
-						&& this.whitespacePolicy.isBlock(children.get(i))) {
+						&& this.whitespacePolicy.isBlock(children[i])) {
 					hasBlockChild = true;
 					break;
 				}
@@ -222,9 +221,9 @@
 				pw.println(">");
 
 				String childIndent = indent + this.indent;
-				List<VEXNode> content = element.getChildNodes();
-				for (int i = 0; i < content.size(); i++) {
-					this.writeNode(content.get(i), pw, childIndent);
+				IVEXNode[] content = element.getChildNodes();
+				for (int i = 0; i < content.length; i++) {
+					this.writeNode(content[i], pw, childIndent);
 				}
 				pw.print(indent);
 				pw.print("</");
@@ -244,22 +243,22 @@
 		}
 	}
 
-	private void writeNodeNoWrap(VEXNode node, PrintWriter pw) {
+	private void writeNodeNoWrap(IVEXNode node, PrintWriter pw) {
 
 		if (node instanceof Text) {
 			pw.print(escape(node.getText()));
 		} else {
 
-			VEXElement element = (VEXElement) node;
+			IVEXElement element = (IVEXElement) node;
 
 			pw.print("<");
 			pw.print(element.getName());
 			pw.print(this.getAttributeString(element));
 			pw.print(">");
 
-			List<VEXNode> content = element.getChildNodes();
-			for (int i = 0; i < content.size(); i++) {
-				this.writeNodeNoWrap(content.get(i), pw);
+			IVEXNode[] content = element.getChildNodes();
+			for (int i = 0; i < content.length; i++) {
+				this.writeNodeNoWrap(content[i], pw);
 			}
 
 			pw.print("</");
@@ -278,35 +277,35 @@
 		return sb.toString();
 	}
 
-	private void addNode(VEXNode node, TextWrapper wrapper) {
+	private void addNode(IVEXNode node, TextWrapper wrapper) {
 		if (node instanceof Text) {
 			wrapper.add(escape(node.getText()));
 		} else {
-			VEXElement element = (VEXElement) node;
-			List<VEXNode> content = element.getChildNodes();
-			List<String> attrs = element.getAttributeNames();
-			//Arrays.sort(attrs);
+			IVEXElement element = (IVEXElement) node;
+			IVEXNode[] content = element.getChildNodes();
+			String[] attrs = element.getAttributeNames();
+			Arrays.sort(attrs);
 
-			if (attrs.size() == 0) {
-				if (content.size() == 0) {
+			if (attrs.length == 0) {
+				if (content.length == 0) {
 					wrapper.add("<" + element.getName() + " />");
 				} else {
 					wrapper.add("<" + element.getName() + ">");
 				}
 			} else {
-				Validator validator = element.getDocument().getValidator();
+				IValidator validator = element.getDocument().getValidator();
 				StringBuffer sb = new StringBuffer();
-				for (int i = 0; i < attrs.size(); i++) {
+				for (int i = 0; i < attrs.length; i++) {
 					sb.setLength(0);
 					if (i == 0) {
 						sb.append("<" + element.getName());
 					}
-					if (!attrHasDefaultValue(validator, element, attrs.get(i))) {
-						sb.append(attrToString(attrs.get(i), element
-								.getAttribute(attrs.get(i))));
+					if (!attrHasDefaultValue(validator, element, attrs[i])) {
+						sb.append(attrToString(attrs[i], element
+								.getAttribute(attrs[i])));
 					}
-					if (i == attrs.size() - 1) {
-						if (content.size() == 0) {
+					if (i == attrs.length - 1) {
+						if (content.length == 0) {
 							sb.append("/>");
 						} else {
 							sb.append(">");
@@ -316,38 +315,38 @@
 				}
 			}
 
-			for (int i = 0; i < content.size(); i++) {
-				addNode(content.get(i), wrapper);
+			for (int i = 0; i < content.length; i++) {
+				addNode(content[i], wrapper);
 			}
 
-			if (content.size() > 0) {
+			if (content.length > 0) {
 				wrapper.add("</" + element.getName() + ">");
 			}
 		}
 	}
 
-	private String getAttributeString(VEXElement element) {
+	private String getAttributeString(IVEXElement element) {
 
-		Validator validator = element.getDocument().getValidator();
+		IValidator validator = element.getDocument().getValidator();
 
-		List<String> attrs = element.getAttributeNames();
-		//Arrays.sort(attrs);
+		String[] attrs = element.getAttributeNames();
+		Arrays.sort(attrs);
 		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < attrs.size(); i++) {
-			if (attrHasDefaultValue(validator, element, attrs.get(i))) {
+		for (int i = 0; i < attrs.length; i++) {
+			if (attrHasDefaultValue(validator, element, attrs[i])) {
 				continue;
 			}
 			sb.append(" ");
-			sb.append(attrs.get(i));
+			sb.append(attrs[i]);
 			sb.append("=\"");
-			sb.append(escape(element.getAttribute(attrs.get(i))));
+			sb.append(escape(element.getAttribute(attrs[i])));
 			sb.append("\"");
 		}
 		return sb.toString();
 	}
 
-	private static boolean attrHasDefaultValue(Validator validator,
-			VEXElement element, String attribute) {
+	private static boolean attrHasDefaultValue(IValidator validator,
+			IVEXElement element, String attribute) {
 		if (validator != null) {
 			AttributeDefinition ad = validator.getAttributeDefinition(element
 					.getName(), attribute);
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Element.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Element.java
index 3dabf10..07a4ff0 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Element.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Element.java
@@ -11,17 +11,15 @@
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotRedoException;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotUndoException;
 import org.eclipse.wst.xml.vex.core.internal.undo.IUndoableEdit;
@@ -30,10 +28,10 @@
  * <code>Element</code> represents a tag in an XML document. Methods are
  * available for managing the element's attributes and children.
  */
-public class Element extends Node implements Cloneable, VEXElement {
+public class Element extends Node implements Cloneable, IVEXElement {
 
 	private String name;
-	private VEXElement parent = null;
+	private IVEXElement parent = null;
 	private List children = new ArrayList();
 	private Map attributes = new HashMap();
 
@@ -51,7 +49,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#addChild(org.eclipse.wst.xml.vex.core.internal.dom.Element)
 	 */
-	public void addChild(VEXElement child) {
+	public void addChild(IVEXElement child) {
 		this.children.add(child);
 		child.setParent(this);
 	}
@@ -61,7 +59,7 @@
 	 */
 	public Object clone() {
 		try {
-			VEXElement element = new Element(this.getName());
+			IVEXElement element = new Element(this.getName());
 			for (Iterator it = this.attributes.keySet().iterator(); it
 					.hasNext();) {
 				String attrName = (String) it.next();
@@ -86,51 +84,45 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#getAttributeNames()
 	 */
-	public List<String> getAttributeNames() {
-		Set set = this.attributes.keySet();
-		Iterator<String> iterator = set.iterator();
-		ArrayList<String> attributeNames = new ArrayList<String>(set.size());
-		while (iterator.hasNext()) {
-			String attrName = iterator.next();
-			attributeNames.add(attrName);
-		}
-		return attributeNames;
+	public String[] getAttributeNames() {
+		Collection names = this.attributes.keySet();
+		return (String[]) names.toArray(new String[names.size()]);
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#getChildIterator()
 	 */
-	public Iterator<VEXElement> getChildIterator() {
-		return children.iterator();
+	public Iterator getChildIterator() {
+		return this.children.iterator();
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#getChildElements()
 	 */
-	public List<VEXElement> getChildElements() {
-		return children;
+	public IVEXElement[] getChildElements() {
+		int size = this.children.size();
+		return (IVEXElement[]) this.children.toArray(new IVEXElement[size]);
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#getChildNodes()
 	 */
-	public List<VEXNode> getChildNodes() {
-		List nodes = Arrays.asList(Document.createNodeArray(this.getContent(), this
+	public IVEXNode[] getChildNodes() {
+		return Document.createNodeArray(this.getContent(), this
 				.getStartOffset() + 1, this.getEndOffset(), this
-				.getChildElements()));
-		return nodes;
+				.getChildElements());
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#getDocument()
 	 */
-	public VEXDocument getDocument() {
-		VEXElement root = this;
+	public IVEXDocument getDocument() {
+		IVEXElement root = this;
 		while (root.getParent() != null) {
 			root = root.getParent();
 		}
 		if (root instanceof RootElement) {
-			return ((VEXElement) root).getDocument();
+			return ((IVEXElement) root).getDocument();
 		} else {
 			return null;
 		}
@@ -146,7 +138,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXElement#getParent()
 	 */
-	public VEXElement getParent() {
+	public IVEXElement getParent() {
 		return this.parent;
 	}
 
@@ -169,7 +161,7 @@
 	 * Inserts the given element as a child at the given child index. Sets the
 	 * parent attribute of the given element to this element.
 	 */
-	public void insertChild(int index, VEXElement child) {
+	public void insertChild(int index, IVEXElement child) {
 		this.children.add(index, child);
 		child.setParent(this); 
 	}
@@ -191,7 +183,7 @@
 		if (oldValue != null) {
 			this.attributes.remove(name);
 		}
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		if (doc != null) { // doc may be null, e.g. when we're cloning an
 							// element
 			// to produce a document fragment
@@ -220,7 +212,7 @@
 			return;
 		} else {
 			this.attributes.put(name, value);
-			VEXDocument doc = this.getDocument();
+			IVEXDocument doc = this.getDocument();
 			if (doc != null) { // doc may be null, e.g. when we're cloning an
 								// element
 				// to produce a document fragment
@@ -251,16 +243,16 @@
 		StringBuffer sb = new StringBuffer();
 		sb.append("<");
 		sb.append(this.getName());
-		List<String> attrs = this.getAttributeNames();
+		String[] attrs = this.getAttributeNames();
 
-		for (int i = 0; i < attrs.size(); i++) {
+		for (int i = 0; i < attrs.length; i++) {
 			if (i > 0) {
 				sb.append(",");
 			}
 			sb.append(" ");
-			sb.append(attrs.get(i));
+			sb.append(attrs[i]);
 			sb.append("=\"");
-			sb.append(this.getAttribute(attrs.get(i)));
+			sb.append(this.getAttribute(attrs[i]));
 			sb.append("\"");
 		}
 
@@ -292,7 +284,7 @@
 		}
 
 		public void undo() throws CannotUndoException {
-			VEXDocument doc = getDocument();
+			IVEXDocument doc = getDocument();
 			try {
 				doc.setUndoEnabled(false);
 				setAttribute(name, oldValue);
@@ -304,7 +296,7 @@
 		}
 
 		public void redo() throws CannotRedoException {
-			VEXDocument doc = getDocument();
+			IVEXDocument doc = getDocument();
 			try {
 				doc.setUndoEnabled(false);
 				setAttribute(name, newValue);
@@ -316,7 +308,7 @@
 		}
 	}
 
-	public void setParent(VEXElement parent) {
+	public void setParent(IVEXElement parent) {
 		this.parent = parent;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContent.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContent.java
index 57e9170..8e94157 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContent.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContent.java
@@ -14,8 +14,8 @@
 import java.util.Iterator;
 import java.util.Map;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Content;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Position;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IContent;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IPosition;
 
 /**
  * Implementation of the <code>Content</code> interface that manages changes
@@ -25,7 +25,7 @@
  * Deletions that end of the gap are also very efficent. Furthermore, changes
  * near the gap require relatively few characters to be moved.
  */
-public class GapContent implements Content {
+public class GapContent implements IContent {
 
 	private char[] content;
 	private int gapStart;
@@ -53,11 +53,11 @@
 	 * @param offset
 	 *            initial offset of the position
 	 */
-	public Position createPosition(int offset) {
+	public IPosition createPosition(int offset) {
 
 		assertOffset(offset, 0, this.getLength());
 
-		Position pos = new GapContentPosition(offset);
+		IPosition pos = new GapContentPosition(offset);
 		this.positions.put(pos, pos);
 
 		return pos;
@@ -174,7 +174,7 @@
 	/**
 	 * Implementation of the Position interface.
 	 */
-	private static class GapContentPosition implements Position {
+	private static class GapContentPosition implements IPosition {
 
 		private int offset;
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Node.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Node.java
index 2d75fab..edd5bae 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Node.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Node.java
@@ -10,21 +10,19 @@
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Content;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Position;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IContent;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IPosition;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 
 /**
  * <code>Node</code> represents a component of an XML document. .
  *
  */
-public class Node implements VEXNode {
+public class Node implements IVEXNode {
 
-	private Content content = null;
-	private Position start = null;
-	private Position end = null;
-	private String namespace = null;
-	private String namespacePrefix = null;
+	private IContent content = null;
+	private IPosition start = null;
+	private IPosition end = null;
 
 	/**
 	 * Class constructor.
@@ -35,7 +33,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXNode#getContent()
 	 */
-	public Content getContent() {
+	public IContent getContent() {
 		return this.content;
 	}
 
@@ -49,7 +47,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXNode#getEndPosition()
 	 */
-	public Position getEndPosition() {
+	public IPosition getEndPosition() {
 		return this.end;
 	}
 
@@ -63,7 +61,7 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXNode#getStartPosition()
 	 */
-	public Position getStartPosition() {
+	public IPosition getStartPosition() {
 		return this.start;
 	}
 
@@ -86,27 +84,11 @@
 	 * @param endOffset
 	 *            offset at which the node's content ends
 	 */
-	public void setContent(Content content, int startOffset, int endOffset) {
+	public void setContent(IContent content, int startOffset, int endOffset) {
 
 		this.content = content;
 		this.start = content.createPosition(startOffset);
 		this.end = content.createPosition(endOffset);
 	}
 
-	public String getNamespace() {
-		return namespace;
-	}
-
-	public void setNamespace(String namespace) {
-		this.namespace = namespace;
-	}
-
-	public String getNamespacePrefix() {
-		return namespacePrefix;
-	}
-
-	public void setNamespacePrefix(String namespacePrefix) {
-		this.namespacePrefix = namespacePrefix;
-	}
-
 }
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/RootElement.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/RootElement.java
index dfb06f3..08c9395 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/RootElement.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/RootElement.java
@@ -10,8 +10,8 @@
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * The root element of a document. Keeps track of the document to which it is
@@ -20,9 +20,9 @@
  * notify document listeners that the document has changed when the element
  * changes.
  */
-public class RootElement extends Element implements VEXElement {
+public class RootElement extends Element implements IVEXElement {
 
-	private VEXDocument document;
+	private IVEXDocument document;
 
 	/**
 	 * Class constructor
@@ -37,14 +37,14 @@
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXRootElement#getDocument()
 	 */
-	public VEXDocument getDocument() {
+	public IVEXDocument getDocument() {
 		return document;
 	}
 
 	/* (non-Javadoc)
 	 * @see org.eclipse.wst.xml.vex.core.internal.dom.IVEXRootElement#setDocument(org.eclipse.wst.xml.vex.core.internal.dom.Document)
 	 */
-	public void setDocument(VEXDocument document) {
+	public void setDocument(IVEXDocument document) {
 		this.document = document;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Text.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Text.java
index a355b09..96c2b7a 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Text.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/dom/Text.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Content;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IContent;
 
 /**
  * <code>Text</code> represents a run of text in a document. Text objects are
@@ -29,7 +29,7 @@
 	 * @param endOffset
 	 *            character offset of the end of the run
 	 */
-	public Text(Content content, int startOffset, int endOffset) {
+	public Text(IContent content, int startOffset, int endOffset) {
 		this.setContent(content, startOffset, endOffset);
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBlockBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBlockBox.java
index 1725d84..c804368 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBlockBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBlockBox.java
@@ -26,9 +26,9 @@
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheet;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Position;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IPosition;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Base class of block boxes that can contain other block boxes. This class
@@ -57,7 +57,7 @@
 	 *            Element associated with this box. anonymous box.
 	 */
 	public AbstractBlockBox(LayoutContext context, BlockBox parent,
-			VEXElement element) {
+			IVEXElement element) {
 
 		this.parent = parent;
 		this.element = element;
@@ -87,7 +87,7 @@
 		this.marginTop = 0;
 		this.marginBottom = 0;
 
-		VEXDocument doc = context.getDocument();
+		IVEXDocument doc = context.getDocument();
 		this.startPosition = doc.createPosition(startOffset);
 		this.endPosition = doc.createPosition(endOffset);
 	}
@@ -95,9 +95,9 @@
 	/**
 	 * Walks the box tree and returns the nearest enclosing element.
 	 */
-	protected VEXElement findContainingElement() {
+	protected IVEXElement findContainingElement() {
 		BlockBox box = this;
-		VEXElement element = box.getElement();
+		IVEXElement element = box.getElement();
 		while (element == null) {
 			box = box.getParent();
 			element = box.getElement();
@@ -177,12 +177,12 @@
 				.toArray(new BlockBox[contentChildren.size()]);
 	}
 
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.element;
 	}
 
 	public int getEndOffset() {
-		VEXElement element = this.getElement();
+		IVEXElement element = this.getElement();
 		if (element != null) {
 			return element.getEndOffset();
 		} else if (this.getEndPosition() != null) {
@@ -203,7 +203,7 @@
 	 */
 	protected int getEstimatedHeight(LayoutContext context) {
 
-		VEXElement element = this.findContainingElement();
+		IVEXElement element = this.findContainingElement();
 		Styles styles = context.getStyleSheet().getStyles(element);
 		int charCount = this.getEndOffset() - this.getStartOffset();
 
@@ -379,7 +379,7 @@
 	}
 
 	public int getStartOffset() {
-		VEXElement element = this.getElement();
+		IVEXElement element = this.getElement();
 		if (element != null) {
 			return element.getStartOffset() + 1;
 		} else if (this.getStartPosition() != null) {
@@ -506,8 +506,8 @@
 	protected void paintSelectionFrame(LayoutContext context, int x, int y,
 			boolean selected) {
 
-		VEXElement element = this.getElement();
-		VEXElement parent = element == null ? null : element.getParent();
+		IVEXElement element = this.getElement();
+		IVEXElement parent = element == null ? null : element.getParent();
 
 		boolean paintFrame = context.isElementSelected(element)
 				&& !context.isElementSelected(parent);
@@ -647,9 +647,9 @@
 			pendingInlines.addAll(beforeInlines);
 		}
 		
-		VEXDocument document = context.getDocument();
+		IVEXDocument document = context.getDocument();
 
-		VEXElement element = document.findCommonElement(startOffset,
+		IVEXElement element = document.findCommonElement(startOffset,
 				endOffset);
 
 		if (startOffset == endOffset) {
@@ -734,7 +734,7 @@
 
 	private class BlockInlineIterator {
 
-		public BlockInlineIterator(LayoutContext context, VEXElement element,
+		public BlockInlineIterator(LayoutContext context, IVEXElement element,
 				int startOffset, int endOffset) {
 			this.context = context;
 			this.element = element;
@@ -752,7 +752,7 @@
 			} else if (startOffset == endOffset) {
 				return null;
 			} else {
-				VEXElement blockElement = findNextBlockElement(this.context,
+				IVEXElement blockElement = findNextBlockElement(this.context,
 						this.element, startOffset, endOffset);
 				if (blockElement == null) {
 					if (startOffset < endOffset) {
@@ -792,7 +792,7 @@
 		}
 
 		private LayoutContext context;
-		private VEXElement element;
+		private IVEXElement element;
 		private int startOffset;
 		private int endOffset;
 		private LinkedList pushStack = new LinkedList();
@@ -882,7 +882,7 @@
 	/**
 	 * Element with which we are associated. For anonymous boxes, this is null.
 	 */
-	private VEXElement element;
+	private IVEXElement element;
 
 	/*
 	 * We cache the top and bottom margins, since they may be affected by our
@@ -895,12 +895,12 @@
 	 * Start position of an anonymous box. For non-anonymous boxes, this is
 	 * null.
 	 */
-	private Position startPosition;
+	private IPosition startPosition;
 
 	/**
 	 * End position of an anonymous box. For non-anonymous boxes, this is null.
 	 */
-	private Position endPosition;
+	private IPosition endPosition;
 
 	/**
 	 * Searches for the next block-formatted child.
@@ -914,12 +914,12 @@
 	 * @param endOffset
 	 *            The offset at which to end the search.
 	 */
-	private static VEXElement findNextBlockElement(LayoutContext context,
-			VEXElement element, int startOffset, int endOffset) {
+	private static IVEXElement findNextBlockElement(LayoutContext context,
+			IVEXElement element, int startOffset, int endOffset) {
 
-		List<VEXElement> children = element.getChildElements();
-		for (int i = 0; i < children.size(); i++) {
-			VEXElement child = children.get(i);
+		IVEXElement[] children = element.getChildElements();
+		for (int i = 0; i < children.length; i++) {
+			IVEXElement child = children[i];
 			if (child.getEndOffset() < startOffset) {
 				continue;
 			} else if (child.getStartOffset() >= endOffset) {
@@ -931,7 +931,7 @@
 																// determination
 					return child;
 				} else {
-					VEXElement fromChild = findNextBlockElement(context, child,
+					IVEXElement fromChild = findNextBlockElement(context, child,
 							startOffset, endOffset);
 					if (fromChild != null) {
 						return fromChild;
@@ -947,7 +947,7 @@
 	 * Return the end position of an anonymous box. The default implementation
 	 * returns null.
 	 */
-	private Position getEndPosition() {
+	private IPosition getEndPosition() {
 		return this.endPosition;
 	}
 
@@ -955,14 +955,14 @@
 	 * Return the start position of an anonymous box. The default implementation
 	 * returns null.
 	 */
-	private Position getStartPosition() {
+	private IPosition getStartPosition() {
 		return this.startPosition;
 	}
 
 	private boolean isTableChild(LayoutContext context, Object rangeOrElement) {
 		if (rangeOrElement != null && rangeOrElement instanceof Element) {
 			return LayoutUtils.isTableChild(context.getStyleSheet(),
-					(VEXElement) rangeOrElement);
+					(IVEXElement) rangeOrElement);
 		} else {
 			return false;
 		}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBox.java
index 73a87a1..a6f9a9d 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/AbstractBox.java
@@ -19,7 +19,7 @@
 import org.eclipse.wst.xml.vex.core.internal.css.CSS;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Base implementation of the <code>Box</code> interface, implementing some
@@ -76,7 +76,7 @@
 	 * 
 	 * @see org.eclipse.wst.xml.vex.core.internal.layout.Box#getElement()
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return null;
 	}
 
@@ -115,7 +115,7 @@
 	 * returns all zeros.
 	 */
 	public Insets getInsets(LayoutContext context, int containerWidth) {
-		VEXElement element = this.getElement();
+		IVEXElement element = this.getElement();
 		if (element == null) {
 			return Insets.ZERO_INSETS;
 		} else {
@@ -294,7 +294,7 @@
 	 *            otherwise, just the background is filled. This is handy when
 	 *            removing the borders when drawing the selection frame.
 	 */
-	protected void drawBox(LayoutContext context, VEXElement element, int x,
+	protected void drawBox(LayoutContext context, IVEXElement element, int x,
 			int y, int containerWidth, boolean drawBorders) {
 
 		if (element == null) {
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockElementBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockElementBox.java
index bc2c58f..1441243 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockElementBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockElementBox.java
@@ -21,7 +21,7 @@
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheet;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * A block box corresponding to a DOM IVEXElement. Block boxes lay their children
@@ -53,7 +53,7 @@
 	 *            IVEXElement to which this box corresponds.
 	 */
 	public BlockElementBox(LayoutContext context, BlockBox parent,
-			VEXElement element) {
+			IVEXElement element) {
 		super(context, parent, element);
 	}
 
@@ -127,7 +127,7 @@
 			start = System.currentTimeMillis();
 		}
 
-		VEXElement element = this.getElement();
+		IVEXElement element = this.getElement();
 		int width = this.getWidth();
 
 		List childList = new ArrayList();
@@ -135,7 +135,7 @@
 		StyleSheet ss = context.getStyleSheet();
 
 		// element and styles for generated boxes
-		VEXElement genElement;
+		IVEXElement genElement;
 		Styles genStyles;
 
 		// :before content
@@ -229,7 +229,7 @@
 	/**
 	 * Returns a Drawable that draws a circle-style list item bullet.
 	 */
-	private static InlineBox createCircleBullet(VEXElement element, Styles styles) {
+	private static InlineBox createCircleBullet(IVEXElement element, Styles styles) {
 		final int size = Math.round(0.5f * styles.getFontSize());
 		final int lift = Math.round(0.1f * styles.getFontSize());
 		Drawable drawable = new Drawable() {
@@ -249,7 +249,7 @@
 	/**
 	 * Returns a Drawable that draws a disc-style list item bullet.
 	 */
-	private static InlineBox createDiscBullet(VEXElement element, Styles styles) {
+	private static InlineBox createDiscBullet(IVEXElement element, Styles styles) {
 		final int size = Math.round(0.5f * styles.getFontSize());
 		final int lift = Math.round(0.1f * styles.getFontSize());
 		Drawable drawable = new Drawable() {
@@ -267,7 +267,7 @@
 	/**
 	 * Returns a Drawable that draws a square-style list item bullet.
 	 */
-	private static InlineBox createSquareBullet(VEXElement element, Styles styles) {
+	private static InlineBox createSquareBullet(IVEXElement element, Styles styles) {
 		final int size = Math.round(0.5f * styles.getFontSize());
 		final int lift = Math.round(0.1f * styles.getFontSize());
 		Drawable drawable = new Drawable() {
@@ -307,20 +307,20 @@
 	 * with 1.
 	 */
 	private int getItemNumber() {
-		VEXElement element = this.getElement();
-		VEXElement parent = element.getParent();
+		IVEXElement element = this.getElement();
+		IVEXElement parent = element.getParent();
 
 		if (parent == null) {
 			return 1;
 		}
 
 		int item = 1;
-		List<VEXElement> children = parent.getChildElements();
-		for (int i = 0; i < children.size(); i++) {
-			if (children.get(i).equals(element)) {
+		IVEXElement[] children = parent.getChildElements();
+		for (int i = 0; i < children.length; i++) {
+			if (children[i] == element) {
 				return item;
 			}
-			if (children.get(i).getName().equals(element.getName())) {
+			if (children[i].getName().equals(element.getName())) {
 				item++;
 			}
 		}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockPseudoElementBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockPseudoElementBox.java
index 85617d1..518efd1 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockPseudoElementBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/BlockPseudoElementBox.java
@@ -15,21 +15,21 @@
 import org.eclipse.wst.xml.vex.core.internal.core.IntRange;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Implements a Block
  */
 public class BlockPseudoElementBox extends AbstractBox implements BlockBox {
 
-	private VEXElement pseudoElement;
+	private IVEXElement pseudoElement;
 	private BlockBox parent;
 	private ParagraphBox para;
 
 	private int marginTop;
 	private int marginBottom;
 
-	public BlockPseudoElementBox(LayoutContext context, VEXElement pseudoElement,
+	public BlockPseudoElementBox(LayoutContext context, IVEXElement pseudoElement,
 			BlockBox parent, int width) {
 
 		this.pseudoElement = pseudoElement;
@@ -71,7 +71,7 @@
 	/**
 	 * @see org.eclipse.wst.xml.vex.core.internal.layout.Box#getElement()
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.pseudoElement;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/Box.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/Box.java
index 50a249c..0622619 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/Box.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/Box.java
@@ -13,7 +13,7 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Caret;
 import org.eclipse.wst.xml.vex.core.internal.core.Insets;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Represents a rectangular area in the layout. The height and width of the box
@@ -51,7 +51,7 @@
 	 * is no such box. The box may directly represent the Element, or simply use
 	 * it for formatting information.
 	 */
-	public VEXElement getElement();
+	public IVEXElement getElement();
 
 	/**
 	 * Returns the offset of the end of the content that the box covers.
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DocumentTextBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DocumentTextBox.java
index 458f021..388eb55 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DocumentTextBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DocumentTextBox.java
@@ -16,8 +16,8 @@
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.Text;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * A TextBox that gets its text from the document. Represents text which is
@@ -53,7 +53,7 @@
 	 * @param endOffset
 	 *            end offset of the text
 	 */
-	public DocumentTextBox(LayoutContext context, VEXElement element,
+	public DocumentTextBox(LayoutContext context, IVEXElement element,
 			int startOffset, int endOffset) {
 		super(element);
 
@@ -97,7 +97,7 @@
 	 * @see org.eclipse.wst.xml.vex.core.internal.layout.TextBox#getText()
 	 */
 	public String getText() {
-		VEXDocument doc = this.getElement().getDocument();
+		IVEXDocument doc = this.getElement().getDocument();
 		return doc.getText(this.getStartOffset(), this.getEndOffset() + 1);
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DrawableBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DrawableBox.java
index f115add..647e6ba 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DrawableBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/DrawableBox.java
@@ -18,7 +18,7 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Rectangle;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * An inline box that draws a Drawable object. The drawable is drawn relative to
@@ -32,7 +32,7 @@
 	public static final byte END_MARKER = 2;
 
 	private Drawable drawable;
-	private VEXElement element;
+	private IVEXElement element;
 	private byte marker;
 
 	/**
@@ -43,7 +43,7 @@
 	 * @param element2
 	 *            Element whose styles determine the color of the drawable.
 	 */
-	public DrawableBox(Drawable drawable, VEXElement element2) {
+	public DrawableBox(Drawable drawable, IVEXElement element2) {
 		this(drawable, element2, NO_MARKER);
 	}
 
@@ -59,7 +59,7 @@
 	 *            which marker should be drawn. Must be one of NO_MARKER,
 	 *            START_MARKER, or END_MARKER.
 	 */
-	public DrawableBox(Drawable drawable, VEXElement element2, byte marker) {
+	public DrawableBox(Drawable drawable, IVEXElement element2, byte marker) {
 		this.drawable = drawable;
 		this.element = element2;
 		this.marker = marker;
@@ -78,7 +78,7 @@
 	/**
 	 * Returns the element that controls the styling for this text element.
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.element;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ElementOrRangeCallback.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ElementOrRangeCallback.java
index f37ccd1..9067e6b 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ElementOrRangeCallback.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ElementOrRangeCallback.java
@@ -11,10 +11,10 @@
 package org.eclipse.wst.xml.vex.core.internal.layout;
 
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 public interface ElementOrRangeCallback {
 	public void onElement(Element child, String displayStyle);
 
-	public void onRange(VEXElement parent, int startOffset, int endOffset);
+	public void onRange(IVEXElement parent, int startOffset, int endOffset);
 }
\ No newline at end of file
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/InlineElementBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/InlineElementBox.java
index 0eaebec..cde1127 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/InlineElementBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/InlineElementBox.java
@@ -21,8 +21,8 @@
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.Text;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 
 /**
  * An inline box that represents an inline element. This box is responsible for
@@ -72,7 +72,7 @@
 			}
 
 			// :before content
-			VEXElement beforeElement = context.getStyleSheet().getBeforeElement(
+			IVEXElement beforeElement = context.getStyleSheet().getBeforeElement(
 					element);
 			if (beforeElement != null) {
 				childList.addAll(LayoutUtils.createGeneratedInlines(context,
@@ -99,7 +99,7 @@
 			childList.add(createRightMarker(element, styles));
 
 			// :after content
-			VEXElement afterElement = context.getStyleSheet().getAfterElement(
+			IVEXElement afterElement = context.getStyleSheet().getAfterElement(
 					element);
 			if (afterElement != null) {
 				childList.addAll(LayoutUtils.createGeneratedInlines(context,
@@ -267,14 +267,14 @@
 	 * @return
 	 */
 	static InlineBoxes createInlineBoxes(LayoutContext context,
-			VEXElement element2, int startOffset, int endOffset) {
+			IVEXElement element2, int startOffset, int endOffset) {
 
 		InlineBoxes result = new InlineBoxes();
 
-		List<VEXNode> nodes = element2.getChildNodes();
-		for (int i = 0; i < nodes.size(); i++) {
+		IVEXNode[] nodes = element2.getChildNodes();
+		for (int i = 0; i < nodes.length; i++) {
 
-			VEXNode node = nodes.get(i);
+			IVEXNode node = nodes[i];
 			InlineBox child;
 
 			if (node.getStartOffset() >= endOffset) {
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutContext.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutContext.java
index 28a8f1e..76c1360 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutContext.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutContext.java
@@ -13,8 +13,8 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Graphics;
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheet;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Encapsulation of all the resources needed to create a box tree. Most
@@ -24,7 +24,7 @@
 public class LayoutContext {
 
 	private BoxFactory boxFactory;
-	private VEXDocument document;
+	private IVEXDocument document;
 	private Graphics graphics;
 	private StyleSheet styleSheet;
 	private int selectionStart;
@@ -47,7 +47,7 @@
 	/**
 	 * Returns the document being layed out.
 	 */
-	public VEXDocument getDocument() {
+	public IVEXDocument getDocument() {
 		return document;
 	}
 
@@ -82,7 +82,7 @@
 	 *            Element to test. May be null, in which case this method
 	 *            returns false.
 	 */
-	public boolean isElementSelected(VEXElement element) {
+	public boolean isElementSelected(IVEXElement element) {
 		return element != null
 				&& element.getStartOffset() >= this.getSelectionStart()
 				&& element.getEndOffset() + 1 <= this.getSelectionEnd();
@@ -105,7 +105,7 @@
 	/**
 	 * Sets the document being layed out.
 	 */
-	public void setDocument(VEXDocument document) {
+	public void setDocument(IVEXDocument document) {
 		this.document = document;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutUtils.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutUtils.java
index 203c26c..934ee7e 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutUtils.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutUtils.java
@@ -21,8 +21,8 @@
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheet;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 
 /**
  * Tools for layout and rendering of CSS-styled boxes
@@ -38,7 +38,7 @@
 	 *            Element representing the generated content.
 	 */
 	public static List createGeneratedInlines(LayoutContext context,
-			VEXElement pseudoElement) {
+			IVEXElement pseudoElement) {
 		String text = getGeneratedContent(context, pseudoElement);
 		List list = new ArrayList();
 		if (text.length() > 0) {
@@ -78,7 +78,7 @@
 	 *            returned.
 	 */
 	private static String getGeneratedContent(LayoutContext context,
-			VEXElement pseudoElement) {
+			IVEXElement pseudoElement) {
 		Styles styles = context.getStyleSheet().getStyles(pseudoElement);
 		List content = styles.getContent();
 		StringBuffer sb = new StringBuffer();
@@ -111,19 +111,19 @@
 	 *            matching elements and non-matching ranges.
 	 */
 	public static void iterateChildrenByDisplayStyle(StyleSheet styleSheet,
-			Set displayStyles, VEXElement element, int startOffset, int endOffset,
+			Set displayStyles, IVEXElement element, int startOffset, int endOffset,
 			ElementOrRangeCallback callback) {
 
 		List nonMatching = new ArrayList();
 
-		List<VEXNode>nodes = element.getChildNodes();
-		for (int i = 0; i < nodes.size(); i++) {
-			if (nodes.get(i).getEndOffset() <= startOffset) {
+		IVEXNode[] nodes = element.getChildNodes();
+		for (int i = 0; i < nodes.length; i++) {
+			if (nodes[i].getEndOffset() <= startOffset) {
 				continue;
-			} else if (nodes.get(i).getStartOffset() >= endOffset) {
+			} else if (nodes[i].getStartOffset() >= endOffset) {
 				break;
 			} else {
-				VEXNode node = nodes.get(i);
+				IVEXNode node = nodes[i];
 
 				if (node instanceof Element) {
 					Element childElement = (Element) node;
@@ -131,8 +131,8 @@
 							.getDisplay();
 					if (displayStyles.contains(display)) {
 						if (nonMatching.size() > 0) {
-							VEXNode firstNode = (VEXNode) nonMatching.get(0);
-							VEXNode lastNode = (VEXNode) nonMatching.get(nonMatching
+							IVEXNode firstNode = (IVEXNode) nonMatching.get(0);
+							IVEXNode lastNode = (IVEXNode) nonMatching.get(nonMatching
 									.size() - 1);
 							if (lastNode instanceof Element) {
 								callback.onRange(element, firstNode
@@ -156,8 +156,8 @@
 		}
 
 		if (nonMatching.size() > 0) {
-			VEXNode firstNode = (VEXNode) nonMatching.get(0);
-			VEXNode lastNode = (VEXNode) nonMatching.get(nonMatching.size() - 1);
+			IVEXNode firstNode = (IVEXNode) nonMatching.get(0);
+			IVEXNode lastNode = (IVEXNode) nonMatching.get(nonMatching.size() - 1);
 			if (lastNode instanceof Element) {
 				callback.onRange(element, firstNode.getStartOffset(), lastNode
 						.getEndOffset() + 1);
@@ -185,7 +185,7 @@
 	 *            matching elements and non-matching ranges.
 	 */
 	public static void iterateChildrenByDisplayStyle(StyleSheet styleSheet,
-			Set displayStyles, VEXElement table, ElementOrRangeCallback callback) {
+			Set displayStyles, IVEXElement table, ElementOrRangeCallback callback) {
 		iterateChildrenByDisplayStyle(styleSheet, displayStyles, table,
 				table.getStartOffset() + 1, table.getEndOffset(), callback);
 	}
@@ -199,13 +199,13 @@
 	 * @param element
 	 *            Element to test.
 	 */
-	public static boolean isTableChild(StyleSheet styleSheet, VEXElement element) {
+	public static boolean isTableChild(StyleSheet styleSheet, IVEXElement element) {
 		String display = styleSheet.getStyles(element).getDisplay();
 		return TABLE_CHILD_STYLES.contains(display);
 	}
 
 	public static void iterateTableRows(final StyleSheet styleSheet,
-			final VEXElement element, int startOffset, int endOffset,
+			final IVEXElement element, int startOffset, int endOffset,
 			final ElementOrRangeCallback callback) {
 
 		iterateChildrenByDisplayStyle(styleSheet, nonRowStyles, element,
@@ -225,7 +225,7 @@
 						}
 					}
 
-					public void onRange(VEXElement parent, int startOffset,
+					public void onRange(IVEXElement parent, int startOffset,
 							int endOffset) {
 						// iterate over rows in range
 						iterateChildrenByDisplayStyle(styleSheet, rowStyles,
@@ -236,14 +236,14 @@
 	}
 
 	public static void iterateTableCells(StyleSheet styleSheet,
-			VEXElement element, int startOffset, int endOffset,
+			IVEXElement element, int startOffset, int endOffset,
 			final ElementOrRangeCallback callback) {
 		iterateChildrenByDisplayStyle(styleSheet, cellStyles, element,
 				startOffset, endOffset, callback);
 	}
 
 	public static void iterateTableCells(StyleSheet styleSheet,
-			VEXElement row, final ElementOrRangeCallback callback) {
+			IVEXElement row, final ElementOrRangeCallback callback) {
 		iterateChildrenByDisplayStyle(styleSheet, cellStyles, row, row
 				.getStartOffset(), row.getEndOffset(), callback);
 	}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LineBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LineBox.java
index 0943580..408291a 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LineBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/LineBox.java
@@ -11,14 +11,14 @@
 package org.eclipse.wst.xml.vex.core.internal.layout;
 
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Represents a line of text and inline images.
  */
 public class LineBox extends CompositeInlineBox {
 
-	private VEXElement element;
+	private IVEXElement element;
 	private InlineBox[] children;
 	private InlineBox firstContentChild = null;
 	private InlineBox lastContentChild = null;
@@ -32,7 +32,7 @@
 	 * @param children
 	 *            InlineBoxes that make up this line.
 	 */
-	public LineBox(LayoutContext context, VEXElement element, InlineBox[] children) {
+	public LineBox(LayoutContext context, IVEXElement element, InlineBox[] children) {
 
 		this.element = element;
 		this.children = children;
@@ -73,7 +73,7 @@
 	/**
 	 * @see org.eclipse.wst.xml.vex.core.internal.layout.Box#getElement()
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.element;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ParagraphBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ParagraphBox.java
index 0860b07..2d1bf69 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ParagraphBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/ParagraphBox.java
@@ -19,7 +19,7 @@
 import org.eclipse.wst.xml.vex.core.internal.css.CSS;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * A box that wraps inline content into a paragraph.
@@ -61,7 +61,7 @@
 	 *            width to which the paragraph is to be wrapped
 	 * @return
 	 */
-	public static ParagraphBox create(LayoutContext context, VEXElement element,
+	public static ParagraphBox create(LayoutContext context, IVEXElement element,
 			List inlines, int width) {
 		InlineBox[] array = (InlineBox[]) inlines.toArray(new InlineBox[inlines
 				.size()]);
@@ -81,7 +81,7 @@
 	 * @param width
 	 *            width to which the paragraph is to be wrapped.
 	 */
-	public static ParagraphBox create(LayoutContext context, VEXElement element,
+	public static ParagraphBox create(LayoutContext context, IVEXElement element,
 			InlineBox[] inlines, int width) {
 
 		// lines is the list of LineBoxes we are creating
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/PlaceholderBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/PlaceholderBox.java
index 160de63..0d39604 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/PlaceholderBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/PlaceholderBox.java
@@ -16,14 +16,14 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Graphics;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * A zero-width box that represents a single offset in the document.
  */
 public class PlaceholderBox extends AbstractBox implements InlineBox {
 
-	private VEXElement element;
+	private IVEXElement element;
 	private int relOffset;
 	private int textTop;
 	private int baseline;
@@ -41,7 +41,7 @@
 	 *            Offset of the placeholder, relative to the start of the
 	 *            element.
 	 */
-	public PlaceholderBox(LayoutContext context, VEXElement element2, int relOffset) {
+	public PlaceholderBox(LayoutContext context, IVEXElement element2, int relOffset) {
 
 		this.element = element2;
 		this.relOffset = relOffset;
@@ -90,7 +90,7 @@
 	/**
 	 * @see org.eclipse.wst.xml.vex.core.internal.layout.Box#getElement()
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.element;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/RootBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/RootBox.java
index 7dae1a3..0c11350 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/RootBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/RootBox.java
@@ -16,7 +16,7 @@
 import org.eclipse.wst.xml.vex.core.internal.core.IntRange;
 import org.eclipse.wst.xml.vex.core.internal.core.Rectangle;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * A wrapper for the top level <code>BlockElementBox</code> that applies its
@@ -24,7 +24,7 @@
  */
 public class RootBox extends AbstractBox implements BlockBox {
 
-	private VEXElement element;
+	private IVEXElement element;
 	private BlockElementBox childBox;
 	private Box[] children = new Box[1];
 
@@ -38,7 +38,7 @@
 	 * @param width
 	 *            width of this box
 	 */
-	public RootBox(LayoutContext context, VEXElement element, int width) {
+	public RootBox(LayoutContext context, IVEXElement element, int width) {
 		this.element = element;
 		this.setWidth(width);
 
@@ -68,7 +68,7 @@
 	/**
 	 * @see org.eclipse.wst.xml.vex.core.internal.layout.Box#getElement()
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.element;
 	}
 
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/StaticTextBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/StaticTextBox.java
index c7f86b2..87978cb 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/StaticTextBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/StaticTextBox.java
@@ -15,7 +15,7 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Graphics;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * A TextBox representing a static string. Represents text which is not editable
@@ -40,7 +40,7 @@
 	 * @param text
 	 *            Static text to display
 	 */
-	public StaticTextBox(LayoutContext context, VEXElement element, String text) {
+	public StaticTextBox(LayoutContext context, IVEXElement element, String text) {
 		this(context, element, text, NO_MARKER);
 		if (text.length() == 0) {
 			throw new IllegalArgumentException(
@@ -65,7 +65,7 @@
 	 *            represents the start sentinel or the end sentinel of the
 	 *            element
 	 */
-	public StaticTextBox(LayoutContext context, VEXElement element, String text,
+	public StaticTextBox(LayoutContext context, IVEXElement element, String text,
 			byte marker) {
 		super(element);
 		this.text = text;
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBodyBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBodyBox.java
index 4d3ec81..df8748e 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBodyBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBodyBox.java
@@ -19,7 +19,7 @@
 import org.eclipse.wst.xml.vex.core.internal.css.CSS;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * An anonymous box that contains the table row groups for a table. This box is
@@ -49,7 +49,7 @@
 								TableBodyBox.this, child));
 					}
 
-					public void onRange(VEXElement parent, int startOffset,
+					public void onRange(IVEXElement parent, int startOffset,
 							int endOffset) {
 						children.add(new TableRowGroupBox(context,
 								TableBodyBox.this, startOffset, endOffset));
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBox.java
index 7ed2165..2ea6283 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableBox.java
@@ -21,7 +21,7 @@
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheet;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Box that lays out a table.
@@ -60,7 +60,7 @@
 								TableBox.this, child));
 					}
 
-					public void onRange(VEXElement parent, int startOffset,
+					public void onRange(IVEXElement parent, int startOffset,
 							int endOffset) {
 						children.add(new TableBodyBox(context, TableBox.this,
 								startOffset, endOffset));
@@ -149,7 +149,7 @@
 			this.count++;
 		}
 
-		public void onRange(VEXElement parent, int startOffset, int endOffset) {
+		public void onRange(IVEXElement parent, int startOffset, int endOffset) {
 			this.count++;
 		}
 
@@ -162,7 +162,7 @@
 	 */
 	private int computeColumnCount(LayoutContext context) {
 
-		VEXElement tableElement = this.findContainingElement();
+		IVEXElement tableElement = this.findContainingElement();
 		final int[] columnCounts = new int[1]; // work around Java's insistence
 												// on final
 		columnCounts[0] = 0;
@@ -179,7 +179,7 @@
 						callback.reset();
 					}
 
-					public void onRange(VEXElement parent, int startOffset,
+					public void onRange(IVEXElement parent, int startOffset,
 							int endOffset) {
 						LayoutUtils.iterateTableCells(styleSheet, parent,
 								startOffset, endOffset, callback);
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowBox.java
index c419b30..d8872ab 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowBox.java
@@ -16,7 +16,7 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Caret;
 import org.eclipse.wst.xml.vex.core.internal.core.Insets;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Box representing a row in a table.
@@ -37,7 +37,7 @@
 
 		final List children = new ArrayList();
 
-		VEXElement element = this.findContainingElement();
+		IVEXElement element = this.findContainingElement();
 		final int[] widths = this.getTableBox().getColumnWidths();
 
 		LayoutUtils.iterateTableCells(context.getStyleSheet(), element, this
@@ -50,7 +50,7 @@
 								TableRowBox.this, child, widths[column++]));
 					}
 
-					public void onRange(VEXElement parent, int startOffset,
+					public void onRange(IVEXElement parent, int startOffset,
 							int endOffset) {
 						children.add(new TableCellBox(context,
 								TableRowBox.this, startOffset, endOffset,
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowGroupBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowGroupBox.java
index 14d4ace..846800d 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowGroupBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TableRowGroupBox.java
@@ -19,7 +19,7 @@
 import org.eclipse.wst.xml.vex.core.internal.css.CSS;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * Container for TableRowBox objects. May correspond to an element with
@@ -77,7 +77,7 @@
 								TableRowGroupBox.this, child));
 					}
 
-					public void onRange(VEXElement parent, int startOffset,
+					public void onRange(IVEXElement parent, int startOffset,
 							int endOffset) {
 						children.add(new TableRowBox(context,
 								TableRowGroupBox.this, startOffset, endOffset));
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TextBox.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TextBox.java
index f538c92..98a7aee 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TextBox.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/layout/TextBox.java
@@ -18,7 +18,7 @@
 import org.eclipse.wst.xml.vex.core.internal.core.Graphics;
 import org.eclipse.wst.xml.vex.core.internal.css.Styles;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 /**
  * An inline box containing text. The <code>getText</code> and
@@ -27,7 +27,7 @@
  */
 public abstract class TextBox extends AbstractBox implements InlineBox {
 
-	private VEXElement element;
+	private IVEXElement element;
 	private int baseline;
 
 	public static final char NEWLINE_CHAR = 0xa;
@@ -40,7 +40,7 @@
 	 *            Element containing the text. This is used for styling
 	 *            information.
 	 */
-	public TextBox(VEXElement element) {
+	public TextBox(IVEXElement element) {
 		this.element = element;
 	}
 
@@ -98,7 +98,7 @@
 	/**
 	 * Returns the element that controls the styling for this text element.
 	 */
-	public VEXElement getElement() {
+	public IVEXElement getElement() {
 		return this.element;
 	}
 
@@ -142,7 +142,7 @@
 		Graphics g = context.getGraphics();
 
 		boolean inSelectedBlock = false;
-		VEXElement e = this.getElement();
+		IVEXElement e = this.getElement();
 		while (e != null) {
 			Styles styles = context.getStyleSheet().getStyles(e);
 			if (styles.isBlock()) {
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Content.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IContent.java
similarity index 95%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Content.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IContent.java
index 24f02d8..7c46787 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Content.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IContent.java
@@ -17,7 +17,7 @@
  * 
  * @model
  */
-public interface Content {
+public interface IContent {
 
 	/**
 	 * Creates a new Position object at the given initial offset.
@@ -26,7 +26,7 @@
 	 *            initial offset of the position
 	 * @model
 	 */
-	public Position createPosition(int offset);
+	public IPosition createPosition(int offset);
 
 	/**
 	 * Insert a string into the content.
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Position.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IPosition.java
similarity index 96%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Position.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IPosition.java
index 4323a2e..e75a8fd 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Position.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IPosition.java
@@ -16,7 +16,7 @@
  * character offset in the document.
  * @model
  */
-public interface Position {
+public interface IPosition {
 
 	/**
 	 * Returns the character offset corresponding to the position.
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXDocument.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXDocument.java
similarity index 89%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXDocument.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXDocument.java
index ce220ee..17f998b 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXDocument.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXDocument.java
@@ -3,14 +3,13 @@
 import org.eclipse.wst.xml.vex.core.internal.dom.DocumentEvent;
 import org.eclipse.wst.xml.vex.core.internal.dom.DocumentListener;
 import org.eclipse.wst.xml.vex.core.internal.dom.DocumentValidationException;
-import java.util.List;
 
 /**
  * 
  * @author dcarver
- * @model name="Document"
+ * @model
  */
-public interface VEXDocument {
+public interface IVEXDocument {
 
 	/**
 	 * Adds a document listener to the list of listeners to be notified of
@@ -18,7 +17,7 @@
 	 * 
 	 * @param listener
 	 *            <code>DocumentListener</code> to add.
-	 * 
+	 * @model
 	 */
 	public void addDocumentListener(DocumentListener listener);
 
@@ -32,7 +31,7 @@
 	 *            fragment to be inserted
 	 * @model
 	 */
-	public boolean canInsertFragment(int offset, VEXDocumentFragment fragment);
+	public boolean canInsertFragment(int offset, IVEXDocumentFragment fragment);
 
 	/**
 	 * Returns true if text can be inserted at the given offset.
@@ -50,7 +49,7 @@
 	 *            initial character offset of the position
 	 * @model
 	 */
-	public Position createPosition(int offset);
+	public IPosition createPosition(int offset);
 
 	/**
 	 * Deletes a portion of the document. No element may straddle the deletion
@@ -76,7 +75,7 @@
 	 *            the second offset
 	 * @model
 	 */
-	public VEXElement findCommonElement(int offset1, int offset2);
+	public IVEXElement findCommonElement(int offset1, int offset2);
 
 	/**
 	 * Returns the character at the given offset.
@@ -91,7 +90,7 @@
 	 * 
 	 * @model
 	 */
-	public VEXElement getElementAt(int offset);
+	public IVEXElement getElementAt(int offset);
 
 	/**
 	 * Returns the encoding used for this document, or null if no encoding has
@@ -109,7 +108,7 @@
 	 * 
 	 * @model
 	 */
-	public VEXDocumentFragment getFragment(int startOffset, int endOffset);
+	public IVEXDocumentFragment getFragment(int startOffset, int endOffset);
 
 	/**
 	 * Returns the length of the document in characters, including the null
@@ -128,9 +127,9 @@
 	 *            the offset at which the sequence begins
 	 * @param endOffset
 	 *            the offset at which the sequence ends
-	 * @model
+	 * @model containment="true"
 	 */
-	public List<String> getNodeNames(int startOffset, int endOffset);
+	public String[] getNodeNames(int startOffset, int endOffset);
 
 	/**
 	 * Returns an array of Nodes representing the selected range. The given
@@ -141,9 +140,9 @@
 	 * @param endOffset
 	 *            the offset at which the sequence ends
 	 * 
-	 * @model 
+	 * @model type="IVEXNode" containment="true"
 	 */
-	public List<VEXNode> getNodes(int startOffset, int endOffset);
+	public IVEXNode[] getNodes(int startOffset, int endOffset);
 
 
 	/**
@@ -163,7 +162,7 @@
 	 * 
 	 * @model
 	 */
-	public VEXElement getRootElement();
+	public IVEXElement getRootElement();
 
 
 	/**
@@ -185,7 +184,7 @@
 	 * 
 	 * @model
 	 */
-	public Validator getValidator();
+	public IValidator getValidator();
 
 	/**
 	 * Inserts an element at the given position.
@@ -201,7 +200,7 @@
 	 *             if the change would result in an invalid document.
 	 * @model
 	 */
-	public void insertElement(int offset, VEXElement defaults)
+	public void insertElement(int offset, IVEXElement defaults)
 			throws DocumentValidationException;
 
 	/**
@@ -218,7 +217,7 @@
 	 *             if the change would result in an invalid document.
 	 * @model
 	 */
-	public void insertFragment(int offset, VEXDocumentFragment fragment)
+	public void insertFragment(int offset, IVEXDocumentFragment fragment)
 			throws DocumentValidationException;
 
 	/**
@@ -243,7 +242,7 @@
 	 * Returns true if undo is enabled, that is, undoable edit events are fired
 	 * to registered listeners.
 	 * 
-	 * 
+	 * @model
 	 */
 	public boolean isUndoEnabled();
 
@@ -253,7 +252,7 @@
 	 * 
 	 * @param listener
 	 *            <code>DocumentListener</code> to remove.
-	 * 
+	 * @model
 	 */
 	public void removeDocumentListener(DocumentListener listener);
 
@@ -304,13 +303,12 @@
 	 *            Validator to use for this document.
 	 * 
 	 */
-	public void setValidator(Validator validator);
+	public void setValidator(IValidator validator);
 
 	/**
 	 * @param documentEvent
-	 * 
+	 * @model
 	 */
 	public void fireAttributeChanged(DocumentEvent documentEvent);
-	
 
 }
\ No newline at end of file
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXDocumentFragment.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXDocumentFragment.java
similarity index 76%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXDocumentFragment.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXDocumentFragment.java
index 9d2ddca..0cb9acf 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXDocumentFragment.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXDocumentFragment.java
@@ -1,11 +1,10 @@
 package org.eclipse.wst.xml.vex.core.internal.provisional.dom;
 
-import java.util.List;
 
 /**
  * @model
  */
-public interface VEXDocumentFragment {
+public interface IVEXDocumentFragment {
 
 	/**
 	 * Mime type representing document fragments: "text/x-vex-document-fragment"
@@ -18,7 +17,7 @@
 	 * 
 	 * @model
 	 */
-	public  Content getContent();
+	public  IContent getContent();
 
 	/**
 	 * Returns the number of characters, including sentinels, represented by the
@@ -31,9 +30,9 @@
 	/**
 	 * Returns the elements that make up this fragment.
 	 * 
-	 * @model 
+	 * @model type="IVEXElement" containment="true"
 	 */
-	public  List<VEXElement> getElements();
+	public  IVEXElement[] getElements();
 
 	/**
 	 * Returns an array of element names and Validator.PCDATA representing the
@@ -41,14 +40,14 @@
 	 * 
 	 * @model 
 	 */
-	public  List<String> getNodeNames();
+	public  String[] getNodeNames();
 
 	/**
 	 * Returns the nodes that make up this fragment, including elements and
 	 * <code>Text</code> objects.
 	 * 
-	 * @model 
+	 * @model type="IVEXNode"
 	 */
-	public  List<VEXNode> getNodes();
+	public  IVEXNode[] getNodes();
 
 }
\ No newline at end of file
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXElement.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXElement.java
similarity index 79%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXElement.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXElement.java
index d105096..f0c3c4e 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXElement.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXElement.java
@@ -1,7 +1,6 @@
 package org.eclipse.wst.xml.vex.core.internal.provisional.dom;
 
 import java.util.Iterator;
-import java.util.List;
 
 import org.eclipse.wst.xml.vex.core.internal.dom.DocumentValidationException;
 
@@ -11,7 +10,7 @@
  * 
  * @model
  */
-public interface VEXElement extends VEXNode {
+public interface IVEXElement extends IVEXNode {
 
 	/**
 	 * Adds the given child to the end of the child list. Sets the parent
@@ -19,7 +18,7 @@
 	 * 
 	 * @model
 	 */
-	public void addChild(VEXElement child);
+	public void addChild(IVEXElement child);
 
 	/**
 	 * Clones the element and its attributes. The returned element has no parent
@@ -44,38 +43,38 @@
 	 * 
 	 * @model 
 	 */
-	public List<String> getAttributeNames();
+	public String[] getAttributeNames();
 
 	/**
 	 * Returns an iterator over the children. Used by
 	 * <code>Document.delete</code> to safely delete children.
 	 * 
-	 *   
+	 * @model type="IVEXElement" containment="true"
 	 */
-	public Iterator<VEXElement> getChildIterator();
+	public Iterator getChildIterator();
 
 	/**
 	 * Returns an array of the elements children.
 	 * 
-	 * @model 
+	 * @model type="IVEXElement" containment="true"
 	 */
-	public List<VEXElement> getChildElements();
+	public IVEXElement[] getChildElements();
 
 	/**
 	 * Returns an array of nodes representing the content of this element. The
 	 * array includes child elements and runs of text returned as
 	 * <code>Text</code> objects.
 	 * 
-	 * @model  
+	 * @model type="IVEXNode" containment="true"
 	 */
-	public List<VEXNode> getChildNodes();
+	public IVEXNode[] getChildNodes();
 
 	/**
 	 * @return The document to which this element belongs. Returns null if this
 	 *         element is part of a document fragment.
 	 * @model
 	 */
-	public VEXDocument getDocument();
+	public IVEXDocument getDocument();
 
 	/**
 	 * Returns the name of the element.
@@ -116,9 +115,9 @@
 	/**
 	 * Returns the parent of this element, or null if this is the root element.
 	 * 
-	 * @model
+	 * @model type="IVEXElement"
 	 */
-	public VEXElement getParent();
+	public IVEXElement getParent();
 
 	/**
 	 * Sets the parent of this element.
@@ -127,12 +126,12 @@
 	 *            Parent element.
 	 * 
 	 */
-	public void setParent(VEXElement parent);
+	public void setParent(IVEXElement parent);
 
 	/**
 	 * 
 	 * @return
-	 * 
+	 * @model
 	 */
 	public String toString();
 
@@ -143,7 +142,7 @@
 	 * @param i
 	 * @model
 	 */
-	public void setContent(Content content, int offset, int i);
+	public void setContent(IContent content, int offset, int i);
 
 	/**
 	 * 
@@ -151,6 +150,6 @@
 	 * @param child
 	 * @model
 	 */
-	public void insertChild(int index, VEXElement child);
+	public void insertChild(int index, IVEXElement child);
 
 }
\ No newline at end of file
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXNode.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXNode.java
similarity index 63%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXNode.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXNode.java
index 151587e..2825d2a 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/VEXNode.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IVEXNode.java
@@ -4,7 +4,7 @@
 /**
  * @model
  */
-public interface VEXNode {
+public interface IVEXNode {
 
 	/**
 	 * Returns the document associated with this node. Null if the node has not
@@ -12,7 +12,7 @@
 	 * 
 	 * @model
 	 */
-	public  Content getContent();
+	public  IContent getContent();
 
 	/**
 	 * Returns the character offset corresponding to the end of the node.
@@ -26,7 +26,7 @@
 	 * 
 	 * @model
 	 */
-	public  Position getEndPosition();
+	public  IPosition getEndPosition();
 
 	/**
 	 * Returns the character offset corresponding to the start of the node.
@@ -40,7 +40,7 @@
 	 * 
 	 * @model
 	 */
-	public  Position getStartPosition();
+	public  IPosition getStartPosition();
 
 	/**
 	 * Returns the text contained by this node. If this node is an element, the
@@ -49,28 +49,5 @@
 	 * @model
 	 */
 	public  String getText();
-	
-	/**
-	 * Returns the namespace.
-	 * @model
-	 */
-	public String getNamespace();
-	
-	/**
-	 * Returns the namespace
-	 * @model
-	 */
-	public String getNamespacePrefix();
-	
-	/**
-	 * Sets the namespace.
-	 * @param namespace
-	 */
-	public void setNamespace(String namespace);
-	
-	/**
-	 * Sets the namespace prefix.
-	 * @param prefix
-	 */
-	public void setNamespacePrefix(String prefix);
+
 }
\ No newline at end of file
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Validator.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IValidator.java
similarity index 89%
rename from sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Validator.java
rename to sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IValidator.java
index d920b87..d83fe31 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/Validator.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IValidator.java
@@ -12,7 +12,6 @@
 
 import java.io.Serializable;
 import java.util.Set;
-import java.util.List;
 
 import org.eclipse.wst.xml.vex.core.internal.validator.AttributeDefinition;
 
@@ -21,7 +20,7 @@
  * Validators must be serializable.
  * @model
  */
-public interface Validator extends Serializable {
+public interface IValidator extends Serializable {
 
 	/**
 	 * String indicating that character data is allowed at the given point in
@@ -54,7 +53,7 @@
 	/**
 	 * Returns a set of Strings representing valid root elements for the given
 	 * document type.
-	 * @model type="VEXElement" containment="true"
+	 * @model type="IVEXElement" containment="true"
 	 */
 	public Set getValidRootElements();
 
@@ -73,7 +72,7 @@
 	 *            point
 	 * @model type="String" containment="true"
 	 */
-	public Set<String> getValidItems(String element, List<String> prefix, List<String> suffix);
+	public Set getValidItems(String element, String[] prefix, String[] suffix);
 
 	/**
 	 * Returns true if the given sequence is valid for the given element.
@@ -88,7 +87,7 @@
 	 *            If true, an valid but incomplete sequence is acceptable.
 	 * @model
 	 */
-	public boolean isValidSequence(String element, List<String> nodes,
+	public boolean isValidSequence(String element, String[] nodes,
 			boolean partial);
 
 	/**
@@ -110,7 +109,7 @@
 	 *            If true, an valid but incomplete sequence is acceptable.
 	 * @model
 	 */
-	public boolean isValidSequence(String element, List<String> seq1,
-			List<String> seq2, List<String> seq3, boolean partial);
+	public boolean isValidSequence(String element, String[] seq1,
+			String[] seq2, String[] seq3, boolean partial);
 
 }
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IWhitespacePolicy.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IWhitespacePolicy.java
index 51afacd..06fdec2 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IWhitespacePolicy.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/provisional/dom/IWhitespacePolicy.java
@@ -24,7 +24,7 @@
 	 * @param element
 	 *            Element to test.
 	 */
-	public boolean isBlock(VEXElement element);
+	public boolean isBlock(IVEXElement element);
 
 	/**
 	 * Returns true if the given element is pre-formatted, that is, all of its
@@ -33,5 +33,5 @@
 	 * @param element
 	 *            Element to test.
 	 */
-	public boolean isPre(VEXElement element);
+	public boolean isPre(IVEXElement element);
 }
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/AbstractValidator.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/AbstractValidator.java
index a5db076..a2ed51a 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/AbstractValidator.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/AbstractValidator.java
@@ -13,48 +13,48 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 
 /**
  * Partial implementation of the Validator interface.
  */
-public abstract class AbstractValidator implements Validator {
+public abstract class AbstractValidator implements IValidator {
 
 	/**
-	 * @see Validator#isValidSequence
+	 * @see IValidator#isValidSequence
 	 */
-	public boolean isValidSequence(String element, List<String> seq1,
-			List<String> seq2, List<String> seq3, boolean partial) {
+	public boolean isValidSequence(String element, String[] seq1,
+			String[] seq2, String[] seq3, boolean partial) {
 
 		List list = new ArrayList();
-		for (int i = 0; i < seq1.size(); i++) {
-			list.add(seq1.get(i));
+		for (int i = 0; i < seq1.length; i++) {
+			list.add(seq1[i]);
 		}
 		if (seq2 != null) {
-			for (int i = 0; i < seq2.size(); i++) {
-				if (i == 0 && seq2.get(i).equals(Validator.PCDATA)
+			for (int i = 0; i < seq2.length; i++) {
+				if (i == 0 && seq2[i].equals(IValidator.PCDATA)
 						&& list.size() > 0
-						&& list.get(list.size() - 1).equals(Validator.PCDATA)) {
+						&& list.get(list.size() - 1).equals(IValidator.PCDATA)) {
 					// Avoid consecutive PCDATA's
 					continue;
 				}
-				list.add(seq2.get(i));
+				list.add(seq2[i]);
 			}
 		}
 		if (seq3 != null) {
-			for (int i = 0; i < seq3.size(); i++) {
-				if (i == 0 && seq3.get(i).equals(Validator.PCDATA)
+			for (int i = 0; i < seq3.length; i++) {
+				if (i == 0 && seq3[i].equals(IValidator.PCDATA)
 						&& list.size() > 0
-						&& list.get(list.size() - 1).equals(Validator.PCDATA)) {
+						&& list.get(list.size() - 1).equals(IValidator.PCDATA)) {
 					// Avoid consecutive PCDATA's
 					continue;
 				}
-				list.add(seq3.get(i));
+				list.add(seq3[i]);
 			}
 		}
 
-		
-		return this.isValidSequence(element, list, partial);
+		String[] nodes = (String[]) list.toArray(new String[list.size()]);
+		return this.isValidSequence(element, nodes, partial);
 	}
 
 }
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/DTDValidator.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/DTDValidator.java
index 2b3fcfa..8baa35e 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/DTDValidator.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/DTDValidator.java
@@ -13,13 +13,11 @@
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -34,7 +32,7 @@
 import org.eclipse.wst.xml.core.internal.contentmodel.ContentModelManager;
 import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
 import org.eclipse.wst.xml.core.internal.modelquery.ModelQueryUtil;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 import org.eclipse.wst.xml.vex.core.internal.validator.AttributeDefinition.Type;
 import org.eclipse.wst.xml.vex.core.internal.validator.DFABuilder.Node;
 
@@ -58,8 +56,6 @@
 
 	// map element names to maps of attribute name to attribute def
 	private Map attributeMaps = new HashMap();
-	
-	private static CMDocument contentModel;
 
 	/**
 	 * Creates a instance of DtdValidator given a URL.
@@ -75,7 +71,7 @@
 		ContentModelManager contentModelManager = ContentModelManager
 				.getInstance();
 		String resolved = url.toString();
-		contentModel = contentModelManager.createCMDocument(
+		CMDocument contentModel = contentModelManager.createCMDocument(
 				resolved, null);
 
 		DTDValidator validator = new DTDValidator();
@@ -135,7 +131,7 @@
 
 		validator.anySet = new HashSet();
 		validator.anySet.addAll(validator.elementDFAs.keySet());
-		validator.anySet.add(Validator.PCDATA);
+		validator.anySet.add(IValidator.PCDATA);
 
 		return validator;
 	}
@@ -155,25 +151,12 @@
 		}
 	}
 
-//	public Set getValidRootElements() {
-//		return this.elementDFAs.keySet();
-//	}
-	
-	@SuppressWarnings({ "unchecked", "restriction" })
 	public Set getValidRootElements() {
-		Set results = new HashSet();
-		
-		Iterator iterator = contentModel.getElements().iterator();
-		while (iterator.hasNext()) {
-			CMElementDeclaration element = (CMElementDeclaration) iterator.next();
-			results.add(element.getElementName());
-		}
-		return results;
+		return this.elementDFAs.keySet();
 	}
-	
 
-	/** @see Validator#getValidItems */
-	public Set<String> getValidItems(String element, List<String> prefix, List<String> suffix) {
+	/** @see IValidator#getValidItems */
+	public Set getValidItems(String element, String[] prefix, String[] suffix) {
 
 		// First, get a set of candidates. We'll later test to see if each is
 		// valid to insert here.
@@ -191,11 +174,11 @@
 		} else {
 			// If the last transition was due to PCDATA, adding more PCDATA
 			// is also valid
-			if (prefix.size() > 0
-					&& prefix.get(prefix.size() - 1).equals(Validator.PCDATA)) {
+			if (prefix.length > 0
+					&& prefix[prefix.length - 1].equals(IValidator.PCDATA)) {
 				candidates = new HashSet();
 				candidates.addAll(target.getValidSymbols());
-				candidates.add(Validator.PCDATA);
+				candidates.add(IValidator.PCDATA);
 			} else {
 				candidates = target.getValidSymbols();
 			}
@@ -210,20 +193,13 @@
 		if (candidates.isEmpty()) {
 			return Collections.EMPTY_SET;
 		}
-		
-		List<String> listSeq1 = new ArrayList<String>(prefix.size());
-		listSeq1.addAll(prefix);
-
-		List<String> listSeq2 = new ArrayList<String>(suffix.size());
-		listSeq2.addAll(suffix);
-		
 
 		Set results = new HashSet();
-		List<String> middle = new ArrayList<String>(1);
+		String[] middle = new String[1];
 		for (Iterator iter = candidates.iterator(); iter.hasNext();) {
-			middle.add(0, (String) iter.next());
-			if (this.isValidSequence(element, listSeq1, middle, listSeq2, true)) {
-				results.add(middle.get(0));
+			middle[0] = (String) iter.next();
+			if (this.isValidSequence(element, prefix, middle, suffix, true)) {
+				results.add(middle[0]);
 			}
 		}
 		
@@ -232,9 +208,9 @@
 	}
 
 	/**
-	 * @see Validator#isValidSequence
+	 * @see IValidator#isValidSequence
 	 */
-	public boolean isValidSequence(String element, List<String> nodes,
+	public boolean isValidSequence(String element, String[] nodes,
 			boolean partial) {
 
 		DFAState dfa = (DFAState) this.elementDFAs.get(element);
@@ -243,7 +219,7 @@
 			return true;
 		}
 
-		DFAState target = dfa.getState(nodes);
+		DFAState target = dfa.getState(Arrays.asList(nodes));
 		
 		boolean returnValue;
 		if (target != null) {
@@ -272,14 +248,14 @@
 		DFABuilder.Node node = null;
 
 		if (content == null) {
-			return DFABuilder.createSymbolNode(Validator.PCDATA);
+			return DFABuilder.createSymbolNode(IValidator.PCDATA);
 		}
 		
 		if (content instanceof CMElementDeclaration) {
 			CMElementDeclaration element = (CMElementDeclaration) content;
 			String elementName = element.getNodeName();
 			if (element.getContentType() == CMElementDeclaration.PCDATA) {
-				node = DFABuilder.createSymbolNode(Validator.PCDATA);
+				node = DFABuilder.createSymbolNode(IValidator.PCDATA);
 			} else if (element.getContentType() == CMElementDeclaration.MIXED) {
 				CMContent child = element.getContent();
 				DFABuilder.Node newNode = createDFANode(child);
@@ -289,7 +265,7 @@
 					node = DFABuilder.createChoiceNode(node, newNode);
 				}
 				DFABuilder.Node pcdata = DFABuilder
-						.createSymbolNode(Validator.PCDATA);
+						.createSymbolNode(IValidator.PCDATA);
 				node = DFABuilder.createChoiceNode(node, pcdata);
 
 			} else if (element.getContent() != null) {
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/WTPVEXValidator.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/WTPVEXValidator.java
index cad3fb8..b76e82f 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/WTPVEXValidator.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/validator/WTPVEXValidator.java
@@ -2,14 +2,13 @@
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.List;
 import java.util.Set;
 
 import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
 import org.eclipse.wst.xml.core.internal.contentmodel.ContentModelManager;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 
-public class WTPVEXValidator implements Validator {
+public class WTPVEXValidator implements IValidator {
 
 	/**
 	 * 
@@ -44,7 +43,7 @@
 		return null;
 	}
 
-	public Set<String> getValidItems(String element, List<String> prefix, List<String> suffix) {
+	public Set getValidItems(String element, String[] prefix, String[] suffix) {
 		// TODO Auto-generated method stub
 		return null;
 	}
@@ -53,14 +52,14 @@
 		return null;
 	}
 
-	public boolean isValidSequence(String element, List<String> nodes,
+	public boolean isValidSequence(String element, String[] nodes,
 			boolean partial) {
 		// TODO Auto-generated method stub
 		return false;
 	}
 
-	public boolean isValidSequence(String element, List<String> seq1,
-			List<String> seq2, List<String> seq3, boolean partial) {
+	public boolean isValidSequence(String element, String[] seq1,
+			String[] seq2, String[] seq3, boolean partial) {
 		// TODO Auto-generated method stub
 		return false;
 	}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/CssWhitespacePolicy.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/CssWhitespacePolicy.java
index f6f0a2b..7fd97b2 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/CssWhitespacePolicy.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/CssWhitespacePolicy.java
@@ -12,7 +12,7 @@
 
 import org.eclipse.wst.xml.vex.core.internal.css.CSS;
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheet;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 
 /**
@@ -30,11 +30,11 @@
 		this.styleSheet = styleSheet;
 	}
 
-	public boolean isBlock(VEXElement element) {
+	public boolean isBlock(IVEXElement element) {
 		return this.styleSheet.getStyles(element).isBlock();
 	}
 
-	public boolean isPre(VEXElement element) {
+	public boolean isPre(IVEXElement element) {
 		return CSS.PRE.equals(this.styleSheet.getStyles(element)
 				.getWhiteSpace());
 	}
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/IVexWidget.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/IVexWidget.java
index 725ee20..a2ce55c 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/IVexWidget.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/IVexWidget.java
@@ -20,9 +20,9 @@
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.layout.Box;
 import org.eclipse.wst.xml.vex.core.internal.layout.BoxFactory;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocumentFragment;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocumentFragment;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotRedoException;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotUndoException;
 import org.xml.sax.SAXException;
@@ -185,12 +185,12 @@
 	/**
 	 * Returns the element at the current caret offset.
 	 */
-	public VEXElement getCurrentElement();
+	public IVEXElement getCurrentElement();
 
 	/**
 	 * Returns the document associated with this component.
 	 */
-	public VEXDocument getDocument();
+	public IVEXDocument getDocument();
 
 	/**
 	 * Returns the width to which the document was layed out.
@@ -211,7 +211,7 @@
 	 * Returns the currently selected document fragment, or null if there is no
 	 * current selection.
 	 */
-	public VEXDocumentFragment getSelectedFragment();
+	public IVEXDocumentFragment getSelectedFragment();
 
 	/**
 	 * Returns the currently selected string, or an empty string if there is no
@@ -268,7 +268,7 @@
 	 * @param frag
 	 *            DocumentFragment to insert.
 	 */
-	public void insertFragment(VEXDocumentFragment frag)
+	public void insertFragment(IVEXDocumentFragment frag)
 			throws DocumentValidationException;
 
 	/**
@@ -504,7 +504,7 @@
 	 * @param styleSheet
 	 *            StyleSheet to use for formatting
 	 */
-	public void setDocument(VEXDocument document, StyleSheet styleSheet);
+	public void setDocument(IVEXDocument document, StyleSheet styleSheet);
 
 	/**
 	 * Sets a new document for this control.
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/VexWidgetImpl.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/VexWidgetImpl.java
index 5b4f115..f6f9ed7 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/VexWidgetImpl.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.core/src/org/eclipse/wst/xml/vex/core/internal/widget/VexWidgetImpl.java
@@ -40,11 +40,11 @@
 import org.eclipse.wst.xml.vex.core.internal.layout.CssBoxFactory;
 import org.eclipse.wst.xml.vex.core.internal.layout.LayoutContext;
 import org.eclipse.wst.xml.vex.core.internal.layout.RootBox;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Position;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocumentFragment;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IPosition;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocumentFragment;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicyFactory;
 import org.eclipse.wst.xml.vex.core.internal.undo.CannotRedoException;
@@ -86,7 +86,7 @@
 	private int layoutWidth = 500; // something reasonable to handle a document
 	// being set before the widget is sized
 
-	private VEXDocument document;
+	private IVEXDocument document;
 	private StyleSheet styleSheet;
 	private BoxFactory boxFactory = new CssBoxFactory();
 
@@ -108,7 +108,7 @@
 	private int selectionStart;
 	private int selectionEnd;
 
-	private VEXElement currentElement;
+	private IVEXElement currentElement;
 
 	private boolean caretVisible = true;
 	private Caret caret;
@@ -190,14 +190,14 @@
 	 * @param frag
 	 *            DocumentFragment to be inserted.
 	 */
-	public boolean canInsertFragment(VEXDocumentFragment frag) {
+	public boolean canInsertFragment(IVEXDocumentFragment frag) {
 
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		if (doc == null) {
 			return false;
 		}
 
-		Validator validator = doc.getValidator();
+		IValidator validator = doc.getValidator();
 		if (validator == null) {
 			return true;
 		}
@@ -209,12 +209,11 @@
 			endOffset = this.getSelectionEnd();
 		}
 
-		VEXElement parent = this.getDocument().getElementAt(startOffset);
-		List<String> seq1 = doc.getNodeNames(parent.getStartOffset() + 1,
+		IVEXElement parent = this.getDocument().getElementAt(startOffset);
+		String[] seq1 = doc.getNodeNames(parent.getStartOffset() + 1,
 				startOffset);
-		List<String> seq2 = frag.getNodeNames();
-		
-		List<String> seq3 = doc.getNodeNames(endOffset, parent.getEndOffset());
+		String[] seq2 = frag.getNodeNames();
+		String[] seq3 = doc.getNodeNames(endOffset, parent.getEndOffset());
 
 		return validator.isValidSequence(parent.getName(), seq1, seq2, seq3,
 				true);
@@ -225,12 +224,12 @@
 	 */
 	public boolean canInsertText() {
 
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		if (doc == null) {
 			return false;
 		}
 
-		Validator validator = this.document.getValidator();
+		IValidator validator = this.document.getValidator();
 		if (validator == null) {
 			return true;
 		}
@@ -242,19 +241,13 @@
 			endOffset = this.getSelectionEnd();
 		}
 
-		VEXElement parent = this.getDocument().getElementAt(startOffset);
-		List<String> seq1 = doc.getNodeNames(parent.getStartOffset() + 1,
+		IVEXElement parent = this.getDocument().getElementAt(startOffset);
+		String[] seq1 = doc.getNodeNames(parent.getStartOffset() + 1,
 				startOffset);
+		String[] seq2 = new String[] { IValidator.PCDATA };
+		String[] seq3 = doc.getNodeNames(endOffset, parent.getEndOffset());
 
-		String[] seq2 = new String[] { Validator.PCDATA };
-		List<String> listSeq2 = new ArrayList<String>(seq2.length);
-		for (int i = 0; i < seq2.length; i++) {
-			listSeq2.add(seq2[i]);
-		}
-
-		List<String> seq3 = doc.getNodeNames(endOffset, parent.getEndOffset());
-
-		return validator.isValidSequence(parent.getName(), seq1, listSeq2, seq3,
+		return validator.isValidSequence(parent.getName(), seq1, seq2, seq3,
 				true);
 	}
 
@@ -277,30 +270,28 @@
 	}
 
 	public boolean canUnwrap() {
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		if (doc == null) {
 			return false;
 		}
 
-		Validator validator = doc.getValidator();
+		IValidator validator = doc.getValidator();
 		if (validator == null) {
 			return false;
 		}
 
-		VEXElement element = doc.getElementAt(this.getCaretOffset());
-		VEXElement parent = element.getParent();
+		IVEXElement element = doc.getElementAt(this.getCaretOffset());
+		IVEXElement parent = element.getParent();
 		if (parent == null) {
 			// can't unwrap the root
 			return false;
 		}
 
-		List<String> seq1 = doc.getNodeNames(parent.getStartOffset() + 1, element
+		String[] seq1 = doc.getNodeNames(parent.getStartOffset() + 1, element
 				.getStartOffset());
-
-		List<String> seq2 = doc.getNodeNames(element.getStartOffset() + 1, element
+		String[] seq2 = doc.getNodeNames(element.getStartOffset() + 1, element
 				.getEndOffset());
-		
-		List<String> seq3 = doc.getNodeNames(element.getEndOffset() + 1, parent
+		String[] seq3 = doc.getNodeNames(element.getEndOffset() + 1, parent
 				.getEndOffset());
 
 		return validator.isValidSequence(parent.getName(), seq1, seq2, seq3,
@@ -322,9 +313,9 @@
 			this.deleteSelection();
 		} else {
 			int offset = this.getCaretOffset();
-			VEXDocument doc = this.getDocument();
+			IVEXDocument doc = this.getDocument();
 			int n = doc.getLength() - 1;
-			VEXElement element = doc.getElementAt(offset);
+			IVEXElement element = doc.getElementAt(offset);
 
 			if (offset == n) {
 				// nop
@@ -359,8 +350,8 @@
 			this.deleteSelection();
 		} else {
 			int offset = this.getCaretOffset();
-			VEXDocument doc = this.getDocument();
-			VEXElement element = doc.getElementAt(offset);
+			IVEXDocument doc = this.getDocument();
+			IVEXElement element = doc.getElementAt(offset);
 
 			if (offset == 1) {
 				// nop
@@ -409,7 +400,7 @@
 	}
 
 	public void doWork(boolean savePosition, Runnable runnable) {
-		Position position = null;
+		IPosition position = null;
 
 		if (savePosition) {
 			position = this.getDocument().createPosition(this.getCaretOffset());
@@ -525,11 +516,11 @@
 		return this.caretOffset;
 	}
 
-	public VEXElement getCurrentElement() {
+	public IVEXElement getCurrentElement() {
 		return this.currentElement;
 	}
 
-	public VEXDocument getDocument() {
+	public IVEXDocument getDocument() {
 		return this.document;
 	}
 
@@ -543,12 +534,12 @@
 
 	public String[] getValidInsertElements() {
 
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		if (doc == null) {
 			return new String[0];
 		}
 
-		Validator validator = doc.getValidator();
+		IValidator validator = doc.getValidator();
 		if (validator == null) {
 			return new String[0];
 		}
@@ -560,19 +551,19 @@
 			endOffset = this.getSelectionEnd();
 		}
 
-		VEXElement parent = doc.getElementAt(startOffset);
-		List<String> prefix = doc.getNodeNames(parent.getStartOffset() + 1,
+		IVEXElement parent = doc.getElementAt(startOffset);
+		String[] prefix = doc.getNodeNames(parent.getStartOffset() + 1,
 				startOffset);
-		List<String> suffix = doc.getNodeNames(endOffset, parent.getEndOffset());
+		String[] suffix = doc.getNodeNames(endOffset, parent.getEndOffset());
 		List candidates = new ArrayList();
 		candidates.addAll(validator.getValidItems(parent.getName(), prefix,
 				suffix));
-		candidates.remove(Validator.PCDATA);
+		candidates.remove(IValidator.PCDATA);
 
 		// If there's a selection, root out those candidates that can't
 		// contain it.
 		if (this.hasSelection()) {
-			List<String> selectedNodes = doc.getNodeNames(startOffset, endOffset);
+			String[] selectedNodes = doc.getNodeNames(startOffset, endOffset);
 			for (Iterator iter = candidates.iterator(); iter.hasNext();) {
 				String candidate = (String) iter.next();
 				if (!validator.isValidSequence(candidate, selectedNodes, true)) {
@@ -582,7 +573,6 @@
 		}
 
 		Collections.sort(candidates);
-		
 		return (String[]) candidates.toArray(new String[candidates.size()]);
 	}
 
@@ -599,35 +589,35 @@
 
 	public String[] getValidMorphElements() {
 
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		if (doc == null) {
 			return new String[0];
 		}
 
-		Validator validator = doc.getValidator();
+		IValidator validator = doc.getValidator();
 		if (validator == null) {
 			return new String[0];
 		}
 
-		VEXElement element = doc.getElementAt(this.getCaretOffset());
-		VEXElement parent = element.getParent();
+		IVEXElement element = doc.getElementAt(this.getCaretOffset());
+		IVEXElement parent = element.getParent();
 		if (parent == null) {
 			// can't morph the root
 			return new String[0];
 		}
 
-		List<String> prefix = doc.getNodeNames(parent.getStartOffset() + 1, element
+		String[] prefix = doc.getNodeNames(parent.getStartOffset() + 1, element
 				.getStartOffset());
-		List<String> suffix = doc.getNodeNames(element.getEndOffset() + 1, parent
+		String[] suffix = doc.getNodeNames(element.getEndOffset() + 1, parent
 				.getEndOffset());
 
 		List candidates = new ArrayList();
 		candidates.addAll(validator.getValidItems(parent.getName(), prefix,
 				suffix));
-		candidates.remove(Validator.PCDATA);
+		candidates.remove(IValidator.PCDATA);
 
 		// root out those that can't contain the current content
-		List<String> content = doc.getNodeNames(element.getStartOffset() + 1,
+		String[] content = doc.getNodeNames(element.getStartOffset() + 1,
 				element.getEndOffset());
 		for (Iterator iter = candidates.iterator(); iter.hasNext();) {
 			String candidate = (String) iter.next();
@@ -648,7 +638,7 @@
 		return this.selectionStart;
 	}
 
-	public VEXDocumentFragment getSelectedFragment() {
+	public IVEXDocumentFragment getSelectedFragment() {
 		if (this.hasSelection()) {
 			return this.document.getFragment(this.getSelectionStart(), this
 					.getSelectionEnd());
@@ -694,7 +684,7 @@
 		this.moveBy(+1);
 	}
 
-	public void insertFragment(VEXDocumentFragment frag)
+	public void insertFragment(IVEXDocumentFragment frag)
 			throws DocumentValidationException {
 
 		if (this.hasSelection()) {
@@ -712,7 +702,7 @@
 		try {
 			this.beginWork();
 
-			VEXDocumentFragment frag = null;
+			IVEXDocumentFragment frag = null;
 			if (this.hasSelection()) {
 				frag = this.getSelectedFragment();
 				this.deleteSelection();
@@ -765,9 +755,9 @@
 
 	public void morph(Element element) throws DocumentValidationException {
 
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		int offset = this.getCaretOffset();
-		VEXElement currentElement = doc.getElementAt(offset);
+		IVEXElement currentElement = doc.getElementAt(offset);
 
 		if (currentElement == doc.getRootElement()) {
 			throw new DocumentValidationException(
@@ -779,7 +769,7 @@
 			this.beginWork();
 			this.moveTo(currentElement.getStartOffset() + 1, false);
 			this.moveTo(currentElement.getEndOffset(), true);
-			VEXDocumentFragment frag = this.getSelectedFragment();
+			IVEXDocumentFragment frag = this.getSelectedFragment();
 			this.deleteSelection();
 			this.moveBy(-1, false);
 			this.moveBy(2, true);
@@ -816,7 +806,7 @@
 			this.repaintCaret();
 			this.repaintRange(this.getSelectionStart(), this.getSelectionEnd());
 
-			VEXElement oldElement = this.currentElement;
+			IVEXElement oldElement = this.currentElement;
 
 			this.caretOffset = offset;
 
@@ -828,10 +818,10 @@
 
 				// move selectionStart and selectionEnd to make sure we don't
 				// select a partial element
-				VEXElement commonElement = this.document.findCommonElement(
+				IVEXElement commonElement = this.document.findCommonElement(
 						this.selectionStart, this.selectionEnd);
 
-				VEXElement element = this.document
+				IVEXElement element = this.document
 						.getElementAt(this.selectionStart);
 				while (element != commonElement) {
 					this.selectionStart = element.getStartOffset();
@@ -858,7 +848,7 @@
 			LayoutContext context = this.createLayoutContext(g);
 			this.caret = this.rootBox.getCaret(context, offset);
 
-			VEXElement element = this.getCurrentElement();
+			IVEXElement element = this.getCurrentElement();
 			if (element != oldElement) {
 				this.caretColor = Color.BLACK;
 				while (element != null) {
@@ -921,7 +911,7 @@
 	}
 
 	public void moveToNextWord(boolean select) {
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		int n = doc.getLength() - 1;
 		int offset = this.getCaretOffset();
 		while (offset < n
@@ -959,7 +949,7 @@
 	}
 
 	public void moveToPreviousWord(boolean select) {
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		int offset = this.getCaretOffset();
 		while (offset > 1
 				&& !Character.isLetterOrDigit(doc.getCharacterAt(offset - 1))) {
@@ -1047,7 +1037,7 @@
 
 	public void removeAttribute(String attributeName) {
 		try {
-			VEXElement element = this.getCurrentElement();
+			IVEXElement element = this.getCurrentElement();
 			if (element.getAttribute(attributeName) != null) {
 				element.removeAttribute(attributeName);
 			}
@@ -1057,7 +1047,7 @@
 	}
 
 	public void savePosition(Runnable runnable) {
-		Position pos = this.getDocument().createPosition(this.getCaretOffset());
+		IPosition pos = this.getDocument().createPosition(this.getCaretOffset());
 		try {
 			runnable.run();
 		} finally {
@@ -1071,7 +1061,7 @@
 	}
 
 	public void selectWord() {
-		VEXDocument doc = this.getDocument();
+		IVEXDocument doc = this.getDocument();
 		int startOffset = this.getCaretOffset();
 		int endOffset = this.getCaretOffset();
 		while (startOffset > 1
@@ -1103,7 +1093,7 @@
 
 	public void setAttribute(String attributeName, String value) {
 		try {
-			VEXElement element = this.getCurrentElement();
+			IVEXElement element = this.getCurrentElement();
 			if (value == null) {
 				this.removeAttribute(attributeName);
 			} else if (!value.equals(element.getAttribute(attributeName))) {
@@ -1125,7 +1115,7 @@
 		this.debugging = debugging;
 	}
 
-	public void setDocument(VEXDocument document, StyleSheet styleSheet) {
+	public void setDocument(IVEXDocument document, StyleSheet styleSheet) {
 
 		if (this.document != null) {
 			this.document.removeDocumentListener(this.documentListener);
@@ -1160,7 +1150,7 @@
 			}
 		});
 
-		VEXDocument doc = reader.read(docUrl);
+		IVEXDocument doc = reader.read(docUrl);
 		this.setDocument(doc, ss);
 	}
 
@@ -1203,8 +1193,8 @@
 
 		long start = System.currentTimeMillis();
 
-		VEXDocument doc = this.getDocument();
-		VEXElement element = doc.getElementAt(this.getCaretOffset());
+		IVEXDocument doc = this.getDocument();
+		IVEXElement element = doc.getElementAt(this.getCaretOffset());
 		Styles styles = this.getStyleSheet().getStyles(element);
 		while (!styles.isBlock()) {
 			element = element.getParent();
@@ -1220,7 +1210,7 @@
 				doc.insertText(offset, "\n");
 				this.moveTo(offset + 1);
 			} else {
-				VEXDocumentFragment frag = null;
+				IVEXDocumentFragment frag = null;
 				int offset = this.getCaretOffset();
 				boolean atEnd = (offset == element.getEndOffset());
 				if (!atEnd) {
@@ -1369,7 +1359,7 @@
 	 * @param element
 	 *            Element for which to search.
 	 */
-	private void invalidateElementBox(final VEXElement element) {
+	private void invalidateElementBox(final IVEXElement element) {
 
 		BlockBox elementBox = (BlockBox) this
 				.findInnermostBox(new IBoxFilter() {
@@ -1398,8 +1388,8 @@
 		if (offset <= 1 || offset >= this.getDocument().getLength() - 1) {
 			return false;
 		}
-		VEXElement e1 = this.getDocument().getElementAt(offset - 1);
-		VEXElement e2 = this.getDocument().getElementAt(offset + 1);
+		IVEXElement e1 = this.getDocument().getElementAt(offset - 1);
+		IVEXElement e2 = this.getDocument().getElementAt(offset + 1);
 		return e1 != e2 && e1.getParent() == e2.getParent()
 				&& e1.getName().equals(e2.getName());
 	}
@@ -1469,9 +1459,9 @@
 		try {
 			this.beginWork();
 			this.moveTo(offset + 1);
-			VEXElement element = this.getCurrentElement();
+			IVEXElement element = this.getCurrentElement();
 			boolean moveContent = !element.isEmpty();
-			VEXDocumentFragment frag = null;
+			IVEXDocumentFragment frag = null;
 			if (moveContent) {
 				this.moveTo(element.getEndOffset(), true);
 				frag = this.getSelectedFragment();
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/CssTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/CssTest.java
index d7030ed..30ec19b 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/CssTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/CssTest.java
@@ -21,8 +21,8 @@
 import org.eclipse.wst.xml.vex.core.internal.dom.Document;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.RootElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
 
 import junit.framework.TestCase;
 
@@ -187,8 +187,8 @@
 	 */
 	public void testDefaultInheritance() throws Exception {
 		RootElement simple = new RootElement("simple");
-		VEXElement defaults = new Element("defaults");
-		VEXDocument doc = new Document(simple);
+		IVEXElement defaults = new Element("defaults");
+		IVEXDocument doc = new Document(simple);
 		doc.insertElement(1, defaults);
 
 		StyleSheet ss = parseStyleSheetResource("test2.css");
@@ -449,7 +449,7 @@
 	public void testForcedInheritance() throws Exception {
 		RootElement simple = new RootElement("simple");
 		Element inherit = new Element("inherit");
-		VEXDocument doc = new Document(simple);
+		IVEXDocument doc = new Document(simple);
 		doc.insertElement(1, inherit);
 
 		StyleSheet ss = parseStyleSheetResource("test2.css");
@@ -491,7 +491,7 @@
 
 	public void testImportant() throws Exception {
 		StyleSheet ss = parseStyleSheetResource("testImportant.css");
-		VEXElement a = new Element("a");
+		IVEXElement a = new Element("a");
 		Styles styles = ss.getStyles(a);
 
 		Color black = new Color(0, 0, 0);
@@ -508,7 +508,7 @@
 	public void testMarginInheritance() throws Exception {
 		StyleSheet ss = parseStyleSheetResource("test2.css");
 		Element root = new Element("margin1");
-		VEXElement child = new Element("defaults");
+		IVEXElement child = new Element("defaults");
 		child.setParent(root);
 		Styles styles = ss.getStyles(child);
 
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/RuleTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/RuleTest.java
index 353e638..9f3f908 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/RuleTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/css/RuleTest.java
@@ -18,7 +18,7 @@
 import org.eclipse.wst.xml.vex.core.internal.dom.Document;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.RootElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 
 import junit.framework.TestCase;
 
@@ -49,7 +49,7 @@
 		e.setAttribute("color", "red blue");
 		f.setAttribute("color", "bluered");
 
-		VEXDocument doc = new Document(a);
+		IVEXDocument doc = new Document(a);
 		doc.insertElement(1, b);
 		doc.insertElement(2, c);
 		doc.insertElement(3, d);
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/BlockElementBoxTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/BlockElementBoxTest.java
index 634a03c..dcbc6fe 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/BlockElementBoxTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/BlockElementBoxTest.java
@@ -24,7 +24,7 @@
 import org.eclipse.wst.xml.vex.core.internal.layout.FakeGraphics;
 import org.eclipse.wst.xml.vex.core.internal.layout.LayoutContext;
 import org.eclipse.wst.xml.vex.core.internal.layout.RootBox;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 
 import junit.framework.TestCase;
 
@@ -53,7 +53,7 @@
 		String docString = "<root><small/><medium/><large/></root>";
 		DocumentReader docReader = new DocumentReader();
 		docReader.setDebugging(true);
-		VEXDocument doc = docReader.read(docString);
+		IVEXDocument doc = docReader.read(docString);
 		context.setDocument(doc);
 		
 		RootBox parentBox = new RootBox(context, doc.getRootElement(), 500);
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DTDValidatorTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DTDValidatorTest.java
index 6a1e18b..2ae03ee 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DTDValidatorTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DTDValidatorTest.java
@@ -17,15 +17,14 @@
 import java.net.URL;
 import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 import org.eclipse.wst.xml.vex.core.internal.dom.Document;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.RootElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Validator;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IValidator;
 import org.eclipse.wst.xml.vex.core.internal.validator.AttributeDefinition;
 import org.eclipse.wst.xml.vex.core.internal.validator.DTDValidator;
 
@@ -33,7 +32,7 @@
 
 @SuppressWarnings("restriction")
 public class DTDValidatorTest extends TestCase {
-	Validator validator = null;
+	IValidator validator = null;
 
 	protected void setUp() {
 		try {
@@ -55,7 +54,7 @@
 
 		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
 		ObjectInputStream ois = new ObjectInputStream(bais);
-		validator = (Validator) ois.readObject();
+		validator = (IValidator) ois.readObject();
 
 		AttributeDefinition.Type adType2 = validator
 				.getAttributeDefinitions("section")[0].getType();
@@ -65,7 +64,7 @@
 	}
 	
 	public void testEmptyDTD() throws Exception {
-		VEXDocument doc;
+		IVEXDocument doc;
 		Set expected;
 
 		doc = new Document(new RootElement("empty"));
@@ -74,13 +73,13 @@
 	}
 	
 	public void testAnyDTD() throws Exception {
-		VEXDocument doc;
+		IVEXDocument doc;
 		Set expected;
 
 		doc = new Document(new RootElement("any"));
 		doc.setValidator(validator);
 		Set anySet = new HashSet();
-		anySet.add(Validator.PCDATA);
+		anySet.add(IValidator.PCDATA);
 		anySet.add("any");
 		anySet.add("empty");
 		anySet.add("section");
@@ -92,7 +91,7 @@
 	}
 	
 	public void testSectionElement() {
-		VEXDocument doc;
+		IVEXDocument doc;
 		Set expected;
 
 		// <section> <title> a b </title> <para> </para> </section>
@@ -126,11 +125,11 @@
 	}
 
 
-	private Set getValidItemsAt(VEXDocument doc, int offset) {
-		VEXElement element = doc.getElementAt(offset);
-		List<String> prefix = doc
+	private Set getValidItemsAt(IVEXDocument doc, int offset) {
+		IVEXElement element = doc.getElementAt(offset);
+		String[] prefix = doc
 				.getNodeNames(element.getStartOffset() + 1, offset);
-		List<String> suffix = doc.getNodeNames(offset, element.getEndOffset());
+		String[] suffix = doc.getNodeNames(offset, element.getEndOffset());
 		return doc.getValidator().getValidItems(element.getName(), prefix,
 				suffix);
 	}
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReaderTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReaderTest.java
deleted file mode 100644
index 26e36d3..0000000
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentReaderTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.eclipse.wst.xml.vex.core.internal.dom;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-import junit.framework.TestCase;
-
-public class DocumentReaderTest extends TestCase {
-
-	String xml;
-	@Override
-	protected void setUp() throws Exception {
-		xml = "<xhtml:html xmlns:xhtml=\"http://www.w3.org/1999/xhtml\"><xhtml:body/></xhtml:html>";
-		super.setUp();
-	}
-	
-    public void testReadXMLDocument() throws Exception {
-    	VEXDocument document = setupDocument();
-    	this.assertNotNull("Document is null", document);
-    	
-    }
-
-	private VEXDocument setupDocument() throws IOException,
-			ParserConfigurationException, SAXException {
-		Reader reader = new StringReader(xml);
-    	DocumentReader docReader = new DocumentReader();
-    	VEXDocument document = docReader.read(new InputSource(reader));
-		return document;
-	}
-    
-    public void testNamespaceExists() throws Exception {
-    	VEXDocument document = setupDocument();
-    	VEXElement element = document.getRootElement();
-    	assertEquals("Missing XHTML namespace.", "http://www.w3.org/1999/xhtml", element.getNamespace());
-    }
-    
-    public void testNamespacePrefixExists() throws Exception {
-    	VEXDocument document = setupDocument();
-    	VEXElement element = document.getRootElement();
-    	assertEquals("Missing XHTML namespace.", "xhtml", element.getNamespacePrefix());
-    }
-    
-    
-}
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriterTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriterTest.java
index fe1910e..66d3bb3 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriterTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DocumentWriterTest.java
@@ -17,8 +17,6 @@
 import java.io.InputStream;
 import java.net.URL;
 import java.util.Arrays;
-import java.util.List;
-
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParserFactory;
 import junit.framework.TestCase;
@@ -27,9 +25,9 @@
 import org.eclipse.wst.xml.vex.core.internal.css.StyleSheetReader;
 import org.eclipse.wst.xml.vex.core.internal.dom.DocumentWriter;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicyFactory;
 import org.eclipse.wst.xml.vex.core.internal.widget.CssWhitespacePolicy;
@@ -50,7 +48,7 @@
 
 		URL docUrl = this.getClass().getResource("DocumentWriterTest1.xml");
 
-		VEXDocument docOrig = readDocument(new InputSource(docUrl.toString()), ss);
+		IVEXDocument docOrig = readDocument(new InputSource(docUrl.toString()), ss);
 
 		DocumentWriter dw = new DocumentWriter();
 		dw.setWhitespacePolicy(new CssWhitespacePolicy(ss));
@@ -69,51 +67,51 @@
 		// }
 		// is.reset();
 
-		VEXDocument docNew = readDocument(new InputSource(is), ss);
+		IVEXDocument docNew = readDocument(new InputSource(is), ss);
 
 		assertEquals(docOrig, docNew);
 	}
 
-	private void assertEquals(VEXDocument expected, VEXDocument actual)
+	private void assertEquals(IVEXDocument expected, IVEXDocument actual)
 			throws Exception {
 
 		assertEquals(expected.getRootElement(), actual.getRootElement());
 	}
 
-	private void assertEquals(VEXElement expected, VEXElement actual)
+	private void assertEquals(IVEXElement expected, IVEXElement actual)
 			throws Exception {
 
 		System.out.println("Checking " + actual.getName());
 		assertEquals(expected.getName(), actual.getName());
 
-		List<String> expectedAttrs = expected.getAttributeNames();
-		//Arrays.sort(expectedAttrs);
+		String[] expectedAttrs = expected.getAttributeNames();
+		Arrays.sort(expectedAttrs);
 
-//		String[] actualAttrs = actual.getAttributeNames();
-//		Arrays.sort(actualAttrs);
-//
-//		assertEquals(expectedAttrs.length, actualAttrs.length);
-//		for (int i = 0; i < expectedAttrs.length; i++) {
-//			assertEquals(expectedAttrs[i], actualAttrs[i]);
-//		}
+		String[] actualAttrs = actual.getAttributeNames();
+		Arrays.sort(actualAttrs);
 
-		List<VEXNode> expectedContent = expected.getChildNodes();
-		List<VEXNode> actualContent = actual.getChildNodes();
-		assertEquals(expectedContent.size(), actualContent.size());
-		for (int i = 0; i < expectedContent.size(); i++) {
-			assertEquals(expectedContent.get(i).getClass(), actualContent.get(i)
+		assertEquals(expectedAttrs.length, actualAttrs.length);
+		for (int i = 0; i < expectedAttrs.length; i++) {
+			assertEquals(expectedAttrs[i], actualAttrs[i]);
+		}
+
+		IVEXNode[] expectedContent = expected.getChildNodes();
+		IVEXNode[] actualContent = actual.getChildNodes();
+		assertEquals(expectedContent.length, actualContent.length);
+		for (int i = 0; i < expectedContent.length; i++) {
+			assertEquals(expectedContent[i].getClass(), actualContent[i]
 					.getClass());
-			if (expectedContent.get(i) instanceof Element) {
-				assertEquals((VEXElement) expectedContent.get(i),
-						(VEXElement) actualContent.get(i));
+			if (expectedContent[i] instanceof Element) {
+				assertEquals((IVEXElement) expectedContent[i],
+						(IVEXElement) actualContent[i]);
 			} else {
-				assertEquals(expectedContent.get(i).getText(), actualContent.get(i)
+				assertEquals(expectedContent[i].getText(), actualContent[i]
 						.getText());
 			}
 		}
 	}
 
-	private static VEXDocument readDocument(InputSource is, StyleSheet ss)
+	private static IVEXDocument readDocument(InputSource is, StyleSheet ss)
 			throws ParserConfigurationException, SAXException, IOException {
 
 		SAXParserFactory factory = SAXParserFactory.newInstance();
@@ -164,7 +162,7 @@
 			StyleSheetReader reader = new StyleSheetReader();
 			StyleSheet ss = reader.read(DocumentWriterTest.class
 					.getResource("test.css"));
-			VEXDocument doc = readDocument(new InputSource(fis), ss);
+			IVEXDocument doc = readDocument(new InputSource(fis), ss);
 
 			DocumentWriter writer = new DocumentWriter();
 			writer.setWhitespacePolicy(new CssWhitespacePolicy(ss));
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DomTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DomTest.java
index fd9fef3..3b0cf5f 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DomTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/DomTest.java
@@ -7,91 +7,74 @@
  * 
  * Contributors:
  *     John Krasnay - initial API and implementation
- *     David Carver - refactored unit tests
  *******************************************************************************/
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
-import java.util.List;
-
 import org.eclipse.wst.xml.vex.core.internal.dom.Document;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.RootElement;
 import org.eclipse.wst.xml.vex.core.internal.dom.Text;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocumentFragment;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocumentFragment;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 
 import junit.framework.TestCase;
 
 /**
  * Test the <code>org.eclipse.wst.vex.core.internal.dom</code> package.
  */
-@SuppressWarnings("restriction")
-
 public class DomTest extends TestCase {
-	
-	public void testRootElement() throws Exception {
+
+	public void testDom() throws Exception {
+
+		//
+		// Document initialisation
+		//
 		RootElement root = new RootElement("article");
-		VEXDocument doc = new Document(root);
-		
+		IVEXDocument doc = new Document(root);
+		IVEXNode[] content;
+		IVEXElement[] children;
+
+		// root
+		// | |
+		// * *
+
 		assertEquals(2, doc.getLength());
 		assertEquals(root, doc.getRootElement());
 		assertEquals(0, root.getStartOffset());
-		assertEquals(1, root.getEndOffset());		
-	}
-	
-	public void testRootElementNoChildren() throws Exception {
-		RootElement root = new RootElement("article");
-		VEXDocument doc = new Document(root);
-		List<VEXNode> content;
-		List<VEXElement> children;
-		
+		assertEquals(1, root.getEndOffset());
+
 		content = root.getChildNodes();
-		assertEquals(0, content.size());
+		assertEquals(0, content.length);
 		children = root.getChildElements();
-		assertEquals(0, children.size());
-	}
-	
-	public void testIllegaArgumentException() throws Exception {
-		RootElement root = new RootElement("article");
-		VEXDocument doc = new Document(root);
+		assertEquals(0, children.length);
+
+		// root
+		// | |
+		// * a c *
+
 		try {
 			doc.insertText(0, "ac");
 			fail("Expected IllegalArgumentException");
 		} catch (IllegalArgumentException ex) {
 		}
-		
+
 		try {
 			doc.insertText(2, "ac");
 			fail("Expected IllegalArgumentException");
 		} catch (IllegalArgumentException ex) {
 		}
-		
-	}
-	
-	public void testInsertTextIntoDocument() throws Exception {
-		RootElement root = new RootElement("article");
-		VEXDocument doc = new Document(root);
-		List<VEXNode> content;
 
 		doc.insertText(1, "ac");
 		assertEquals(4, doc.getLength());
 		content = root.getChildNodes();
-		assertEquals(1, content.size());
-		
-		assertIsText(content.get(0), "ac", 1, 3);
-		
-		assertEquals(1, content.get(0).getStartPosition().getOffset());
-		assertEquals(3, content.get(0).getEndPosition().getOffset());
+		assertEquals(1, content.length);
+		assertIsText(content[0], "ac", 1, 3);
+		assertEquals(1, content[0].getStartPosition().getOffset());
+		assertEquals(3, content[0].getEndPosition().getOffset());
 		assertEquals(0, root.getStartOffset());
 		assertEquals(3, root.getEndOffset());
-		
-	}
-	
-	public void testInsertAtIllegalOffset() {
-		RootElement root = new RootElement("article");
-		VEXDocument doc = new Document(root);
 
 		//
 		// Try inserting at illegal offset
@@ -109,15 +92,14 @@
 			fail("Expected IllegalArgumentException");
 		} catch (IllegalArgumentException ex) {
 		}
-		
-	}
-	
-	public void testElementInsert() throws Exception {
-		RootElement root = new RootElement("article");
-		VEXDocument doc = new Document(root);
-		List<VEXNode> content;
-		doc.insertText(1, "ac");
-		Element element = new Element("b");
+
+		// root
+		// | |
+		// | z |
+		// | | | |
+		// * a * * c *
+		// 0 1 2 3 4 5 6
+		//
 		doc.insertElement(2, element);
 		assertEquals(root, element.getParent());
 		assertEquals(6, doc.getLength());
@@ -126,97 +108,89 @@
 		doc.insertElement(2, element2);
 
 		content = root.getChildNodes();
-		assertEquals(4, content.size());
-		assertIsText(content.get(0), "a", 1, 2);
-		assertIsElement(content.get(1), "x", root, 2, 3);
-		assertIsElement(content.get(2), "b", root, 4, 5);
-		assertIsText(content.get(3), "c", 6, 7);
+		assertEquals(4, content.length);
+		assertIsText(content[0], "a", 1, 2);
+		assertIsElement(content[1], "x", root, 2, 3);
+		assertIsElement(content[2], "b", root, 4, 5);
+		assertIsText(content[3], "c", 6, 7);
+
 	}
-	
-	public void testTextFragment22() {
-		VEXDocument doc;
-		VEXDocumentFragment frag;
+
+	public void testFragments() throws Exception {
+
+		IVEXDocument doc;
+		IVEXDocumentFragment frag;
+		IVEXElement[] elements;
+		IVEXNode[] nodes;
+		IVEXElement root;
+		IVEXElement x;
+		IVEXElement y;
+		IVEXElement z;
+
+		// Case 1: just text
+		//
+		// root
+		// * a b c *
+		// 0 1 2 3 4 5
 		doc = new Document(new RootElement("root"));
 		doc.insertText(1, "abc");
-		
+
 		try {
 			frag = doc.getFragment(2, 2);
-			fail("Expected IllegalArgumentException");
+			fail();
 		} catch (IllegalArgumentException ex) {
 		}
 
-		
-	}
-	
-	public void testTextFragmentFailure() {
-		VEXDocument doc;
-		VEXDocumentFragment frag;
-		doc = new Document(new RootElement("root"));
-		doc.insertText(1, "abc");
-		
 		try {
 			frag = doc.getFragment(-1, 0);
-			fail("Expected IllegalArgumentException");
+			fail();
 		} catch (IllegalArgumentException ex) {
 		}
 
 		try {
 			frag = doc.getFragment(4, 5);
-			fail("Expected IllegalArgumentException");
+			fail();
 		} catch (IllegalArgumentException ex) {
 		}
-		
-	}
-	
-	public void testgetFragment() throws Exception {
-		VEXDocument doc = new Document(new RootElement("root"));
-		doc.insertText(1, "abc");
 
-		VEXDocumentFragment frag = doc.getFragment(2, 3);
+		frag = doc.getFragment(2, 3);
 		assertEquals(1, frag.getContent().getLength());
-		assertEquals(0, frag.getElements().size());
+		assertEquals(0, frag.getElements().length);
+		nodes = frag.getNodes();
+		assertEquals(1, nodes.length);
+		this.assertIsText(nodes[0], "b", 0, 1);
 
-		List<VEXNode> nodes = frag.getNodes();
-		assertEquals(1, nodes.size());
-		assertIsText(nodes.get(0), "b", 0, 1);
-	}
-	
-	public void testgetFragment2() throws Exception {
-		
-		VEXDocument doc = new Document(new RootElement("root"));
+		// Case 2: single element, no children
+		//        
+		// root
+		// | |
+		// | z |
+		// | | | |
+		// * a * b * c *
+		// 0 1 2 3 4 5 6 7
+
+		// z
+		// | |
+		// a * b * c
+		// 0 1 2 3 4 5
+
+		doc = new Document(new RootElement("root"));
 		doc.insertText(1, "ac");
 		doc.insertElement(2, new Element("z"));
 		doc.insertText(3, "b");
 
-		VEXDocumentFragment frag = doc.getFragment(1, 6);
-		
-		List<VEXElement> elements = frag.getElements();
-		assertEquals(1, elements.size());
-		this.assertIsElement(elements.get(0), "z", null, 1, 3);
-		
-		List<VEXNode> nodes = frag.getNodes();
-		assertEquals(3, nodes.size());
-		assertIsText(nodes.get(0), "a", 0, 1);
-		assertIsElement(nodes.get(1), "z", null, 1, 3);
-		assertIsText(nodes.get(2), "c", 4, 5);
-		List<VEXNode>nodes2 = elements.get(0).getChildNodes();
-		assertEquals(1, nodes2.size());
-		assertIsText(nodes2.get(0), "b", 2, 3);
-	}
-	
-	public void testComplexChildElementFragments() throws Exception {
-
-		VEXDocument doc;
-		VEXDocumentFragment frag;
-		List<VEXElement> elements;
-		List<VEXNode> nodes;
-		VEXElement root;
-		VEXElement x;
-		VEXElement y;
-		VEXElement z;
-
-
-
+		frag = doc.getFragment(1, 6);
+		elements = frag.getElements();
+		assertEquals(1, elements.length);
+		this.assertIsElement(elements[0], "z", null, 1, 3);
+		nodes = frag.getNodes();
+		assertEquals(3, nodes.length);
+		assertIsText(nodes[0], "a", 0, 1);
+		assertIsElement(nodes[1], "z", null, 1, 3);
+		assertIsText(nodes[2], "c", 4, 5);
+		nodes = elements[0].getChildNodes();
+		assertEquals(1, nodes.length);
+		assertIsText(nodes[0], "b", 2, 3);
 
 		// Case 3: complex with child elements
 		//        
@@ -248,17 +222,17 @@
 		assertEquals(9, frag.getContent().getLength());
 
 		elements = frag.getElements();
-		assertEquals(2, elements.size());
-		assertIsElement(elements.get(0), "x", null, 1, 3);
-		assertIsElement(elements.get(1), "y", null, 5, 7);
+		assertEquals(2, elements.length);
+		assertIsElement(elements[0], "x", null, 1, 3);
+		assertIsElement(elements[1], "y", null, 5, 7);
 
 		nodes = frag.getNodes();
-		assertEquals(5, nodes.size());
-		assertIsText(nodes.get(0), "c", 0, 1);
-		assertIsElement(nodes.get(1), "x", null, 1, 3);
-		assertIsText(nodes.get(2), "e", 4, 5);
-		assertIsElement(nodes.get(3), "y", null, 5, 7);
-		assertIsText(nodes.get(4), "g", 8, 9);
+		assertEquals(5, nodes.length);
+		assertIsText(nodes[0], "c", 0, 1);
+		assertIsElement(nodes[1], "x", null, 1, 3);
+		assertIsText(nodes[2], "e", 4, 5);
+		assertIsElement(nodes[3], "y", null, 5, 7);
+		assertIsText(nodes[4], "g", 8, 9);
 
 		// 3b:
 		// z
@@ -270,21 +244,21 @@
 		assertEquals(13, frag.getContent().getLength());
 
 		elements = frag.getElements();
-		assertEquals(1, elements.size());
-		assertIsElement(elements.get(0), "z", null, 0, 12);
+		assertEquals(1, elements.length);
+		assertIsElement(elements[0], "z", null, 0, 12);
 
 		nodes = frag.getNodes();
-		assertEquals(1, nodes.size());
-		assertIsElement(nodes.get(0), "z", null, 0, 12);
+		assertEquals(1, nodes.length);
+		assertIsElement(nodes[0], "z", null, 0, 12);
 
-		z = elements.get(0);
-		List<VEXNode>nodes2 = z.getChildNodes();
-		assertEquals(5, nodes2.size());
-		assertIsText(nodes2.get(0), "bc", 1, 3);
-		assertIsElement(nodes2.get(1), "x", z, 3, 5);
-		assertIsText(nodes2.get(2), "e", 6, 7);
-		assertIsElement(nodes2.get(3), "y", z, 7, 9);
-		assertIsText(nodes2.get(4), "gh", 10, 12);
+		z = elements[0];
+		nodes = z.getChildNodes();
+		assertEquals(5, nodes.length);
+		assertIsText(nodes[0], "bc", 1, 3);
+		assertIsElement(nodes[1], "x", z, 3, 5);
+		assertIsText(nodes[2], "e", 6, 7);
+		assertIsElement(nodes[3], "y", z, 7, 9);
+		assertIsText(nodes[4], "gh", 10, 12);
 
 		// 3c: remove and re-insert the same frag as in 3a
 		frag = doc.getFragment(4, 13);
@@ -293,27 +267,27 @@
 
 		root = doc.getRootElement();
 		assertIsElement(root, "root", null, 0, 16);
-		nodes2 = root.getChildNodes();
-		assertEquals(3, nodes2.size());
-		assertIsText(nodes2.get(0), "a", 1, 2);
-		assertIsElement(nodes2.get(1), "z", doc.getRootElement(), 2, 14);
-		assertIsText(nodes2.get(2), "i", 15, 16);
-		z = (VEXElement) nodes2.get(1);
-		nodes2 = z.getChildNodes();
-		assertEquals(5, nodes2.size());
-		assertIsText(nodes2.get(0), "bc", 3, 5);
-		assertIsElement(nodes2.get(1), "x", z, 5, 7);
-		assertIsText(nodes2.get(2), "e", 8, 9);
-		assertIsElement(nodes2.get(3), "y", z, 9, 11);
-		assertIsText(nodes2.get(4), "gh", 12, 14);
-		x = (VEXElement) nodes2.get(1);
-		y = (VEXElement) nodes2.get(3);
-		nodes2 = x.getChildNodes();
-		assertEquals(1, nodes2.size());
-		assertIsText(nodes2.get(0), "d", 6, 7);
-		nodes2 = y.getChildNodes();
-		assertEquals(1, nodes2.size());
-		assertIsText(nodes2.get(0), "f", 10, 11);
+		nodes = root.getChildNodes();
+		assertEquals(3, nodes.length);
+		assertIsText(nodes[0], "a", 1, 2);
+		assertIsElement(nodes[1], "z", doc.getRootElement(), 2, 14);
+		assertIsText(nodes[2], "i", 15, 16);
+		z = (IVEXElement) nodes[1];
+		nodes = z.getChildNodes();
+		assertEquals(5, nodes.length);
+		assertIsText(nodes[0], "bc", 3, 5);
+		assertIsElement(nodes[1], "x", z, 5, 7);
+		assertIsText(nodes[2], "e", 8, 9);
+		assertIsElement(nodes[3], "y", z, 9, 11);
+		assertIsText(nodes[4], "gh", 12, 14);
+		x = (IVEXElement) nodes[1];
+		y = (IVEXElement) nodes[3];
+		nodes = x.getChildNodes();
+		assertEquals(1, nodes.length);
+		assertIsText(nodes[0], "d", 6, 7);
+		nodes = y.getChildNodes();
+		assertEquals(1, nodes.length);
+		assertIsText(nodes[0], "f", 10, 11);
 
 		// 3d: remove and re-insert the same frag as in 3b
 		frag = doc.getFragment(2, 15);
@@ -322,41 +296,41 @@
 
 		root = doc.getRootElement();
 		assertIsElement(root, "root", null, 0, 16);
-		nodes2 = root.getChildNodes();
-		assertEquals(3, nodes2.size());
-		assertIsText(nodes2.get(0), "a", 1, 2);
-		assertIsElement(nodes2.get(1), "z", doc.getRootElement(), 2, 14);
-		assertIsText(nodes2.get(2), "i", 15, 16);
-		z = (VEXElement) nodes2.get(1);
-		nodes2 = z.getChildNodes();
-		assertEquals(5, nodes2.size());
-		assertIsText(nodes2.get(0), "bc", 3, 5);
-		assertIsElement(nodes2.get(1), "x", z, 5, 7);
-		assertIsText(nodes2.get(2), "e", 8, 9);
-		assertIsElement(nodes2.get(3), "y", z, 9, 11);
-		assertIsText(nodes2.get(4), "gh", 12, 14);
-		x = (VEXElement) nodes2.get(1);
-		y = (VEXElement) nodes2.get(3);
-		nodes2 = x.getChildNodes();
-		assertEquals(1, nodes2.size());
-		assertIsText(nodes2.get(0), "d", 6, 7);
-		nodes2 = y.getChildNodes();
-		assertEquals(1, nodes2.size());
-		assertIsText(nodes2.get(0), "f", 10, 11);
+		nodes = root.getChildNodes();
+		assertEquals(3, nodes.length);
+		assertIsText(nodes[0], "a", 1, 2);
+		assertIsElement(nodes[1], "z", doc.getRootElement(), 2, 14);
+		assertIsText(nodes[2], "i", 15, 16);
+		z = (IVEXElement) nodes[1];
+		nodes = z.getChildNodes();
+		assertEquals(5, nodes.length);
+		assertIsText(nodes[0], "bc", 3, 5);
+		assertIsElement(nodes[1], "x", z, 5, 7);
+		assertIsText(nodes[2], "e", 8, 9);
+		assertIsElement(nodes[3], "y", z, 9, 11);
+		assertIsText(nodes[4], "gh", 12, 14);
+		x = (IVEXElement) nodes[1];
+		y = (IVEXElement) nodes[3];
+		nodes = x.getChildNodes();
+		assertEquals(1, nodes.length);
+		assertIsText(nodes[0], "d", 6, 7);
+		nodes = y.getChildNodes();
+		assertEquals(1, nodes.length);
+		assertIsText(nodes[0], "f", 10, 11);
 
 	}
 
-	public void assertIsElement(VEXNode node, String name, VEXElement parent,
+	public void assertIsElement(IVEXNode node, String name, IVEXElement parent,
 			int startOffset, int endOffset) {
 
 		assertTrue(node instanceof Element);
-		assertEquals(name, ((VEXElement) node).getName());
-		assertEquals(parent, ((VEXElement) node).getParent());
+		assertEquals(name, ((IVEXElement) node).getName());
+		assertEquals(parent, ((IVEXElement) node).getParent());
 		assertEquals(startOffset, node.getStartOffset());
 		assertEquals(endOffset, node.getEndOffset());
 	}
 
-	public void assertIsText(VEXNode node, String text, int startOffset,
+	public void assertIsText(IVEXNode node, String text, int startOffset,
 			int endOffset) {
 
 		assertTrue(node instanceof Text);
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContentTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContentTest.java
index 33462ed..300911b 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContentTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/GapContentTest.java
@@ -11,7 +11,7 @@
 package org.eclipse.wst.xml.vex.core.internal.dom;
 
 import org.eclipse.wst.xml.vex.core.internal.dom.GapContent;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.Position;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IPosition;
 
 import junit.framework.TestCase;
 
@@ -38,11 +38,11 @@
 		content.insertString(1, "b");
 		assertEquals(4, content.getLength());
 
-		Position pa = content.createPosition(0);
-		Position pb = content.createPosition(1);
-		Position pc = content.createPosition(2);
-		Position pd = content.createPosition(3);
-		Position pe = content.createPosition(4);
+		IPosition pa = content.createPosition(0);
+		IPosition pb = content.createPosition(1);
+		IPosition pc = content.createPosition(2);
+		IPosition pd = content.createPosition(3);
+		IPosition pe = content.createPosition(4);
 
 		try {
 			content.getString(-1, 1);
@@ -110,8 +110,8 @@
 		assertEquals(5, pd.getOffset());
 		assertEquals(6, pe.getOffset());
 
-		Position px = content.createPosition(2);
-		Position py = content.createPosition(3);
+		IPosition px = content.createPosition(2);
+		IPosition py = content.createPosition(3);
 
 		content.remove(2, 2);
 
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/SpaceNormalizerTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/SpaceNormalizerTest.java
index 0df56f1..0c1d6c9 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/SpaceNormalizerTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/dom/SpaceNormalizerTest.java
@@ -14,7 +14,6 @@
 import java.io.IOException;
 import java.net.URL;
 import java.util.Enumeration;
-import java.util.List;
 
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParserFactory;
@@ -41,9 +40,9 @@
 import org.eclipse.wst.xml.vex.core.internal.dom.DocumentBuilder;
 import org.eclipse.wst.xml.vex.core.internal.dom.Element;
 import org.eclipse.wst.xml.vex.core.internal.dom.Text;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXElement;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXNode;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXElement;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXNode;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicyFactory;
 import org.eclipse.wst.xml.vex.core.internal.widget.CssWhitespacePolicy;
@@ -165,38 +164,38 @@
 
 		StyleSheet ss = getStyleSheet();
 
-		VEXDocument doc = createDocument(input, ss);
-		VEXElement element;
+		IVEXDocument doc = createDocument(input, ss);
+		IVEXElement element;
 
 		element = doc.getRootElement();
 		assertContent(element, new String[] { "<block>", "<block>", "<block>",
 				"<block>" });
 
-		List<VEXElement> children = element.getChildElements();
+		IVEXElement[] children = element.getChildElements();
 
 		// --- Block 0 ---
 
-		assertContent(children.get(0), new String[] { "foo ", "<inline>", " baz" });
-		List<VEXElement> c2 = children.get(0).getChildElements();
-		assertContent(c2.get(0), new String[] { "foo bar" });
+		assertContent(children[0], new String[] { "foo ", "<inline>", " baz" });
+		IVEXElement[] c2 = children[0].getChildElements();
+		assertContent(c2[0], new String[] { "foo bar" });
 
 		// --- Block 1 ---
 
-		assertContent(children.get(1), new String[] { "foo", "<block>", "baz" });
-		c2 = children.get(1).getChildElements();
-		assertContent(c2.get(0), new String[] { "bar" });
+		assertContent(children[1], new String[] { "foo", "<block>", "baz" });
+		c2 = children[1].getChildElements();
+		assertContent(c2[0], new String[] { "bar" });
 
 		// --- Block 2 ---
 
-		assertContent(children.get(2), new String[] { "foo", "<inline>", "baz" });
-		c2 = children.get(2).getChildElements();
-		assertContent(c2.get(0), new String[] { "foo bar" });
+		assertContent(children[2], new String[] { "foo", "<inline>", "baz" });
+		c2 = children[2].getChildElements();
+		assertContent(c2[0], new String[] { "foo bar" });
 
 		// --- Block 3 ---
 
-		assertContent(children.get(3), new String[] { "foo", "<block>", "baz" });
-		c2 = children.get(3).getChildElements();
-		assertContent(c2.get(0), new String[] { "bar" });
+		assertContent(children[3], new String[] { "foo", "<block>", "baz" });
+		c2 = children[3].getChildElements();
+		assertContent(c2[0], new String[] { "bar" });
 
 	}
 
@@ -206,12 +205,12 @@
 
 		String input = "<doc>\n " + "<pre>\n foo\n</pre>\n " + "\n </doc>";
 
-		VEXDocument doc = createDocument(input, getStyleSheet());
+		IVEXDocument doc = createDocument(input, getStyleSheet());
 
-		VEXElement element = doc.getRootElement();
+		IVEXElement element = doc.getRootElement();
 		assertContent(element, new String[] { "<pre>" });
 
-		VEXElement pre = element.getChildElements().get(0);
+		IVEXElement pre = element.getChildElements()[0];
 		assertContent(pre, new String[] { "\n foo\n" });
 	}
 
@@ -222,11 +221,11 @@
 				+ "<pre>\n foo\n <inline>\n foo\n bar\n </inline></pre>\n "
 				+ "\n </doc>";
 
-		VEXDocument doc = createDocument(input, getStyleSheet());
+		IVEXDocument doc = createDocument(input, getStyleSheet());
 
-		VEXElement element = doc.getRootElement();
-		VEXElement pre = element.getChildElements().get(0);
-		VEXElement inline = pre.getChildElements().get(0);
+		IVEXElement element = doc.getRootElement();
+		IVEXElement pre = element.getChildElements()[0];
+		IVEXElement inline = pre.getChildElements()[0];
 		assertContent(inline, new String[] { "\n foo\n bar\n " });
 	}
 
@@ -238,16 +237,16 @@
 				+ "<pre>\n\t foo\n\t <inline>\n\t foo\n\t bar\n\t </inline>\n\t baz\n\t </pre>\n "
 				+ "\n </doc>";
 
-		VEXDocument doc = createDocument(input, getStyleSheet());
+		IVEXDocument doc = createDocument(input, getStyleSheet());
 
-		VEXElement element = doc.getRootElement();
+		IVEXElement element = doc.getRootElement();
 		assertContent(element, new String[] { "<pre>" });
 
-		VEXElement pre = element.getChildElements().get(0);
+		IVEXElement pre = element.getChildElements()[0];
 		assertContent(pre,
 				new String[] { "\n\t foo\n\t ", "<inline>", "\n\t baz\n\t " });
 
-		VEXElement inline = pre.getChildElements().get(0);
+		IVEXElement inline = pre.getChildElements()[0];
 		assertContent(inline, new String[] { "\n\t foo\n\t bar\n\t " });
 	}
 
@@ -267,23 +266,23 @@
 	 * string in content is enclosed in angle brackets, it's assume to refer to
 	 * the name of an element; otherwise, it represents text content.
 	 */
-	private void assertContent(VEXElement element, String[] strings) {
-		List<VEXNode> content = element.getChildNodes();
-		assertEquals(strings.length, content.size());
+	private void assertContent(IVEXElement element, String[] strings) {
+		IVEXNode[] content = element.getChildNodes();
+		assertEquals(strings.length, content.length);
 		for (int i = 0; i < strings.length; i++) {
 			if (strings[i].startsWith("<")) {
 				String name = strings[i].substring(1, strings[i].length() - 1);
-				assertTrue(content.get(i) instanceof Element);
-				assertEquals(name, ((VEXElement) content.get(i)).getName());
+				assertTrue(content[i] instanceof Element);
+				assertEquals(name, ((IVEXElement) content[i]).getName());
 			} else {
-				assertTrue(content.get(i) instanceof Text);
-				String contentText = content.get(i).getText();
+				assertTrue(content[i] instanceof Text);
+				String contentText = content[i].getText();
 				assertEquals(strings[i], contentText);
 			}
 		}
 	}
 
-	private VEXDocument createDocument(String s, StyleSheet ss)
+	private IVEXDocument createDocument(String s, StyleSheet ss)
 			throws ParserConfigurationException, SAXException, IOException {
 
 		SAXParserFactory factory = SAXParserFactory.newInstance();
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutTestSuite.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutTestSuite.java
index eb321f0..ad5c66c 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutTestSuite.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/LayoutTestSuite.java
@@ -32,7 +32,7 @@
 import org.eclipse.wst.xml.vex.core.internal.layout.LayoutContext;
 import org.eclipse.wst.xml.vex.core.internal.layout.RootBox;
 import org.eclipse.wst.xml.vex.core.internal.layout.TextBox;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicy;
 import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IWhitespacePolicyFactory;
 import org.eclipse.wst.xml.vex.core.internal.widget.CssWhitespacePolicy;
@@ -111,7 +111,7 @@
 				return new CssWhitespacePolicy(ss);
 			}
 		});
-		VEXDocument doc = docReader.read(this.doc);
+		IVEXDocument doc = docReader.read(this.doc);
 		context.setDocument(doc);
 
 		RootBox rootBox = new RootBox(context, doc.getRootElement(),
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlockElementBox.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlockElementBox.java
index a6f29a2..9efa04c 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlockElementBox.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlockElementBox.java
@@ -22,7 +22,7 @@
 import org.eclipse.wst.xml.vex.core.internal.layout.Box;
 import org.eclipse.wst.xml.vex.core.internal.layout.LayoutContext;
 import org.eclipse.wst.xml.vex.core.internal.layout.RootBox;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 
 import junit.framework.TestCase;
 
@@ -47,7 +47,7 @@
  
 	public void testBeforeAfter() throws Exception {
 		RootElement root = new RootElement("root");
-		VEXDocument doc = new Document(root);
+		IVEXDocument doc = new Document(root);
 		doc.insertElement(1, new Element("beforeBlock"));
 		context.setDocument(doc);
 
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlocksInInlines.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlocksInInlines.java
index 648f698..d9b8721 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlocksInInlines.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestBlocksInInlines.java
@@ -21,7 +21,7 @@
 import org.eclipse.wst.xml.vex.core.internal.dom.RootElement;
 import org.eclipse.wst.xml.vex.core.internal.layout.LayoutContext;
 import org.eclipse.wst.xml.vex.core.internal.layout.RootBox;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 
 import junit.framework.TestCase;
 
@@ -56,7 +56,7 @@
 
 	public void testBlockInInline() throws Exception {
 		RootElement root = new RootElement("root");
-		VEXDocument doc = new Document(root);
+		IVEXDocument doc = new Document(root);
 		context.setDocument(doc);
 
 		doc.insertText(1, "one  five");
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestDocumentTextBox.java b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestDocumentTextBox.java
index 8fa832d..bf1b063 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestDocumentTextBox.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.core.tests/src/org/eclipse/wst/xml/vex/core/internal/layout/TestDocumentTextBox.java
@@ -21,7 +21,7 @@
 import org.eclipse.wst.xml.vex.core.internal.layout.DocumentTextBox;
 import org.eclipse.wst.xml.vex.core.internal.layout.InlineBox;
 import org.eclipse.wst.xml.vex.core.internal.layout.LayoutContext;
-import org.eclipse.wst.xml.vex.core.internal.provisional.dom.VEXDocument;
+import org.eclipse.wst.xml.vex.core.internal.provisional.dom.IVEXDocument;
 
 import junit.framework.TestCase;
 
@@ -51,7 +51,7 @@
 
 	public void testSplit() throws Exception {
 		RootElement root = new RootElement("root");
-		VEXDocument doc = new Document(root);
+		IVEXDocument doc = new Document(root);
 
 		Styles styles = this.context.getStyleSheet().getStyles(root);