This commit was manufactured by cvs2svn to create tag 'R3_4_0'.
diff --git a/docs/org.eclipse.wst.validation.infopop/build.properties b/docs/org.eclipse.wst.validation.infopop/build.properties
index ea3d3bb..79adbe8 100644
--- a/docs/org.eclipse.wst.validation.infopop/build.properties
+++ b/docs/org.eclipse.wst.validation.infopop/build.properties
@@ -4,4 +4,5 @@
                ValidationProjPrefs_HelpContexts.xml,\
                plugin.properties,\
                about.html
-generateSourceBundle=false
+src.includes = build.properties
+generateSourceBundle=false
\ No newline at end of file
diff --git a/features/org.eclipse.jst.common_core.feature.patch/.project b/features/org.eclipse.jst.common_core.feature.patch/.project
deleted file mode 100644
index 4e28137..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jst.common_core.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.jst.common_core.feature.patch/build.properties b/features/org.eclipse.jst.common_core.feature.patch/build.properties
deleted file mode 100644
index cb50260..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = feature.xml,\
-               license.html,\
-               feature.properties,\
-               epl-v10.html,\
-               eclipse_update_120.jpg
diff --git a/features/org.eclipse.jst.common_core.feature.patch/buildnotes_org.eclipse.jst.common_core.feature.patch.html b/features/org.eclipse.jst.common_core.feature.patch/buildnotes_org.eclipse.jst.common_core.feature.patch.html
deleted file mode 100644
index 0905df1..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/buildnotes_org.eclipse.jst.common_core.feature.patch.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<meta name="Build" content="Build">
-<title>Web Tools Platform Patch Build Notes</title>
-</head>
-
-<body>
-
-<h1>WTP 3.0.5 Patches</h1>
-
-<p>Bug <a href='https://bugs.eclipse.org/288543'>288543</a>. Classpath container facet runtime mapping can become out of sync</p>
-
-
-</body>
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.jst.common_core.feature.patch/eclipse_update_120.jpg b/features/org.eclipse.jst.common_core.feature.patch/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.jst.common_core.feature.patch/epl-v10.html b/features/org.eclipse.jst.common_core.feature.patch/epl-v10.html
deleted file mode 100644
index e06ad62..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/epl-v10.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Public License - Version 1.0</title>
-<style type="text/css">
-  body {
-    size: 8.5in 11.0in;
-    margin: 0.25in 0.5in 0.25in 0.5in;
-    tab-interval: 0.5in;
-    }
-  p {   
-    margin-left: auto;
-    margin-top:  0.5em;
-    margin-bottom: 0.5em;
-    }
-  p.list {
-    margin-left: 0.5in;
-    margin-top:  0.05em;
-    margin-bottom: 0.05em;
-    }
-  </style>
-
-</head>
-
-<body lang="EN-US">
-
-<p align=center><b>Eclipse Public License - v 1.0</b></p>
-
-<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
-DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
-AGREEMENT.</p>
-
-<p><b>1. DEFINITIONS</b></p>
-
-<p>&quot;Contribution&quot; means:</p>
-
-<p class="list">a) in the case of the initial Contributor, the initial
-code and documentation distributed under this Agreement, and</p>
-<p class="list">b) in the case of each subsequent Contributor:</p>
-
-<p class="list">i) changes to the Program, and</p>
-<p class="list">ii) additions to the Program;</p>
-<p class="list">where such changes and/or additions to the Program
-originate from and are distributed by that particular Contributor. A
-Contribution 'originates' from a Contributor if it was added to the
-Program by such Contributor itself or anyone acting on such
-Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.</p>
-
-<p>&quot;Contributor&quot; means any person or entity that distributes
-the Program.</p>
-
-<p>&quot;Licensed Patents&quot; mean patent claims licensable by a
-Contributor which are necessarily infringed by the use or sale of its
-Contribution alone or when combined with the Program.</p>
-
-<p>&quot;Program&quot; means the Contributions distributed in accordance
-with this Agreement.</p>
-
-<p>&quot;Recipient&quot; means anyone who receives the Program under
-this Agreement, including all Contributors.</p>
-
-<p><b>2. GRANT OF RIGHTS</b></p>
-
-<p class="list">a) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free copyright license to reproduce, prepare derivative works
-of, publicly display, publicly perform, distribute and sublicense the
-Contribution of such Contributor, if any, and such derivative works, in
-source code and object code form.</p>
-
-<p class="list">b) Subject to the terms of this Agreement, each
-Contributor hereby grants Recipient a non-exclusive, worldwide,
-royalty-free patent license under Licensed Patents to make, use, sell,
-offer to sell, import and otherwise transfer the Contribution of such
-Contributor, if any, in source code and object code form. This patent
-license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor,
-such addition of the Contribution causes such combination to be covered
-by the Licensed Patents. The patent license shall not apply to any other
-combinations which include the Contribution. No hardware per se is
-licensed hereunder.</p>
-
-<p class="list">c) Recipient understands that although each Contributor
-grants the licenses to its Contributions set forth herein, no assurances
-are provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.</p>
-
-<p class="list">d) Each Contributor represents that to its knowledge it
-has sufficient copyright rights in its Contribution, if any, to grant
-the copyright license set forth in this Agreement.</p>
-
-<p><b>3. REQUIREMENTS</b></p>
-
-<p>A Contributor may choose to distribute the Program in object code
-form under its own license agreement, provided that:</p>
-
-<p class="list">a) it complies with the terms and conditions of this
-Agreement; and</p>
-
-<p class="list">b) its license agreement:</p>
-
-<p class="list">i) effectively disclaims on behalf of all Contributors
-all warranties and conditions, express and implied, including warranties
-or conditions of title and non-infringement, and implied warranties or
-conditions of merchantability and fitness for a particular purpose;</p>
-
-<p class="list">ii) effectively excludes on behalf of all Contributors
-all liability for damages, including direct, indirect, special,
-incidental and consequential damages, such as lost profits;</p>
-
-<p class="list">iii) states that any provisions which differ from this
-Agreement are offered by that Contributor alone and not by any other
-party; and</p>
-
-<p class="list">iv) states that source code for the Program is available
-from such Contributor, and informs licensees how to obtain it in a
-reasonable manner on or through a medium customarily used for software
-exchange.</p>
-
-<p>When the Program is made available in source code form:</p>
-
-<p class="list">a) it must be made available under this Agreement; and</p>
-
-<p class="list">b) a copy of this Agreement must be included with each
-copy of the Program.</p>
-
-<p>Contributors may not remove or alter any copyright notices contained
-within the Program.</p>
-
-<p>Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.</p>
-
-<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
-
-<p>Commercial distributors of software may accept certain
-responsibilities with respect to end users, business partners and the
-like. While this license is intended to facilitate the commercial use of
-the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create
-potential liability for other Contributors. Therefore, if a Contributor
-includes the Program in a commercial product offering, such Contributor
-(&quot;Commercial Contributor&quot;) hereby agrees to defend and
-indemnify every other Contributor (&quot;Indemnified Contributor&quot;)
-against any losses, damages and costs (collectively &quot;Losses&quot;)
-arising from claims, lawsuits and other legal actions brought by a third
-party against the Indemnified Contributor to the extent caused by the
-acts or omissions of such Commercial Contributor in connection with its
-distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In
-order to qualify, an Indemnified Contributor must: a) promptly notify
-the Commercial Contributor in writing of such claim, and b) allow the
-Commercial Contributor to control, and cooperate with the Commercial
-Contributor in, the defense and any related settlement negotiations. The
-Indemnified Contributor may participate in any such claim at its own
-expense.</p>
-
-<p>For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.</p>
-
-<p><b>5. NO WARRANTY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
-PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
-OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
-ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
-OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to
-the risks and costs of program errors, compliance with applicable laws,
-damage to or loss of data, programs or equipment, and unavailability or
-interruption of operations.</p>
-
-<p><b>6. DISCLAIMER OF LIABILITY</b></p>
-
-<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
-NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<p><b>7. GENERAL</b></p>
-
-<p>If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.</p>
-
-<p>If Recipient institutes patent litigation against any entity
-(including a cross-claim or counterclaim in a lawsuit) alleging that the
-Program itself (excluding combinations of the Program with other
-software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the
-date such litigation is filed.</p>
-
-<p>All Recipient's rights under this Agreement shall terminate if it
-fails to comply with any of the material terms or conditions of this
-Agreement and does not cure such failure in a reasonable period of time
-after becoming aware of such noncompliance. If all Recipient's rights
-under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive.</p>
-
-<p>Everyone is permitted to copy and distribute copies of this
-Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The
-Agreement Steward reserves the right to publish new versions (including
-revisions) of this Agreement from time to time. No one other than the
-Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may
-assign the responsibility to serve as the Agreement Steward to a
-suitable separate entity. Each new version of the Agreement will be
-given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version
-of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as
-expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
-rights or licenses to the intellectual property of any Contributor under
-this Agreement, whether expressly, by implication, estoppel or
-otherwise. All rights in the Program not expressly granted under this
-Agreement are reserved.</p>
-
-<p>This Agreement is governed by the laws of the State of New York and
-the intellectual property laws of the United States of America. No party
-to this Agreement will bring a legal action under this Agreement more
-than one year after the cause of action arose. Each party waives its
-rights to a jury trial in any resulting litigation.</p>
-
-</body>
-
-</html>
diff --git a/features/org.eclipse.jst.common_core.feature.patch/feature.properties b/features/org.eclipse.jst.common_core.feature.patch/feature.properties
deleted file mode 100644
index 7c389f6..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/feature.properties
+++ /dev/null
@@ -1,147 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WTP Patches for org.eclipse.jst.common_core.feature
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=\
-The bugs and fixes are described in the following bugzilla entries:\n\
-\n\
-Bug https://bugs.eclipse.org/288543 Classpath container facet runtime mapping can become out of sync\n\
-\n\
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2008 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-August, 2008\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.jst.common_core.feature.patch/feature.xml b/features/org.eclipse.jst.common_core.feature.patch/feature.xml
deleted file mode 100644
index 5bac988..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/feature.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.jst.common_core.feature.patch"
-      label="%featureName"
-      version="3.0.2.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.jst.common_core.feature" version="3.0.2.v200809102124-2518s733I3G395I75" patch="true"/>
-   </requires>
-
-   <plugin
-         id="org.eclipse.jst.common.project.facet.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.jst.common_core.feature.patch/license.html b/features/org.eclipse.jst.common_core.feature.patch/license.html
deleted file mode 100644
index 2347060..0000000
--- a/features/org.eclipse.jst.common_core.feature.patch/license.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>January 28, 2005</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI></UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.common_core.feature.patch/.project b/features/org.eclipse.wst.common_core.feature.patch/.project
deleted file mode 100644
index eb1e1ea..0000000
--- a/features/org.eclipse.wst.common_core.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common_core.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.common_core.feature.patch/description.txt b/features/org.eclipse.wst.common_core.feature.patch/description.txt
deleted file mode 100644
index a1fc6d0..0000000
--- a/features/org.eclipse.wst.common_core.feature.patch/description.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-The HEAD branch of this patch feature is intentionally empty, 
-to attempt to try and avoid confusion. 
-
-Please load the correct version from the branch of the related patch.
diff --git a/features/org.eclipse.wst.common_core.feature/build.properties b/features/org.eclipse.wst.common_core.feature/build.properties
index 364480b..3e69ba2 100644
--- a/features/org.eclipse.wst.common_core.feature/build.properties
+++ b/features/org.eclipse.wst.common_core.feature/build.properties
@@ -1,6 +1,4 @@
 bin.includes = feature.xml,\
                eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
                feature.properties
 
diff --git a/features/org.eclipse.wst.common_core.feature/epl-v10.html b/features/org.eclipse.wst.common_core.feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_core.feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_core.feature/feature.properties b/features/org.eclipse.wst.common_core.feature/feature.properties
index ad6f6f3..00d5dd1 100644
--- a/features/org.eclipse.wst.common_core.feature/feature.properties
+++ b/features/org.eclipse.wst.common_core.feature/feature.properties
@@ -20,8 +20,6 @@
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=WST common core functionality.
@@ -40,131 +38,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_core.feature/feature.xml b/features/org.eclipse.wst.common_core.feature/feature.xml
index dab258b..8bc7d18 100644
--- a/features/org.eclipse.wst.common_core.feature/feature.xml
+++ b/features/org.eclipse.wst.common_core.feature/feature.xml
@@ -2,8 +2,10 @@
 <feature
       id="org.eclipse.wst.common_core.feature"
       label="%featureName"
-      version="3.2.0.qualifier"
-      provider-name="%providerName">
+      version="3.4.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="1.0.0.qualifier">
 
    <description>
       %description
@@ -17,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
    <plugin
          id="org.eclipse.wst.common.emfworkbench.integration"
          download-size="0"
diff --git a/features/org.eclipse.wst.common_core.feature/license.html b/features/org.eclipse.wst.common_core.feature/license.html
deleted file mode 100644
index c184ca3..0000000
--- a/features/org.eclipse.wst.common_core.feature/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties
index f249e9f..be839a7 100644
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties
+++ b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/build.properties
@@ -9,8 +9,6 @@
 #     IBM Corporation - initial API and implementation
 ###############################################################################
 bin.includes =\
-epl-v10.html,\
 eclipse_update_120.jpg,\
 feature.xml,\
 feature.properties,\
-license.html
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/epl-v10.html b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/epl-v10.html
deleted file mode 100644
index 022ad29..0000000
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties
index a13c12d..65863b08 100644
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties
+++ b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/feature.properties
@@ -19,8 +19,6 @@
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=Source code zips for WST common core.
@@ -39,131 +37,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/license.html b/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/license.html
deleted file mode 100644
index c184ca3..0000000
--- a/features/org.eclipse.wst.common_core.feature/sourceTemplateFeature/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/features/org.eclipse.wst.common_sdk.feature/build.properties b/features/org.eclipse.wst.common_sdk.feature/build.properties
index b730e78..3edf592 100644
--- a/features/org.eclipse.wst.common_sdk.feature/build.properties
+++ b/features/org.eclipse.wst.common_sdk.feature/build.properties
@@ -1,8 +1,6 @@
 bin.includes = feature.xml,\
-               epl-v10.html,\
-               license.html,\
                eclipse_update_120.jpg,\
                feature.properties
 generate.feature@org.eclipse.wst.common_ui.feature.source=org.eclipse.wst.common_ui.feature, feature@org.eclipse.wst.common_core.feature.source  
 
-               
\ No newline at end of file
+               
diff --git a/features/org.eclipse.wst.common_sdk.feature/epl-v10.html b/features/org.eclipse.wst.common_sdk.feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_sdk.feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_sdk.feature/feature.properties b/features/org.eclipse.wst.common_sdk.feature/feature.properties
index 54419f0..c4b4fe1 100644
--- a/features/org.eclipse.wst.common_sdk.feature/feature.properties
+++ b/features/org.eclipse.wst.common_sdk.feature/feature.properties
@@ -20,8 +20,6 @@
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=Source code zips for WST common tools
@@ -40,131 +38,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_sdk.feature/feature.xml b/features/org.eclipse.wst.common_sdk.feature/feature.xml
index e1fe0c9..c9315ff 100644
--- a/features/org.eclipse.wst.common_sdk.feature/feature.xml
+++ b/features/org.eclipse.wst.common_sdk.feature/feature.xml
@@ -2,8 +2,10 @@
 <feature
       id="org.eclipse.wst.common_sdk.feature"
       label="%featureName"
-      version="3.2.0.qualifier"
-      provider-name="%providerName">
+      version="3.4.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="1.0.0.qualifier">
 
    <description>
       %description
@@ -17,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
    <includes
          id="org.eclipse.wst.common_ui.feature"
          version="0.0.0"/>
diff --git a/features/org.eclipse.wst.common_sdk.feature/license.html b/features/org.eclipse.wst.common_sdk.feature/license.html
deleted file mode 100644
index c184ca3..0000000
--- a/features/org.eclipse.wst.common_sdk.feature/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/.cvsignore b/features/org.eclipse.wst.common_ui.feature.patch/.cvsignore
deleted file mode 100644
index c14487c..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-build.xml
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/.project b/features/org.eclipse.wst.common_ui.feature.patch/.project
deleted file mode 100644
index 0dbb12b..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.wst.common_ui.feature.patch</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/build.properties b/features/org.eclipse.wst.common_ui.feature.patch/build.properties
deleted file mode 100644
index cb50260..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = feature.xml,\
-               license.html,\
-               feature.properties,\
-               epl-v10.html,\
-               eclipse_update_120.jpg
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/buildnotes_org.eclipse.wst.common_ui.feature.patch.html b/features/org.eclipse.wst.common_ui.feature.patch/buildnotes_org.eclipse.wst.common_ui.feature.patch.html
deleted file mode 100644
index 5b24322..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/buildnotes_org.eclipse.wst.common_ui.feature.patch.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-<meta name="Build" content="Build">
-<title>WTP 3.0.1 Patches</title>
-</head>
-
-<body>
-
-<h1>WTP 3.0.1 Patches</h1>
-
-<h2>org.eclipse.wst.common_ui.feature</h2>
-
-<p>Bug <a
-	href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=245745'>245745</a>.
-NullPointerException in
-FacetedProjectWorkingCopy.isFacetAvailable(IProjectFacetVersion)</p>
-</body>
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/eclipse_update_120.jpg b/features/org.eclipse.wst.common_ui.feature.patch/eclipse_update_120.jpg
deleted file mode 100644
index bfdf708..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/eclipse_update_120.jpg
+++ /dev/null
Binary files differ
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/epl-v10.html b/features/org.eclipse.wst.common_ui.feature.patch/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/feature.properties b/features/org.eclipse.wst.common_ui.feature.patch/feature.properties
deleted file mode 100644
index 5d12dfa..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/feature.properties
+++ /dev/null
@@ -1,148 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=WTP Patches for org.eclipse.wst.common_ui.feature
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse.org
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
-
-# "description" property - description of the feature
-description=\
-Contains fixes described in the following bugillia(s):\n\
-\n\
-Bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=245745 NullPointerException in FacetedProjectWorkingCopy.isFacetAvailable(IProjectFacetVersion)\n\
-\n\
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2008 IBM Corporation and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    IBM Corporation - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
-September, 2008\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
-is provided to you under the terms and conditions of the Eclipse Public\n\
-License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
-Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse.org CVS\n\
-repository ("Repository") in CVS modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-   - Content may be structured and packaged into modules to facilitate delivering,\n\
-     extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-     plug-in fragments ("Fragments"), and features ("Features").\n\
-   - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java? ARchive)\n\
-     in a directory named "plugins".\n\
-   - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-     Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-     Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-     numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-   - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-     named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-Features may also include other Features ("Included Features"). Files named\n\
-"feature.xml" may contain a list of the names and version numbers of\n\
-Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-   - The top-level (root) directory\n\
-   - Plug-in and Fragment directories\n\
-   - Inside Plug-ins and Fragments packaged as JARs\n\
-   - Sub-directories of the directory named "src" of certain Plug-ins\n\
-   - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Eclipse Update Manager, you must agree to a license ("Feature Update\n\
-License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties". Such Abouts,\n\
-Feature Licenses and Feature Update Licenses contain the terms and\n\
-conditions (or references to such terms and conditions) that govern your\n\
-use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-    - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
-    - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use,\n\
-and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/feature.xml b/features/org.eclipse.wst.common_ui.feature.patch/feature.xml
deleted file mode 100644
index 256dac2..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/feature.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.wst.common_ui.feature.patch"
-      label="%featureName"
-      version="3.0.1.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <requires>
-      <import feature="org.eclipse.wst.common_ui.feature" version="3.0.1.v200807220139-7C78ELWE8VrRVorIr-jb1AsOaXHW" patch="true"/>
-   </requires>
-
-
-   <plugin
-         id="org.eclipse.wst.common.project.facet.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-         
-</feature>
diff --git a/features/org.eclipse.wst.common_ui.feature.patch/license.html b/features/org.eclipse.wst.common_ui.feature.patch/license.html
deleted file mode 100644
index 2347060..0000000
--- a/features/org.eclipse.wst.common_ui.feature.patch/license.html
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
-<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html -->
-<HTML><HEAD><TITLE>Eclipse.org Software User Agreement</TITLE>
-<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
-<META content="MSHTML 6.00.2800.1479" name=GENERATOR></HEAD>
-<BODY lang=EN-US vLink=purple link=blue>
-<H2>Eclipse Foundation Software User Agreement</H2>
-<P>January 28, 2005</P>
-<H3>Usage Of Content</H3>
-<P>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION 
-AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF 
-THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE 
-TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED 
-BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED 
-BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE 
-AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE 
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY 
-APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU 
-MAY NOT USE THE CONTENT.</P>
-<H3>Applicable Licenses</H3>
-<P>Unless otherwise indicated, all Content made available by the Eclipse 
-Foundation is provided to you under the terms and conditions of the Eclipse 
-Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this 
-Content and is also available at <A 
-href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</A>. 
-For purposes of the EPL, "Program" will mean the Content.</P>
-<P>Content includes, but is not limited to, source code, object code, 
-documentation and other files maintained in the Eclipse.org CVS repository 
-("Repository") in CVS modules ("Modules") and made available as downloadable 
-archives ("Downloads").</P>
-<P>Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments 
-("Fragments"), and features ("Features"). A Feature is a bundle of one or more 
-Plug-ins and/or Fragments and associated material. Files named "feature.xml" may 
-contain a list of the names and version numbers of the Plug-ins and/or Fragments 
-associated with a Feature. Plug-ins and Fragments are located in directories 
-named "plugins" and Features are located in directories named "features".</P>
-<P>Features may also include other Features ("Included Features"). Files named 
-"feature.xml" may contain a list of the names and version numbers of Included 
-Features.</P>
-<P>The terms and conditions governing Plug-ins and Fragments should be contained 
-in files named "about.html" ("Abouts"). The terms and conditions governing 
-Features and Included Features should be contained in files named "license.html" 
-("Feature Licenses"). Abouts and Feature Licenses may be located in any 
-directory of a Download or Module including, but not limited to the following 
-locations:</P>
-<UL>
-  <LI>The top-level (root) directory 
-  <LI>Plug-in and Fragment directories 
-  <LI>Subdirectories of the directory named "src" of certain Plug-ins 
-  <LI>Feature directories </LI></UL>
-<P>Note: if a Feature made available by the Eclipse Foundation is installed 
-using the Eclipse Update Manager, you must agree to a license ("Feature Update 
-License") during the installation process. If the Feature contains Included 
-Features, the Feature Update License should either provide you with the terms 
-and conditions governing the Included Features or inform you where you can 
-locate them. Feature Update Licenses may be found in the "license" property of 
-files named "feature.properties". Such Abouts, Feature Licenses and Feature 
-Update Licenses contain the terms and conditions (or references to such terms 
-and conditions) that govern your use of the associated Content in that 
-directory.</P>
-<P>THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL 
-OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE 
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</P>
-<UL>
-  <LI>Common Public License Version 1.0 (available at <A 
-  href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</A>) 
-
-  <LI>Apache Software License 1.1 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</A>) 
-
-  <LI>Apache Software License 2.0 (available at <A 
-  href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</A>) 
-
-  <LI>IBM Public License 1.0 (available at <A 
-  href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</A>) 
-
-  <LI>Metro Link Public License 1.00 (available at <A 
-  href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</A>) 
-
-  <LI>Mozilla Public License Version 1.1 (available at <A 
-  href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</A>) 
-  </LI></UL>
-<P>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR 
-TO USE OF THE CONTENT. If no About, Feature License or Feature Update License is 
-provided, please contact the Eclipse Foundation to determine what terms and 
-conditions govern that particular Content.</P>
-<H3>Cryptography</H3>
-<P>Content may contain encryption software. The country in which you are 
-currently may have restrictions on the import, possession, and use, and/or 
-re-export to another country, of encryption software. BEFORE using any 
-encryption software, please check the country's laws, regulations and policies 
-concerning the import, possession, or use, and re-export of encryption software, 
-to see if this is permitted.</P></BODY></HTML>
diff --git a/features/org.eclipse.wst.common_ui.feature/build.properties b/features/org.eclipse.wst.common_ui.feature/build.properties
index 7f47694..7c626e2 100644
--- a/features/org.eclipse.wst.common_ui.feature/build.properties
+++ b/features/org.eclipse.wst.common_ui.feature/build.properties
@@ -1,5 +1,3 @@
 bin.includes = feature.xml,\
                eclipse_update_120.jpg,\
-               epl-v10.html,\
-               license.html,\
                feature.properties
diff --git a/features/org.eclipse.wst.common_ui.feature/epl-v10.html b/features/org.eclipse.wst.common_ui.feature/epl-v10.html
deleted file mode 100644
index ed4b196..0000000
--- a/features/org.eclipse.wst.common_ui.feature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_ui.feature/feature.properties b/features/org.eclipse.wst.common_ui.feature/feature.properties
index 864d9aa..6c5080f 100644
--- a/features/org.eclipse.wst.common_ui.feature/feature.properties
+++ b/features/org.eclipse.wst.common_ui.feature/feature.properties
@@ -20,8 +20,6 @@
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=WST common UI functionality.
@@ -40,131 +38,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_ui.feature/feature.xml b/features/org.eclipse.wst.common_ui.feature/feature.xml
index 326e47f..b93ba0f 100644
--- a/features/org.eclipse.wst.common_ui.feature/feature.xml
+++ b/features/org.eclipse.wst.common_ui.feature/feature.xml
@@ -2,8 +2,10 @@
 <feature
       id="org.eclipse.wst.common_ui.feature"
       label="%featureName"
-      version="3.2.0.qualifier"
-      provider-name="%providerName">
+      version="3.4.0.qualifier"
+      provider-name="%providerName"
+      license-feature="org.eclipse.license"
+      license-feature-version="1.0.0.qualifier">
 
    <description>
       %description
@@ -17,10 +19,6 @@
       %license
    </license>
 
-   <url>
-      <update label="%updateSiteName" url="http://download.eclipse.org/webtools/updates/"/>
-   </url>
-
    <includes
          id="org.eclipse.wst.common_core.feature"
          version="0.0.0"/>
diff --git a/features/org.eclipse.wst.common_ui.feature/license.html b/features/org.eclipse.wst.common_ui.feature/license.html
deleted file mode 100644
index c184ca3..0000000
--- a/features/org.eclipse.wst.common_ui.feature/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties
index e4a7dd7..37fd0e9 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/build.properties
@@ -8,9 +8,8 @@
 # Contributors:
 #     IBM Corporation - initial API and implementation
 ###############################################################################
-bin.includes = epl-v10.html,\
+bin.includes = \
                eclipse_update_120.jpg,\
                feature.properties,\
-               license.html,\
                feature.xml
 generate.feature@org.eclipse.wst.common_core.feature.source=org.eclipse.wst.common_core.feature
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/epl-v10.html b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/epl-v10.html
deleted file mode 100644
index 022ad29..0000000
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties
index 6ae4e86..9c51ee6 100644
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties
+++ b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/feature.properties
@@ -20,8 +20,6 @@
 # "providerName" property - name of the company that provides the feature
 providerName=Eclipse Web Tools Platform
 
-# "updateSiteName" property - label for the update site
-updateSiteName=The Eclipse Web Tools Platform (WTP) Project update site
 
 # "description" property - description of the feature
 description=Source code zips for WST Common UI.
@@ -41,131 +39,11 @@
 
 # "licenseURL" property - URL of the "Feature License"
 # do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 
 # "license" property - text of the "Feature Update License"
 # should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+# license and licenseURL properties were removed as a result to migrating to new PDE license support. 
+#    Those properties are now added at build time. See http://wiki.eclipse.org/Equinox/p2/License_Mechanism. 
 ########### end of license property ##########################################
diff --git a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/license.html b/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/license.html
deleted file mode 100644
index c184ca3..0000000
--- a/features/org.eclipse.wst.common_ui.feature/sourceTemplateFeature/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
-   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
index fe14f71..67031dd 100644
--- a/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jem.util/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jem.util; singleton:=true
-Bundle-Version: 2.1.0.qualifier
+Bundle-Version: 2.1.100.qualifier
 Bundle-Activator: org.eclipse.jem.util.plugin.JEMUtilPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
index dcf801f..c5fde83 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/ProjectResourceSetImpl.java
@@ -8,10 +8,6 @@
  * Contributors:
  *     IBM Corporation - initial API and implementation
  *******************************************************************************/
-/*
- *  $$RCSfile: ProjectResourceSetImpl.java,v $$
- *  $$Revision: 1.29 $$  $$Date: 2010/04/02 14:57:15 $$ 
- */
 package org.eclipse.jem.internal.util.emf.workbench;
 
 import java.io.IOException;
@@ -22,8 +18,7 @@
 import org.eclipse.core.runtime.content.IContentDescription;
 import org.eclipse.core.runtime.jobs.ILock;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.*;
 import org.eclipse.emf.common.notify.impl.NotificationImpl;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.URI;
@@ -46,6 +41,247 @@
 		public static final int MODULE_NAME_INDX = 2;
 		public static final int CONTENT_TYPE_INDX = 3;
 	}
+	public class ImmutableEList<E extends Object & Resource> extends ResourcesEList<E> implements EList<E> {
+		
+		
+		private SynchronizedResourcesEList delegate;
+
+		public ImmutableEList(Collection<? extends E> collection) {
+
+		    size = collection.size();
+
+		    // Conditionally create the data.
+		    //
+		    if (size > 0)
+		    { 
+		      // Allow for a bit-shift of growth.
+		      //
+		      data = newData(size + size / 8 + 1); 
+		      collection.toArray(data);
+		    
+		    }
+			delegate = (SynchronizedResourcesEList)collection;
+			
+		}
+
+		@Override
+		public void setData(int size, Object[] data) {
+			super.setData(size, data);
+			delegate.lock.acquire();
+			delegate.setData(size, data);
+			delegate.lock.release();
+		}
+
+		@Override
+		public E setUnique(int index, E object) {
+			Object temp;
+			super.setUnique(index, object);
+			delegate.lock.acquire();
+			temp = delegate.setUnique(index, object);
+			delegate.lock.release();
+			return (E) temp;
+		}
+
+		@Override
+		public void addUnique(E object) {
+			super.addUnique(object);
+			delegate.lock.acquire();
+			delegate.addUnique(object);
+			delegate.lock.release();
+		}
+
+		@Override
+		public void addUnique(int index, E object) {
+			super.addUnique(index, object);
+			delegate.lock.acquire();
+			delegate.addUnique(index, object);
+			delegate.lock.release();
+		}
+
+		@Override
+		public boolean addAllUnique(Collection<? extends E> collection) {
+			boolean temp;
+			super.addAllUnique(collection);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAllUnique(int index, Collection<? extends E> collection) {
+			boolean temp;
+			super.addAllUnique(index, collection);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(index, collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAllUnique(Object[] objects, int start, int end) {
+			boolean temp;
+			super.addAllUnique(objects, start, end);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(objects, start, end);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAllUnique(int index, Object[] objects, int start, int end) {
+			boolean temp;
+			super.addAllUnique(index, objects, start, end);
+			delegate.lock.acquire();
+			temp = delegate.addAllUnique(index, objects, start, end);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public E remove(int index) {
+			Object temp;
+			super.remove(index);
+			delegate.lock.acquire();
+			temp = delegate.remove(index);
+			delegate.lock.release();
+			return (E)temp;
+		}
+
+		@Override
+		public E move(int targetIndex, int sourceIndex) {
+			Object temp;
+			super.move(targetIndex, sourceIndex);
+			delegate.lock.acquire();
+			temp = delegate.move(targetIndex, sourceIndex);
+			delegate.lock.release();
+			return (E) temp;
+		}
+
+		@Override
+		public E set(int index, E object) {
+			Object temp;
+			super.set(index, object);
+			delegate.lock.acquire();
+			temp = delegate.set(index, object);
+			delegate.lock.release();
+			return (E) temp;
+		}
+
+		@Override
+		public boolean add(E object) {
+			boolean temp;
+			super.add(object);
+			delegate.lock.acquire();
+			temp = delegate.add(object);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public void add(int index, E object) {
+			super.add(index, object);
+			delegate.lock.acquire();
+			delegate.add(index, object);
+			delegate.lock.release();
+		}
+
+		@Override
+		public boolean addAll(Collection<? extends E> collection) {
+			boolean temp;
+			super.addAll(collection);
+			delegate.lock.acquire();
+			temp = delegate.addAll(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean addAll(int index, Collection<? extends E> collection) {
+			boolean temp;
+			super.addAll(index, collection);
+			delegate.lock.acquire();
+			temp = delegate.addAll(index, collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean remove(Object object) {
+			boolean temp;
+			super.remove(object);
+			delegate.lock.acquire();
+			temp = delegate.remove(object);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean removeAll(Collection<?> collection) {
+			boolean temp;
+			super.removeAll(collection);
+			delegate.lock.acquire();
+			temp = delegate.removeAll(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public boolean retainAll(Collection<?> collection) {
+			boolean temp;
+			super.retainAll(collection);
+			delegate.lock.acquire();
+			temp = delegate.retainAll(collection);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public void move(int index, E object) {
+			super.move(index, object);
+			delegate.lock.acquire();
+			delegate.move(index, object);
+			delegate.lock.release();
+		}
+
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		public NotificationChain basicAdd(E object, NotificationChain notifications) {
+			NotificationChain temp = super.basicAdd(object, notifications);
+			delegate.lock.acquire();
+			delegate.basicAdd(object, notifications);
+			delegate.lock.release();
+			return temp;
+			
+		}
+
+		@Override
+		public NotificationChain basicRemove(Object object, NotificationChain notifications) {
+			NotificationChain temp = super.basicRemove(object, notifications);
+			delegate.lock.acquire();
+			delegate.basicRemove(object, notifications);
+			delegate.lock.release();
+			return temp;
+		}
+
+		@Override
+		public void clear() {
+			super.clear();
+			delegate.lock.acquire();
+			delegate.clear();
+			delegate.lock.release();
+		}
+
+		@Override
+		public NotificationChain basicSet(int index, E object, NotificationChain notifications) {
+			NotificationChain temp = super.basicSet(index, object, notifications);
+			delegate.lock.acquire();
+			delegate.basicSet(index, object, notifications);
+			delegate.lock.release();
+			return temp;
+		}
+	}
 	
 	public class SynchronizedResourcesEList<E extends Object & Resource> extends ResourcesEList<E> implements EList<E> {
 
@@ -53,8 +289,17 @@
 		 * 
 		 */
 		private static final long serialVersionUID = 1L;
-		private final ILock lock = Job.getJobManager().newLock();
+		protected final ILock lock = Job.getJobManager().newLock();
 
+		public void copyInto(List list){
+			try {
+				lock.acquire();
+				list.addAll(this);
+			} finally {
+				lock.release();
+			}
+		}
+		
 		public void move(int newPosition, E object) {
 			
 			try {
@@ -342,6 +587,79 @@
 
 	}
 
+	public static class ESynchronizedAdapterList extends EAdapterList
+	{
+
+/**
+ * 
+ */
+		private static final long serialVersionUID = 7855438339187540718L;
+
+		public ESynchronizedAdapterList(Notifier notifier) {
+			super(notifier);
+		}
+
+		@Override
+		public synchronized boolean add(Object object)
+		{
+			return super.add(object);
+		}
+
+		@Override
+		public synchronized void add(int index, Object object)
+		{
+			super.add(index, object);
+		}
+
+		@Override
+		public synchronized boolean addAll(Collection collection)
+		{
+			return super.addAll(collection);
+		}
+
+		@Override
+		public synchronized boolean remove(Object object)
+		{
+			return super.remove(object);
+		}
+
+		@Override
+		public synchronized Object remove(int index)
+		{
+			return super.remove(index);
+		}
+
+		@Override
+		public synchronized boolean removeAll(Collection collection)
+		{
+			return super.removeAll(collection);
+		}
+
+		@Override
+		public synchronized void clear()
+		{
+			super.clear();
+		}
+
+		@Override
+		public synchronized Object set(int index, Object object)
+		{
+			return super.set(index, object);
+		}
+
+		@Override
+		public synchronized void move(int newPosition, Object object)
+		{
+			super.move(newPosition, object);
+		}
+
+		@Override
+		public synchronized Object move(int newPosition, int oldPosition)
+		{
+			return super.move(newPosition, oldPosition);
+		}
+	}
+
 	private boolean isReleasing = false;
 	private IProject project;
 	protected List resourceHandlers = new ArrayList();
@@ -413,7 +731,8 @@
 				}
 			}
 		}
-			
+		if(contentTypeName == null)
+			contentTypeName = contentType;
 		
 		
 		Resource result = createResourceFromHandlers(converted);
@@ -649,6 +968,7 @@
 		if (resourceFactoryRegistry != null && factoryReg != null) {
 			preserveEntries(factoryReg.getExtensionToFactoryMap(), resourceFactoryRegistry.getExtensionToFactoryMap());
 			preserveEntries(factoryReg.getProtocolToFactoryMap(), resourceFactoryRegistry.getProtocolToFactoryMap());
+			preserveEntries(factoryReg.getContentTypeToFactoryMap(), resourceFactoryRegistry.getContentTypeToFactoryMap());
 		}
 		super.setResourceFactoryRegistry(factoryReg);
 	}
@@ -690,25 +1010,29 @@
 	    URI normalizedURI = theURIConverter.normalize(uri);
 	    List resourcesToRemove = new ArrayList();
 	    synchronized (resourcesLock) {
-			for (Resource resource : getImmutableResources()) {
-				if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
-
-					if (getContentTypeName(uri) == null) { // loading from legacy archive api or non-typed resource
-						if (loadOnDemand && !resource.isLoaded()) {
-							demandLoadHelper(resource);
+	    	List<Resource> c = getImmutableResources();
+	        
+	        synchronized(c) {
+				for (Resource resource : c) {
+					if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
+	
+						if (getContentTypeName(uri) == null) { // loading from legacy archive api or non-typed resource
+							if (loadOnDemand && !resource.isLoaded()) {
+								demandLoadHelper(resource);
+							}
+	
+							if (map != null) {
+								map.put(uri, resource);
+							}
+							return resource;
+						} else {
+							Resource loadedRes = loadWithContentType(resource, uri, map, loadOnDemand, resourcesToRemove);
+							if (loadedRes != null)
+								return loadedRes;
 						}
-
-						if (map != null) {
-							map.put(uri, resource);
-						}
-						return resource;
-					} else {
-						Resource loadedRes = loadWithContentType(resource, uri, map, loadOnDemand, resourcesToRemove);
-						if (loadedRes != null)
-							return loadedRes;
 					}
 				}
-			}
+	        }
 		}
 	    synchronized (resourcesLock) {
 	    // Cleanup invalid resources
@@ -857,18 +1181,23 @@
 	    URIConverter theURIConverter = getURIConverter();
 	    URI normalizedURI = theURIConverter.normalize(uri);
 	    synchronized (resourcesLock) {
-			for (Resource resource : getImmutableResources()) {
-				if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
-					if (loadOnDemand && !resource.isLoaded()) {
-						demandLoadHelper(resource);
+	    	List<Resource> c = getImmutableResources();
+	        
+	        synchronized(c) {
+	        	
+				for (Resource resource : c) {
+					if (theURIConverter.normalize(resource.getURI()).equals(normalizedURI)) {
+						if (loadOnDemand && !resource.isLoaded()) {
+							demandLoadHelper(resource);
+						}
+	
+						if (map != null) {
+							map.put(uri, resource);
+						}
+						return resource;
 					}
-
-					if (map != null) {
-						map.put(uri, resource);
-					}
-					return resource;
 				}
-			}
+	        }
 		}
 	    
 	    Resource delegatedResource = delegatedGetResource(uri, loadOnDemand);
@@ -916,14 +1245,22 @@
 	}
 	
 	public EList<Resource> getResources() {
+		 return primGetResources();
+	}
+	private EList<Resource> primGetResources() {
 		 if (resources == null)
 		    {
 		      resources = new SynchronizedResourcesEList<Resource>();
 		    }
 		    return resources;
 	}
-	public List<Resource> getImmutableResources() {
-		 return Collections.unmodifiableList(getResources());
+	/**
+	 * Creating a copy of the resources list
+	 * @return
+	 */
+	public EList<Resource> getImmutableResources() {
+		 EList<Resource> resources = primGetResources();
+		 return new ImmutableEList<Resource>(resources);
 	}
 	@Override
 	public void eNotify(Notification notification) {
@@ -939,4 +1276,14 @@
 	    }
 	  }
 
+	@Override
+	public EList eAdapters()
+	{
+		if (eAdapters == null)
+		{
+			eAdapters =  new ESynchronizedAdapterList(this);
+		}
+		return eAdapters;
+	}
+
 }
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
index f783ec0..02b5054 100644
--- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
+++ b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/util/emf/workbench/ResourceSetWorkbenchSynchronizer.java
@@ -10,7 +10,7 @@
  *******************************************************************************/
 /*
  *  $$RCSfile: ResourceSetWorkbenchSynchronizer.java,v $$
- *  $$Revision: 1.8 $$  $$Date: 2010/04/02 14:57:14 $$ 
+ *  $$Revision: 1.9 $$  $$Date: 2010/05/12 22:47:45 $$ 
  */
 
 package org.eclipse.jem.util.emf.workbench;
@@ -36,7 +36,109 @@
 	protected ResourceSet resourceSet;
 
 	/** Extenders that will be notified after a pre build resource change */
-	protected Set extenders;
+	protected QueuingHashSet <ISynchronizerExtender> extenders;
+
+	/**
+	 * This HashSet is similar to a regular HashSet except it can be put in
+	 * queuing mode with a call to the {@link #startQueuing()} method.
+	 * While in queuing mode any adds or removes will not be committed to 
+	 * the set until a call to {@link #stopQueuing()} is made. This allows
+	 * the QueuingHasSet to be put in queuing mode prior to iterating over
+	 * the contents without needing to worry about changes coming in and
+	 * throwing ConcurrentModificationExceptions.
+	 * 
+	 * @author jsholl
+	 *
+	 * @param <E>
+	 */
+	protected class QueuingHashSet <E> extends HashSet <E> {
+
+		private static final long serialVersionUID = 6959354060950816784L;
+	
+		private Object lock = new Object();
+		
+		private boolean queuing = false;
+		private Set <E> addQueue = null;
+		private Set removeQueue = null;
+		private int initialCapacity = 3;
+		
+		public QueuingHashSet(int capacity) {
+			super(capacity);
+			addQueue = new HashSet<E>(capacity);
+			removeQueue = new HashSet(capacity);
+			initialCapacity = capacity;
+		}
+
+		public void startQueuing() {
+			synchronized(lock){
+				if(queuing){
+					throw new UnsupportedOperationException("startQueuing may only be called while not already queuing");
+				}
+				this.queuing = true;
+				addQueue.clear();
+				removeQueue.clear();
+			}
+		}
+
+		/**
+		 * Returns the set of adds which occurred while in queuing mode.
+		 * @return
+		 */
+		public Set <E> stopQueuing() {
+			synchronized(lock){
+				if(!queuing){
+					throw new UnsupportedOperationException("stopQueuing may only be called while queuing");
+				}
+				queuing = false;
+				removeAll(removeQueue);
+				addAll(addQueue);
+				if(!addQueue.isEmpty()){
+					Set <E> queue = addQueue;
+					addQueue = new HashSet<E>(initialCapacity);
+					return queue;
+				}
+				return Collections.emptySet();
+			}
+		}
+		
+		@Override
+		public boolean add(E object) {
+			synchronized (lock) {
+				if(queuing){
+					if(contains(object)){
+						return false;
+					}
+					return addQueue.add(object);
+				} else{
+					return super.add(object);
+				}
+			}
+		}
+		
+		@Override
+		public boolean remove(Object object) {
+			synchronized (lock) {
+				if(queuing){
+					if(contains(object)){
+						return removeQueue.add(object);
+					} else {
+						return false;
+					}
+				} else {
+					return super.remove(object);
+				}
+			}
+		}
+		
+		@Override
+		public boolean isEmpty() {
+			synchronized (lock) {
+				return super.isEmpty();	
+			}
+		}
+		
+	};
+	
 
 	/** The delta for this project that will be broadcast to the extenders */
 	protected IResourceDelta currentProjectDelta;
@@ -84,20 +186,38 @@
 	}
 
 
-	protected synchronized void notifyExtendersIfNecessary() {
-		if (currentEventType != IResourceChangeEvent.POST_CHANGE || extenders == null || currentProjectDelta == null)
+	protected void notifyExtendersIfNecessary() {
+		if (currentEventType != IResourceChangeEvent.POST_CHANGE || currentProjectDelta == null)
 			return;
-		for (Iterator iterator = Collections.unmodifiableSet(extenders).iterator(); iterator.hasNext();) {
-			ISynchronizerExtender extender = (ISynchronizerExtender) iterator.next();
-			extender.projectChanged(currentProjectDelta);	
+		if(extenders != null){
+			Set <ISynchronizerExtender> extendersToNotify = extenders;
+			while(!extendersToNotify.isEmpty()){
+				try{
+					extenders.startQueuing();
+					for (Iterator <ISynchronizerExtender> iterator = extendersToNotify.iterator(); iterator.hasNext();) {
+						ISynchronizerExtender extender = iterator.next();
+						extender.projectChanged(currentProjectDelta);
+					}
+				} finally {
+					extendersToNotify = extenders.stopQueuing();
+				}
+			}
 		}
 	}
 
-	protected synchronized void notifyExtendersOfClose() {
-		if (extenders != null && !extenders.isEmpty()) {
-			for (Iterator iterator = Collections.unmodifiableSet(extenders).iterator(); iterator.hasNext();) {
-				ISynchronizerExtender extender = (ISynchronizerExtender) iterator.next();
-				extender.projectClosed();
+	protected void notifyExtendersOfClose() {
+		if(extenders != null){
+			Set <ISynchronizerExtender> extendersToNotify = extenders;
+			while(!extendersToNotify.isEmpty()){
+				try{
+					extenders.startQueuing();
+					for (Iterator <ISynchronizerExtender> iterator = extendersToNotify.iterator(); iterator.hasNext();) {
+						ISynchronizerExtender extender = iterator.next();
+						extender.projectClosed();
+					}
+				} finally {
+					extendersToNotify = extenders.stopQueuing();
+				}
 			}
 		}
 	}
@@ -145,9 +265,10 @@
 	 * 
 	 * @since 1.0.0
 	 */
-	public synchronized void addExtender(ISynchronizerExtender extender) {
-		if (extenders == null)
-			extenders = new HashSet(3);
+	public void addExtender(ISynchronizerExtender extender) {
+		if (extenders == null){
+			extenders = new QueuingHashSet <ISynchronizerExtender>(3);
+		}
 		extenders.add(extender);
 	}
 
diff --git a/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF
index b862143..2ef693d 100644
--- a/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.common.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name.0
 Bundle-Vendor: %provider
 Bundle-SymbolicName: org.eclipse.jst.common.ui;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.jst.common.ui.internal.JstCommonUIPlugin
 Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
@@ -14,7 +14,9 @@
  org.eclipse.wst.common.modulecore.ui;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.jst.common.frameworks;bundle-version="1.1.400",
- org.eclipse.wst.common.frameworks;bundle-version="1.2.0"
+ org.eclipse.wst.common.frameworks;bundle-version="1.2.0",
+ org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.jst.common.ui.internal.assembly.wizard;x-internal:=true
+Export-Package: org.eclipse.jst.common.ui.internal;x-internal:=true,
+ org.eclipse.jst.common.ui.internal.assembly.wizard;x-internal:=true
diff --git a/plugins/org.eclipse.jst.common.ui/icons/manifest-classpath-banner.png b/plugins/org.eclipse.jst.common.ui/icons/manifest-classpath-banner.png
new file mode 100644
index 0000000..7c3e208
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/icons/manifest-classpath-banner.png
Binary files differ
diff --git a/plugins/org.eclipse.jst.common.ui/plugin.properties b/plugins/org.eclipse.jst.common.ui/plugin.properties
index f1bec89..f0ba4b0 100644
--- a/plugins/org.eclipse.jst.common.ui/plugin.properties
+++ b/plugins/org.eclipse.jst.common.ui/plugin.properties
@@ -10,4 +10,7 @@
 ###############################################################################
 provider=Eclipse.org
 
-Bundle-Name.0 = Common JST UI Plug-in
\ No newline at end of file
+Bundle-Name.0 = Common JST UI Plug-in
+Archive=Archives from Workspace
+External_Archive=Archives from File System
+Variable=Archive via Path Variable
diff --git a/plugins/org.eclipse.jst.common.ui/plugin.xml b/plugins/org.eclipse.jst.common.ui/plugin.xml
index f8f45f1..16e598f 100644
--- a/plugins/org.eclipse.jst.common.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.common.ui/plugin.xml
@@ -8,25 +8,19 @@
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.JarReferenceWizardFragment"
              icon="icons/jar_obj.gif"
              id="org.eclipse.jst.common.ui.jarReference"
-             name="Jar">
+             name="%Archive">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.ExternalJarReferenceWizardFragment"
              icon="icons/jar_obj.gif"
              id="org.eclipse.jst.common.ui.externalJarReference"
-             name="External Jar">
+             name="%External_Archive">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.VariableReferenceWizardFragment"
              icon="icons/jar_obj.gif"
              id="org.eclipse.jst.common.ui.variableReference"
-             name="Variable">
-       </referenceFragment>
-       <referenceFragment
-             class="org.eclipse.jst.common.ui.internal.assembly.wizard.ClasspathContainerWizardFragment"
-             icon="icons/util-wiz-icon.gif"
-             id="org.eclipse.jst.common.ui.classpathContainer"
-             name="Classpath Container">
+             name="%Variable">
        </referenceFragment>
     </extension>
     <extension point="org.eclipse.wst.common.modulecore.ui.virtualComponentLabelProvider">
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java
new file mode 100644
index 0000000..bb14fb7
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2009 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.common.ui.internal;
+
+
+/**
+ * @author: Aidyl Kareh
+ */
+public interface IJstCommonUIConstants {
+	public static final String DIALOGSTORE_LASTEXTARCHIVE= JstCommonUIPlugin.PLUGIN_ID + ".lastextarchive"; //$NON-NLS-1$
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIContextIds.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIContextIds.java
new file mode 100644
index 0000000..a04afad
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIContextIds.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.common.ui.internal;
+
+/**
+ * @author: Aidyl Kareh
+ */
+public interface IJstCommonUIContextIds {
+	//	 New references wizards
+	public static final String DEPLOYMENT_ASSEMBLY_NEW_VARIABLE_REFERENCE_P1 = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_NEW_VARIABLE_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_NEW_EXTERNAL_ARCHIVE_REFERENCE_P1 = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_NEW_EXTERNAL_ARCHIVE_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_NEW_ARCHIVE_REFERENCE_P1 = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_NEW_ARCHIVE_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_MANIFEST_ENTRIES_TAB = JstCommonUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_MANIFEST_ENTRIES_TAB"; //$NON-NLS-1$
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
index 9a9f6b5..e45fd48 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
@@ -14,16 +14,18 @@
 
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.jst.common.ui.internal"; //$NON-NLS-1$
-	public static String JarTitle;
-	public static String JarDescription;
-	public static String ExternalJarTitle;
-	public static String ExternalJarDescription;
+	public static String ArchiveTitle;
+	public static String ArchiveDescription;
+	public static String ExternalArchiveTitle;
+	public static String ExternalArchiveDescription;
+	public static String ArchiveDialogNewTitle;
+	public static String ArchiveDialogNewDescription;
 	public static String Browse;
 	public static String VariableReferenceTitle;
 	public static String VariableReferenceDescription;
 	public static String AddManifestEntryTaskWizardTitle;
 	public static String AddManifestEntryTaskWizardDesc;
-	public static String ParentProjects;
+	public static String ParentProject;
 	public static String CustomEntryButton;
 	public static String Add;
 	public static String Remove;
@@ -32,6 +34,7 @@
 	public static String ManifestEntryColumn;
 	public static String ManifestEntrySourceColumn;
 	public static String ConfigureParentLink;
+	public static String InvalidArchivesWarning;
 	
 	static {
 		// initialize resource bundle
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
index e04e633..65ee3d2 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
 package org.eclipse.jst.common.ui.internal.assembly.wizard;
 
@@ -18,6 +19,7 @@
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.preference.PreferenceDialog;
 import org.eclipse.jface.viewers.ArrayContentProvider;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -26,18 +28,25 @@
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jst.common.internal.modulecore.util.JavaModuleComponentUtility;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
 import org.eclipse.jst.common.ui.internal.Messages;
 import org.eclipse.jst.common.ui.internal.assembly.wizard.ManifestModuleDependencyControl.ManifestLabelProvider;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Link;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.internal.IWorkbenchGraphicConstants;
+import org.eclipse.ui.internal.WorkbenchImages;
 import org.eclipse.ui.internal.dialogs.PropertyDialog;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.impl.TaskModel;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
@@ -70,29 +79,31 @@
 			viewer.setInput(ResourcesPlugin.getWorkspace());
 			viewer.refresh();
 		}
-
+		
+		private static GridLayout glayout( final int columns )
+		{
+			final GridLayout gl = new GridLayout( columns, false );
+			gl.marginWidth = 0;
+			gl.marginHeight = 0;
+			
+			return gl;
+		}
+		
 		public Composite createComposite(Composite parent, IWizardHandle handle) {
 			parentProject = (IProject)getTaskModel().getObject(PARENT_PROJECT);
 			childProject = (IProject)getTaskModel().getObject(CHILD_PROJECT);
 			handle.setTitle(Messages.AddManifestEntryTaskWizardTitle);
 			handle.setDescription(NLS.bind(Messages.AddManifestEntryTaskWizardDesc, parentProject.getName()));
+			handle.setImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_WIZBAN_EXPORT_WIZ));
+			handle.setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( JstCommonUIPlugin.PLUGIN_ID, "icons/manifest-classpath-banner.png" ) );
+			
 			Composite root = new Composite(parent, SWT.NONE);
-			root.setLayout(new FormLayout());
-			customEntryText = new Text(root, SWT.BORDER);
-			addCustom = new Button(root, SWT.PUSH);
-			customEntryText.setLayoutData(ManifestModuleDependencyControl.createFormData(null, 0, 100, -5, 0, 5, addCustom, -5));
-			addCustom.setText(Messages.CustomEntryButton);
-			addCustom.setLayoutData(ManifestModuleDependencyControl.createFormData(null, 0, 100, -5, null, 0, 100, -5));
-			addCustom.addSelectionListener(new SelectionListener() {
-				public void widgetSelected(SelectionEvent e) {
-					addCustomPressed();
-				}
-				public void widgetDefaultSelected(SelectionEvent e) {
-				}
-			});
-
+			root.setLayout(glayout(1));
+			
 			viewer = ManifestModuleDependencyControl.createManifestReferenceTableViewer(root, SWT.MULTI);
-			viewer.getTable().setLayoutData(ManifestModuleDependencyControl.createFormData(15, 5, addCustom, 0, 0, 5, 100, -5));
+			final GridData gData = new GridData(GridData.FILL_BOTH);
+			gData.heightHint = 350;
+			viewer.getTable().setLayoutData(gData);
 			contentProvider = new ShowPossibleManifestEntryContentProvider(parentProject, childProject, getTaskModel());
 			viewer.setContentProvider(contentProvider);
 			viewer.setLabelProvider(new ManifestLabelProvider());
@@ -102,16 +113,46 @@
 					viewerSelectionChanged();
 				}
 			});
+			
+			final Composite customEntryComposite = new Composite(root,SWT.NONE);
+			customEntryComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			customEntryComposite.setLayout(glayout(2));
+			
+			customEntryText = new Text(customEntryComposite, SWT.BORDER);
+			customEntryText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+			customEntryText.addModifyListener(new ModifyListener() {
+				public void modifyText(ModifyEvent e) {
+					if(customEntryText.getText() == null || customEntryText.getText().trim().length() == 0 || new Path(customEntryText.getText().trim()).makeRelative().toString().length() == 0)
+						addCustom.setEnabled(false);
+					else
+						addCustom.setEnabled(true);
+				} 
+			});
+			
+			addCustom = new Button(customEntryComposite, SWT.PUSH);
+			addCustom.setLayoutData(new GridData());
+			addCustom.setText(Messages.CustomEntryButton);
+			addCustom.addSelectionListener(new SelectionListener() {
+				public void widgetSelected(SelectionEvent e) {
+					addCustomPressed();
+				}
+				public void widgetDefaultSelected(SelectionEvent e) {
+				}
+			});
+			addCustom.setEnabled(false);
+			
 			createConfigLink(root);
-			parentContainerLink.setLayoutData(ManifestModuleDependencyControl.createFormData(0, 5, viewer, 5, 0, 5, 100, -5));
+			parentContainerLink.setLayoutData(new GridData());
+			
 			return root;
 		}
 		
 		private void addCustomPressed() {
 			IVirtualReference ref = ManifestModuleDependencyControl.createDummyReference(
-					customEntryText.getText(), parentProject, ComponentCore.createComponent(parentProject));
+					new Path(customEntryText.getText()).toString(), parentProject, ComponentCore.createComponent(parentProject));
 			contentProvider.addPossibleReference(ref);
 			customEntryText.setText(""); //$NON-NLS-1$
+			addCustom.setEnabled(false);
 			viewer.refresh();
 		}
 		
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ClasspathContainerWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ClasspathContainerWizardFragment.java
deleted file mode 100644
index 5576006..0000000
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ClasspathContainerWizardFragment.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/******************************************************************************
- * Copyright (c) 2009 Red Hat
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Rob Stryker - initial implementation and ongoing maintenance
- ******************************************************************************/
-package org.eclipse.jst.common.ui.internal.assembly.wizard;
-
-import java.util.ArrayList;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.core.IClasspathEntry;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.internal.ui.wizards.buildpaths.ClasspathContainerWizard;
-import org.eclipse.jface.window.Window;
-import org.eclipse.jst.common.internal.modulecore.ClasspathContainerVirtualComponent;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
-import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
-import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
-
-public class ClasspathContainerWizardFragment extends WizardFragment {
-	public boolean hasComposite() {
-		return false;
-	}
-	public void performFinish(IProgressMonitor monitor) throws CoreException {
-		final IProject project = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);
-		final IVirtualComponent rootComp = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
-		Display.getDefault().syncExec(new Runnable() { 
-			public void run() {
-				IJavaProject jp = JavaCore.create(project);
-				IClasspathEntry[] entries = new IClasspathEntry[]{};
-				ClasspathContainerWizard wizard = new ClasspathContainerWizard((IClasspathEntry)null, jp, entries);
-				int result = ClasspathContainerWizard.openWizard(new Shell(), wizard);
-				if( result == Window.OK ) {
-					ArrayList<IVirtualReference> references = new ArrayList<IVirtualReference>();
-					IClasspathEntry[] results = wizard.getNewEntries();
-					for( int i = 0; i < results.length; i++ ) {
-						String defaultPath = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
-						defaultPath = defaultPath == null ? "/lib" : defaultPath;
-						IVirtualComponent childComp = new ClasspathContainerVirtualComponent(project, rootComp, results[i].getPath().toString());
-						VirtualReference ref = new VirtualReference(rootComp, childComp, new Path(defaultPath).makeAbsolute());
-						ref.setDependencyType(IVirtualReference.DEPENDENCY_TYPE_CONSUMES);
-						references.add(ref);
-					}
-					getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, 
-							references.toArray(new IVirtualReference[references.size()]));
-				}
-			}
-		});
-	}
-}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
index f178469..4e824c2 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
@@ -11,13 +11,21 @@
 package org.eclipse.jst.common.ui.internal.assembly.wizard;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.ui.wizards.BuildPathDialogAccess;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIConstants;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
 import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
@@ -26,38 +34,90 @@
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
 
-public class ExternalJarReferenceWizardFragment extends JarReferenceWizardFragment {
+public class ExternalJarReferenceWizardFragment extends JarReferenceWizardFragment {	
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
 		Composite c = super.createComposite(parent, handle);
-		handle.setTitle(Messages.ExternalJarTitle);
-		handle.setDescription(Messages.ExternalJarDescription);
+		handle.setTitle(Messages.ExternalArchiveTitle);
+		handle.setDescription(Messages.ExternalArchiveDescription);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_NEW_EXTERNAL_ARCHIVE_REFERENCE_P1);
 		return c;
 	}
 
 	protected void buttonPressed() {
-		selected = BuildPathDialogAccess
-			.chooseExternalJAREntries(browse.getShell());
-		viewer.refresh();
+		selected = chooseExternalArchiveEntries(add.getShell());
+		
+		if(selected != null) {
+			removeInvalidArchiveFiles();
+		
+			for(IPath path: selected) {
+				if(!archives.containsKey(path)) {
+					archives.put(path, path);
+				}
+			}
+			
+			viewer.refresh();
+			if(archives != null && archives.size() > 0) {
+				isComplete = true;
+			} else {
+				isComplete = false;
+			}
+			handle.update();
+		}
 	}
 
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
 		IVirtualComponent rootComponent = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
-		if (selected != null && selected.length > 0) {
+		String runtimeLoc = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
+		if (archives != null && archives.size() > 0) {
 			ArrayList<IVirtualReference> refList = new ArrayList<IVirtualReference>();
-			ArrayList<String> paths = new ArrayList<String>();
-			for (int i = 0; i < selected.length; i++) {
+			Iterator iterator = archives.values().iterator();
+			while(iterator.hasNext()) {
+	    		IPath path = (Path)iterator.next();
 				// IPath fullPath = project.getFile(selected[i]).getFullPath();
 				String type = VirtualArchiveComponent.LIBARCHIVETYPE
 						+ IPath.SEPARATOR;
 				IVirtualComponent archive = ComponentCore
 						.createArchiveComponent(rootComponent.getProject(),
-								type + selected[i].toString());
+								type + path.toString());
 				VirtualReference ref = new VirtualReference(rootComponent, archive);
-				ref.setArchiveName(selected[i].lastSegment());
+				ref.setArchiveName(path.lastSegment());
+				if (runtimeLoc != null) {
+					ref.setRuntimePath(new Path(runtimeLoc).makeAbsolute());
+				}
 				refList.add(ref);
 			}
 			IVirtualReference[] finalRefs = refList.toArray(new IVirtualReference[refList.size()]);
 			getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, finalRefs);
 		}
 	}
+	
+	private static IPath[] chooseExternalArchiveEntries(Shell shell) {
+		String lastUsedPath= JstCommonUIPlugin.getDefault().getDialogSettings().get(IJstCommonUIConstants.DIALOGSTORE_LASTEXTARCHIVE);
+		if (lastUsedPath == null) {
+			lastUsedPath= ""; //$NON-NLS-1$
+		}
+		
+		FileDialog dialog= new FileDialog(shell, SWT.MULTI);
+		dialog.setText(Messages.ArchiveDialogNewTitle);
+		String [] extensions = new String[] {"*.jar;*.war;*.rar;*.zip", "*.*"};  //$NON-NLS-1$//$NON-NLS-2$
+		dialog.setFilterExtensions(extensions);
+		dialog.setFilterPath(lastUsedPath);
+
+		String res= dialog.open();
+		if (res == null) {
+			return null;
+		}
+		String[] fileNames= dialog.getFileNames();
+		int nChosen= fileNames.length;
+
+		IPath filterPath= Path.fromOSString(dialog.getFilterPath());
+		IPath[] elems= new IPath[nChosen];
+		for (int i= 0; i < nChosen; i++) {
+			elems[i]= filterPath.append(fileNames[i]).makeAbsolute();
+		}
+		
+		JstCommonUIPlugin.getDefault().getDialogSettings().put(IJstCommonUIConstants.DIALOGSTORE_LASTEXTARCHIVE, dialog.getFilterPath());
+		
+		return elems;
+	}
 }
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
index 26743ee..a2c87ca 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,36 +7,67 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
 package org.eclipse.jst.common.ui.internal.assembly.wizard;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
 
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.jdt.ui.wizards.BuildPathDialogAccess;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.viewsupport.FilteredElementTreeSelectionDialog;
+import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
 import org.eclipse.jst.common.ui.internal.Messages;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.ui.views.navigator.ResourceComparator;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
 import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
@@ -45,41 +76,54 @@
 	protected LabelProvider labelProvider = null;
 	protected ITreeContentProvider contentProvider = null;
 	protected TreeViewer viewer;
-	protected Button browse;
+	protected Button add, remove;
 	protected IPath[] paths;
 	protected IWizardHandle handle;
 	protected IPath[] selected = new IPath[]{};
+	protected Map <IPath, IPath> archives = new HashMap<IPath, IPath>();
+	boolean isComplete = false;
+
+	public boolean isComplete() {
+		return isComplete;
+	}
+	
 	public boolean hasComposite() {
 		return true;
 	}
 
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
 		this.handle = handle;
-		handle.setTitle(Messages.JarTitle);
-		handle.setDescription(Messages.JarDescription);
+		handle.setTitle(Messages.ArchiveTitle);
+		handle.setDescription(Messages.ArchiveDescription);
+		handle.setImageDescriptor(JavaPluginImages.DESC_WIZBAN_ADD_LIBRARY);
 				
 		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new FormLayout());
-		viewer = new TreeViewer(c, SWT.SINGLE | SWT.BORDER);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_NEW_ARCHIVE_REFERENCE_P1);
+		c.setLayout(new GridLayout(2, false));
+		viewer = new TreeViewer(c, SWT.MULTI | SWT.BORDER);
+		viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
 		viewer.setContentProvider(getContentProvider());
 		viewer.setLabelProvider(getLabelProvider());
 		viewer.setInput(ResourcesPlugin.getWorkspace());
 
-		browse = new Button(c, SWT.NONE);
-		browse.setText(Messages.Browse);
-		FormData fd = new FormData();
-		fd.left = new FormAttachment(0, 5);
-		fd.bottom = new FormAttachment(100, -5);
-		browse.setLayoutData(fd);
+		Composite buttonColumn = new Composite(c, SWT.NONE);
+		buttonColumn.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+		
+		final GridLayout gl = new GridLayout();
+		gl.marginWidth = 0;
+		gl.marginHeight = 0;
+		
+		buttonColumn.setLayout( gl );
+		
+		add = new Button(buttonColumn, SWT.NONE);
+		add.setText(Messages.Add);
+		GridDataFactory.defaultsFor(add).applyTo(add);
+		
+		remove = new Button(buttonColumn, SWT.NONE);
+		remove.setText(Messages.Remove);
+		GridDataFactory.defaultsFor(remove).applyTo(remove);
 
-		fd = new FormData();
-		fd.left = new FormAttachment(0, 5);
-		fd.top = new FormAttachment(0, 5);
-		fd.right = new FormAttachment(100, -5);
-		fd.bottom = new FormAttachment(browse, -5);
-		viewer.getTree().setLayoutData(fd);
-
-		browse.addSelectionListener(new SelectionListener() {
+		add.addSelectionListener(new SelectionListener() {
 			public void widgetSelected(SelectionEvent e) {
 				buttonPressed();
 			}
@@ -88,30 +132,84 @@
 				widgetSelected(e);
 			}
 		});
+		
+		remove.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				removeButtonPressed();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+				widgetSelected(e);
+			}
+		});
 		return c;
 	}
 
 	protected void buttonPressed() {
 		IProject project = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);
-		selected = BuildPathDialogAccess.chooseJAREntries(
-				browse.getShell(), 
-				project.getLocation(), new IPath[0]);
-		viewer.refresh();
+		selected = chooseEntries(
+				add.getShell(), 
+				project.getFullPath());
+
+		if(selected != null) {
+			removeInvalidArchiveFiles();
+		
+			for(IPath path: selected) {
+				if(!archives.containsKey(path)) {
+					archives.put(path, path);
+				}
+			}
+			
+			viewer.refresh();
+			if(archives != null && archives.size() > 0) {
+				isComplete = true;
+			} else {
+				isComplete = false;
+			}
+			handle.update();
+		}
+	}
+	
+	protected void removeButtonPressed() {
+		TreeItem[] toRemove = viewer.getTree().getSelection();
+		
+		if(toRemove != null && toRemove.length > 0) {
+			for(int i = 0; i < toRemove.length; i++) {
+				Path path = (Path) toRemove[i].getData();
+				if(archives.containsKey(path)) {
+					archives.remove(path);
+				}
+			}
+			
+			viewer.refresh();
+			if(archives != null && archives.size() > 0) {
+				isComplete = true;
+			} else {
+				isComplete = false;
+			}
+			handle.update();
+		}
 	}
 
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
 		IVirtualComponent rootComponent = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
-		if (selected != null && selected.length > 0) {
+		String runtimeLoc = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
+		if (archives != null && archives.size() > 0) {
 			ArrayList<IVirtualReference> refList = new ArrayList<IVirtualReference>();
-			for (int i = 0; i < selected.length; i++) {
+			Iterator iterator = archives.values().iterator();
+			while(iterator.hasNext()) {
+	    		IPath path = (Path)iterator.next();
 				// IPath fullPath = project.getFile(selected[i]).getFullPath();
 				String type = VirtualArchiveComponent.LIBARCHIVETYPE
 						+ IPath.SEPARATOR;
 				IVirtualComponent archive = ComponentCore
 						.createArchiveComponent(rootComponent.getProject(),
-								type + selected[i].makeRelative().toString());
+								type + path.makeRelative().toString());
 				VirtualReference ref = new VirtualReference(rootComponent, archive);
-				ref.setArchiveName(selected[i].lastSegment());
+				ref.setArchiveName(path.lastSegment());
+				if (runtimeLoc != null) {
+					ref.setRuntimePath(new Path(runtimeLoc).makeAbsolute());
+				}
 				refList.add(ref);
 			}
 			IVirtualReference[] finalRefs = refList.toArray(new IVirtualReference[refList.size()]);
@@ -123,7 +221,7 @@
 		if (labelProvider == null) {
 			labelProvider = new LabelProvider() {
 				public Image getImage(Object element) {
-					return null;
+					return ModuleCoreUIPlugin.getInstance().getImage("jar_obj");
 				}
 
 				public String getText(Object element) {
@@ -138,7 +236,7 @@
 		if (contentProvider == null) {
 			contentProvider = new ITreeContentProvider() {
 				public Object[] getElements(Object inputElement) {
-					return selected == null ? new Object[]{} : selected;
+					return archives == null ? new Object[]{} : archives.values().toArray();
 				}
 				public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
 				}
@@ -157,4 +255,148 @@
 		}
 		return contentProvider;
 	}
+	
+	private static IPath[] chooseEntries(Shell shell, IPath initialSelection) {
+		Class[] acceptedClasses= new Class[] { IFile.class };
+		TypedElementSelectionValidator validator= new TypedElementSelectionValidator(acceptedClasses, true);
+		IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot();
+
+		FilteredElementTreeSelectionDialog dialog =  new FilteredElementTreeSelectionDialog(shell, new WorkbenchLabelProvider(), new WorkbenchContentProvider());
+		dialog.setHelpAvailable(false);
+		dialog.setValidator(validator);
+		dialog.setTitle(Messages.ArchiveDialogNewTitle);
+		dialog.setMessage(Messages.ArchiveDialogNewDescription);
+		dialog.addFilter(getDialogViewerFilter());
+		dialog.setInput(root);
+		dialog.setComparator(new ResourceComparator(ResourceComparator.NAME));
+		dialog.setInitialFilter("*.jar,*.war,*.rar,*.zip"); //$NON-NLS-1$
+		dialog.create();		
+
+		if (dialog.open() == Window.OK) {
+			Object[] elements= dialog.getResult();
+			IPath[] res= new IPath[elements.length];
+			for (int i= 0; i < res.length; i++) {
+				IResource elem= (IResource)elements[i];
+				res[i]= elem.getFullPath();
+			}
+			return res;
+		}
+		return null;
+	}
+	
+	protected void removeInvalidArchiveFiles(){
+		// Tries to open archive to verify it's valid
+		// If it is not a valid archive, a dialog is shown informing the user of the invalid archives
+		ArrayList<IPath> invalidArchiveFiles = new ArrayList<IPath>();
+		ArrayList<IPath> validArchiveFiles = new ArrayList<IPath>();
+		ZipFile zipFile = null;
+		for(IPath path:selected){
+			try {
+				String osPath = null;
+				if(path.segmentCount() > 1){
+					IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+					if(file.exists()) {
+						IPath loc = file.getLocation();
+						if(loc != null) { 
+							osPath = loc.toOSString();
+						}
+					}
+				}
+				if(osPath == null){
+					osPath = path.toOSString();
+				}
+				zipFile = new ZipFile(new File(osPath));
+				validArchiveFiles.add(path);
+			} catch (ZipException e1){
+				invalidArchiveFiles.add(path);
+			} catch (IOException e2){
+				invalidArchiveFiles.add(path);
+			}finally {
+				if (zipFile != null){
+					try {
+						zipFile.close();
+					} catch (IOException e) {
+						JstCommonUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, JstCommonUIPlugin.PLUGIN_ID, e.getMessage(), e));
+					}
+				}
+			}
+		}
+		if(invalidArchiveFiles.size() > 0) {
+			selected = validArchiveFiles.toArray(new IPath[validArchiveFiles.size()]);
+			showInvalidArchiveFilesAsWarning(invalidArchiveFiles);
+		}
+	}
+	
+	private void showInvalidArchiveFilesAsWarning(ArrayList<IPath>invalidArchiveFiles) {
+		String message = Messages.InvalidArchivesWarning;
+		boolean first = true;
+		for(IPath path: invalidArchiveFiles) {
+			if(!first) {
+				message += ", \'"; //$NON-NLS-1$
+			} else {
+				message += "\'"; //$NON-NLS-1$
+				first = false;
+			}
+			message += path.lastSegment() + "\'"; //$NON-NLS-1$
+		}
+		MessageDialog.openWarning(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Warning", message); //$NON-NLS-1$
+	}
+	
+	private static ViewerFilter getDialogViewerFilter() {
+		return new ViewerFilter() {
+			private final String[] excludedExtensions= { "txt", "css", "dll", "htm", "html", "class", "java", "classpath",      //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$//$NON-NLS-7$ //$NON-NLS-8$
+				"compatibility", "component", "container", "cvsignore", "del", "dnx", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$
+				"dtd", "mf", "project", "properties", "psf", "rc", "runtime", "sh", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$//$NON-NLS-7$ //$NON-NLS-8$
+				"spec", "sql", "tld", "xmi", "xml", "xsd", "gif", "jpg", "js", "vsd", //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$ //$NON-NLS-6$//$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$
+				"png", "bat", "xsl", "factorypath"}; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$ 
+
+			private HashMap<String,String> excludedExtensionsMap = null;
+
+			@Override
+			public boolean select(Viewer viewer, Object parent, Object element) {
+				if(excludedExtensionsMap == null) {
+					initializeExludeMap();
+				}
+				if (element instanceof IFile) {
+					IFile file = (IFile) element;
+					String ext = file.getFileExtension();
+					if(ext != null) {
+						ext = ext.toLowerCase();
+						if(excludedExtensionsMap.get(ext) != null) {
+							return false;
+						}
+					}
+					return true;
+				} else if (element instanceof IContainer) { // IProject, IFolder
+					// ignore closed projects
+					if (element instanceof IProject && !((IProject)element).isOpen())
+						return false;
+					// ignore .settings folder
+					if (element instanceof IFolder) {
+						IFolder folder = (IFolder) element;
+						if (folder.getName().equals(".settings"))
+							return false;
+					}
+					try {
+						IResource[] resources= ((IContainer)element).members();
+						for (int i= 0; i < resources.length; i++) {
+							// Only show containers that contain an archive
+							if (select(viewer, parent, resources[i])) {
+								return true;
+							}
+						}
+					} catch (CoreException e) {
+						JavaPlugin.log(e.getStatus());
+					}
+				}
+				return false;
+			}
+			
+			private void initializeExludeMap() {
+				excludedExtensionsMap = new HashMap<String, String>();
+				for(int i = 0; i < excludedExtensions.length; i++)
+				excludedExtensionsMap.put(excludedExtensions[i], excludedExtensions[i]);
+			}
+		};
+	}
 }
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
index 98a1fb9..9d7db98 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,12 +7,16 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
 package org.eclipse.jst.common.ui.internal.assembly.wizard;
 
+import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IContainer;
@@ -23,8 +27,10 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.viewers.BaseLabelProvider;
 import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.IStructuredSelection;
@@ -33,6 +39,7 @@
 import org.eclipse.jface.viewers.TableLayout;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.jst.common.internal.modulecore.util.ArchiveManifest;
@@ -40,6 +47,7 @@
 import org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities;
 import org.eclipse.jst.common.internal.modulecore.util.UpdateManifestDataModelProperties;
 import org.eclipse.jst.common.internal.modulecore.util.UpdateManifestDataModelProvider;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
 import org.eclipse.jst.common.ui.internal.Messages;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
@@ -47,16 +55,15 @@
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Combo;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.resources.AbstractResourceListVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
@@ -66,13 +73,12 @@
 import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.IVirtualComponentLabelProvider;
-import org.eclipse.wst.common.componentcore.ui.propertypage.IModuleDependenciesControl;
+import org.eclipse.wst.common.componentcore.ui.propertypage.AbstractIModuleDependenciesControl;
 import org.eclipse.wst.common.componentcore.ui.propertypage.ModuleAssemblyRootPage;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 
-public class ManifestModuleDependencyControl implements
-		IModuleDependenciesControl {
+public class ManifestModuleDependencyControl extends AbstractIModuleDependenciesControl {
 	
 	protected IProject project;
 	protected IVirtualComponent rootComponent;
@@ -82,6 +88,7 @@
 	protected Combo parentSelection;
 	protected TableViewer manifestEntryViewer;
 	private ArrayList<IVirtualReference> list = new ArrayList<IVirtualReference>();
+	private String previousManifest = null;
 	
 	public ManifestModuleDependencyControl(final IProject project,
 			final ModuleAssemblyRootPage page) {
@@ -90,63 +97,79 @@
 		rootComponent = ComponentCore.createComponent(project);
 	}
 
-	/*
-	 * Convenience method to quickly create form datas, 
-	 * referencing either pixel counts (via autoboxing) or controls.
-	 * If the object is null, no attachment will be created for that side
-	 */
-	public static FormData createFormData(Object top, int topDif, Object bottom, int bottomDif,
-						Object left, int leftDif, Object right, int rightDif) {
-		FormData fd = new FormData();
-		if( top instanceof Control ) fd.top = new FormAttachment((Control)top, topDif);
-		else if( top != null ) fd.top = new FormAttachment(((Integer)top).intValue(), topDif);
+	private static GridLayout glayout( final int columns )
+	{
+		final GridLayout gl = new GridLayout( columns, false );
+		gl.marginWidth = 0;
+		gl.marginHeight = 0;
 		
-		if( bottom instanceof Control ) fd.bottom = new FormAttachment((Control)bottom, bottomDif);
-		else if( bottom != null ) fd.bottom = new FormAttachment(((Integer)bottom).intValue(), bottomDif);
-		
-		if( left instanceof Control ) fd.left = new FormAttachment((Control)left, leftDif);
-		else if( left != null ) fd.left = new FormAttachment(((Integer)left).intValue(), leftDif);
-		
-		if( right instanceof Control ) fd.right = new FormAttachment((Control)right, rightDif);
-		else if( right != null ) fd.right = new FormAttachment(((Integer)right).intValue(), rightDif);
-		
-		return fd;
+		return gl;
 	}
 	
 	public Composite createContents(Composite parent) {
 		Composite root = new Composite(parent, SWT.NONE);
-		root.setLayout(new FormLayout());
-		Label l = new Label(root, SWT.NONE);
-		l.setText(Messages.ParentProjects);
-		l.setLayoutData(createFormData(0,10,null,0, 0, 5, null,0));
-		parentSelection = new Combo(root, SWT.READ_ONLY);
-		parentSelection.setLayoutData(createFormData(0,5,null,0,l,5,100,-5));
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(root, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_MANIFEST_ENTRIES_TAB);
+		root.setLayout(glayout(1));
+		
+		final Composite parentSelectionComposite = new Composite( root, SWT.NONE );
+		parentSelectionComposite.setLayoutData( new GridData( GridData.FILL_HORIZONTAL ) );
+		parentSelectionComposite.setLayout( glayout( 2 ) );
+		
+		Label l = new Label(parentSelectionComposite, SWT.NONE);
+		l.setText(Messages.ParentProject);
+		l.setLayoutData(new GridData());
+		
+		parentSelection = new Combo(parentSelectionComposite, SWT.READ_ONLY);
+		parentSelection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 		parentSelection.setItems(getPossibleParentProjects());
 		parentSelection.addModifyListener(new ModifyListener(){
 			public void modifyText(ModifyEvent e) {
 				refreshViewerFromNewParentProject();
 			}
 		});
-		manifestEntryViewer = createManifestReferenceTableViewer(root, SWT.SINGLE);
 		
-		addButton = new Button(root, SWT.PUSH);
-		removeButton = new Button(root, SWT.PUSH);
-		moveUpButton = new Button(root, SWT.PUSH);
-		moveDownButton = new Button(root, SWT.PUSH);
+		final Composite manifestEntryViewerComposite = new Composite( root, SWT.NONE );
+		final GridData manifestEntryViewerCompositeLayoutData = new GridData( GridData.FILL_BOTH );
+		manifestEntryViewerComposite.setLayoutData( manifestEntryViewerCompositeLayoutData );
+		manifestEntryViewerComposite.setLayout( glayout( 2 ) );
 		
+		manifestEntryViewer = createManifestReferenceTableViewer(manifestEntryViewerComposite, SWT.SINGLE);
+		GridData data = new GridData(GridData.FILL_BOTH);
+		int numlines = Math.min(10, manifestEntryViewer.getTable().getItemCount());
+		data.heightHint = manifestEntryViewer.getTable().getItemHeight() * numlines;
+		manifestEntryViewer.getTable().setLayoutData(data);
+		
+		Composite buttonColumn = new Composite(manifestEntryViewerComposite, SWT.NONE);
+		buttonColumn.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+		buttonColumn.setLayout(glayout( 1 ));
+		
+		addButton = new Button(buttonColumn, SWT.PUSH);
 		addButton.setText(Messages.Add);
+		GridDataFactory.defaultsFor(addButton).applyTo(addButton);
+		
+		removeButton = new Button(buttonColumn, SWT.PUSH);
 		removeButton.setText(Messages.Remove);
+		GridDataFactory.defaultsFor(removeButton).applyTo(removeButton);
+		
+		moveUpButton = new Button(buttonColumn, SWT.PUSH);
 		moveUpButton.setText(Messages.MoveUp);
+		GridDataFactory.defaultsFor(moveUpButton).applyTo(moveUpButton);
+		
+		moveDownButton = new Button(buttonColumn, SWT.PUSH);
 		moveDownButton.setText(Messages.MoveDown);
+		GridDataFactory.defaultsFor(moveDownButton).applyTo(moveDownButton);
+		
+		IFile manifest = getManifestIFile(rootComponent);
+		if(manifest == null) {
+			addButton.setEnabled(false);
+		} else {
+			addButton.setEnabled(true);
+			previousManifest = manifest.getFullPath().toOSString();
+		}
 		removeButton.setEnabled(false);
 		moveUpButton.setEnabled(false);
 		moveDownButton.setEnabled(false);
 		
-		addButton.setLayoutData(createFormData(parentSelection,5,null,0,manifestEntryViewer.getTable(),5,100,-5));
-		removeButton.setLayoutData(createFormData(addButton,5,null,0,manifestEntryViewer.getTable(),5,100,-5));
-		moveUpButton.setLayoutData(createFormData(removeButton,5,null,0,manifestEntryViewer.getTable(),5,100,-5));
-		moveDownButton.setLayoutData(createFormData(moveUpButton,5,null,0,null,0,100,-5));
-		
 		addButton.addSelectionListener(new SelectionListener() {
 			public void widgetSelected(SelectionEvent e) {
 				addPressed();
@@ -176,8 +199,6 @@
 			}
 		});
 		
-		manifestEntryViewer.getTable().setLayoutData(createFormData(
-				parentSelection, 5, 100, -5, 0, 5, moveDownButton, -5));
 		manifestEntryViewer.setLabelProvider(new ManifestLabelProvider());
 		manifestEntryViewer.setContentProvider(new ManifestContentProvider());
 		manifestEntryViewer.setInput(ResourcesPlugin.getWorkspace());
@@ -188,6 +209,28 @@
 				viewerSelectionChanged();
 			}
 		});
+
+		//ensure the buttons are properly updated when table sort mode toggled
+		manifestEntryViewer.getTable().getColumn(0).addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				updateButtons();
+			}
+			
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// do nothing
+			}
+		});
+
+		//ensure the buttons are properly updated when table sort mode toggled
+		manifestEntryViewer.getTable().getColumn(1).addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				updateButtons();
+			}
+			
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
 		return root;
 	}
 	
@@ -196,11 +239,18 @@
 	}
 	
 	protected void updateButtons() {
-		int index = manifestEntryViewer.getTable().getSelectionIndex();
-		int size = manifestEntryViewer.getTable().getItems().length;
-		removeButton.setEnabled(index != -1);
-		moveUpButton.setEnabled(index != -1 && index != 0);
-		moveDownButton.setEnabled(index != size-1);
+		if(!addButton.isEnabled()) {
+			removeButton.setEnabled(false);
+			moveUpButton.setEnabled(false);
+			moveDownButton.setEnabled(false);
+		} else {
+			int index = manifestEntryViewer.getTable().getSelectionIndex();
+			int size = manifestEntryViewer.getTable().getItems().length;
+			boolean sorted = manifestEntryViewer.getTable().getSortDirection() != SWT.NONE;
+			removeButton.setEnabled(index != -1);
+			moveUpButton.setEnabled(index != -1 && index != 0 && !sorted);
+			moveDownButton.setEnabled(index != -1 && index != size-1 && !sorted);
+		}
 	}
 	
 	protected void moveUp() {
@@ -264,8 +314,12 @@
 		public String getColumnText(Object element, int columnIndex) {
 			if( element instanceof IVirtualReference ) {
 				IVirtualReference ref = (IVirtualReference)element;
-				if( columnIndex == 0 && ref.getArchiveName() != null)
-					return ref.getRuntimePath().append(ref.getArchiveName()).toString();
+				if( columnIndex == 0 && ref.getArchiveName() != null) {
+					if(ref.getRuntimePath().toString().length() > 0)
+						return ref.getRuntimePath().append(ref.getArchiveName()).toString();
+					else
+						return ref.getArchiveName();
+				}
 				if( columnIndex == 1 )
 					return handleSourceText(ref.getReferencedComponent());
 			}
@@ -298,12 +352,84 @@
 		}
 	}
 	
+	/**
+	 * Provides three possible sorts for each column based on the text labels.
+	 * First click on any column will enable forward sorting for that column,
+	 * second click on a column will enable backwards sorting, and third click
+	 * will disable sorting.
+	 * @author jsholl
+	 */
+	private static class TableViewerColumnSortToggler {
+		private int sortDirection = 0;
+		private int sortColumn = 0;
+		private TableViewer tableViewer;
+		
+		private TableViewerColumnSortToggler(TableViewer tableViewer){
+			this.tableViewer = tableViewer;
+		}
+		
+		private void toggleSort(int column){
+			if(sortColumn == column){
+				//cycle through sort options
+				switch(sortDirection){
+				case SWT.NONE:
+					sortDirection = SWT.UP;
+					break;
+				case SWT.UP:
+					sortDirection = SWT.DOWN;
+					break;
+				case SWT.DOWN:
+					sortDirection = SWT.NONE;
+					break;
+				}
+			} else {
+				//clicked on a different column reset cycle
+				sortColumn = column;
+				sortDirection = SWT.UP;
+			}
+			
+			ViewerComparator comparator = getViewerComparator(column, sortDirection);
+			tableViewer.setComparator(comparator);
+			
+			Table table = tableViewer.getTable();
+			TableColumn sortColumn = tableViewer.getTable().getColumn(column);
+			table.setSortColumn(sortColumn);
+			table.setSortDirection(sortDirection);
+		}
+		
+		private ViewerComparator getViewerComparator(final int columnIndex, final int sortDirection) {
+			if(sortDirection == SWT.NONE){
+				return null;
+			}
+			return new ViewerComparator() {
+				Collator collator = Collator.getInstance();
+				public int compare(Viewer viewerLocal, Object e1, Object e2) {
+					IBaseLabelProvider baseLabelProvider = tableViewer.getLabelProvider();
+					if(baseLabelProvider instanceof ITableLabelProvider){
+						ITableLabelProvider tableLabelProvider = (ITableLabelProvider)baseLabelProvider;
+						String text1 = tableLabelProvider.getColumnText(e1, columnIndex);
+						if(text1 != null){
+							String text2 = tableLabelProvider.getColumnText(e2, columnIndex);
+							int comp = collator.compare(text1, text2);
+							if(sortDirection == SWT.DOWN){
+								comp = -comp;
+							}
+							return comp;
+						}
+					}
+					return 0;
+				}
+			};
+		}
+	};
+	
 	public static TableViewer createManifestReferenceTableViewer(Composite parent, int style) {
 		int flags = SWT.BORDER | style;
 
 		Table table = new Table(parent, flags);
 		TableViewer viewer = new TableViewer(table);
-
+		final TableViewerColumnSortToggler sortController = new TableViewerColumnSortToggler(viewer);
+		
 		// set up table layout
 		TableLayout tableLayout = new org.eclipse.jface.viewers.TableLayout();
 		tableLayout.addColumnData(new ColumnWeightData(200, true));
@@ -316,22 +442,40 @@
 		TableColumn fileNameColumn = new TableColumn(table, SWT.NONE, 0);
 		fileNameColumn.setText(Messages.ManifestEntryColumn);
 		fileNameColumn.setResizable(true);
+		fileNameColumn.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				sortController.toggleSort(0);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
 
 		TableColumn projectColumn = new TableColumn(table, SWT.NONE, 1);
 		projectColumn.setText(Messages.ManifestEntrySourceColumn);
 		projectColumn.setResizable(true);
+		projectColumn.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				sortController.toggleSort(1);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
+		
 		tableLayout.layout(table, true);
 		return viewer;
 	}
 
 	private IVirtualReference[] refsForCurrentProject;
 	protected void refreshViewerFromNewParentProject() {
+		list.clear();
 		String parentString = parentSelection.getText();
 		refsForCurrentProject = new IVirtualReference[]{};
 		if( parentString != null && !"".equals(parentString)) { //$NON-NLS-1$
 			parentProject = ResourcesPlugin.getWorkspace().getRoot().getProject(parentString);
 			IVirtualReference[] current  = JavaModuleComponentUtility.findCurrentManifestEntries(parentProject, project);
-			refsForCurrentProject = addMissingDummyEntries(current);
+			refsForCurrentProject = sortRefsForCurrentProject(addMissingDummyEntries(current));
 			for( int i = 0; i < refsForCurrentProject.length; i++ ) {
 				list.add(refsForCurrentProject[i]);
 			}
@@ -339,8 +483,39 @@
 		manifestEntryViewer.refresh();
 	}
 	
+	private IVirtualReference[] sortRefsForCurrentProject(IVirtualReference[] currentRefs) {
+		IFile manifestFile = getManifestIFile(rootComponent);
+		if (manifestFile == null)
+			return currentRefs;
+		
+		HashMap<String, IVirtualReference> unsortedRefMap = new HashMap<String, IVirtualReference>();
+		for (int i = 0; i < currentRefs.length; i++) {
+			IVirtualReference ref = currentRefs[i];
+			String entryName;
+			if(ref.getRuntimePath().toString().length() > 0)
+				entryName = ref.getRuntimePath().append(ref.getArchiveName()).toString();
+			else
+				entryName = ref.getArchiveName();
+			unsortedRefMap.put(entryName, ref);
+		}
+		List<IVirtualReference> sortedRefs = new ArrayList<IVirtualReference>();
+		ArchiveManifest manifest = ManifestUtilities.getManifest(manifestFile);
+		String[] entries = manifest.getClassPathTokenized();
+		for (int i = 0; i < entries.length; i++) {
+			IVirtualReference ref = unsortedRefMap.get(entries[i]);
+			if (ref != null) {
+				sortedRefs.add(ref);
+			}
+		}
+		return sortedRefs.toArray(new IVirtualReference[sortedRefs.size()]);
+	}
+	
 	protected void refreshViewer() {
 		refsForCurrentProject = list.toArray(new IVirtualReference[list.size()]);
+		GridData data = new GridData(GridData.FILL_BOTH);
+		int numlines = Math.min(10, manifestEntryViewer.getTable().getItemCount());
+		data.heightHint = manifestEntryViewer.getTable().getItemHeight() * numlines;
+		manifestEntryViewer.getTable().setLayoutData(data);
 		manifestEntryViewer.refresh();
 	}
 	
@@ -387,7 +562,12 @@
 	public static IVirtualReference createDummyReference(String path, IProject project, IVirtualComponent rootComponent) {
 		IVirtualComponent comp = new DummyVirtualComponent(project, rootComponent);
 		IVirtualReference ref = ComponentCore.createReference(rootComponent, comp);
-		IPath path2 = new Path(path);
+		if(path.indexOf("\\") > 0) {
+			ref.setRuntimePath(new Path(""));
+			ref.setArchiveName(path);
+			return ref;
+		}
+		IPath path2 = new Path(path.trim());
 		IPath runtimePath = path2.segmentCount() > 1 ? path2.removeLastSegments(1) : new Path("/"); //$NON-NLS-1$
 		runtimePath = runtimePath.makeRelative();
 		ref.setRuntimePath(runtimePath);
@@ -429,28 +609,36 @@
 
 
 	public boolean performOk() {
-		IDataModel updateManifestDataModel = DataModelFactory.createDataModel(new UpdateManifestDataModelProvider());
-		updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.PROJECT_NAME, project.getName());
-		updateManifestDataModel.setBooleanProperty(UpdateManifestDataModelProperties.MERGE, false);
-		updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.MANIFEST_FILE, getManifestIFile(rootComponent));
-		ArrayList<String> asStrings = new ArrayList<String>();
-		Iterator<IVirtualReference> i = list.iterator();
-		IVirtualReference tmp;
-		while(i.hasNext()) {
-			tmp = i.next();
-			asStrings.add(tmp.getRuntimePath().append(tmp.getArchiveName()).toString());
-		}
-		updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.JAR_LIST, asStrings);
-		try {
-			updateManifestDataModel.getDefaultOperation().execute(new NullProgressMonitor(), null );
-		} catch (ExecutionException e) {
-			// TODO log J2EEUIPlugin.logError(e);
+		if(addButton != null && addButton.isEnabled()) {
+			IDataModel updateManifestDataModel = DataModelFactory.createDataModel(new UpdateManifestDataModelProvider());
+			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.PROJECT_NAME, project.getName());
+			updateManifestDataModel.setBooleanProperty(UpdateManifestDataModelProperties.MERGE, false);
+			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.MANIFEST_FILE, getManifestIFile(rootComponent));
+			ArrayList<String> asStrings = new ArrayList<String>();
+			Iterator<IVirtualReference> i = list.iterator();
+			IVirtualReference tmp;
+			while(i.hasNext()) {
+				tmp = i.next();
+				if(tmp.getArchiveName() != null) {
+					if(tmp.getRuntimePath().toString().length() > 0 )
+						asStrings.add(tmp.getRuntimePath().append(tmp.getArchiveName()).toString());
+					else
+						asStrings.add(tmp.getArchiveName());
+				}
+			}
+			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.JAR_LIST, asStrings);
+			try {
+				updateManifestDataModel.getDefaultOperation().execute(new NullProgressMonitor(), null );
+			} catch (ExecutionException e) {
+				// TODO log J2EEUIPlugin.logError(e);
+			}
 		}
 
 		return true;
 	}
 
 	public void performDefaults() {
+		refreshViewerFromNewParentProject();
 	}
 
 	public boolean performCancel() {
@@ -463,4 +651,27 @@
 	public void dispose() {
 	}
 
+	public void performApply() {
+		IFile manifest = getManifestIFile(rootComponent);
+		if(manifest == null) {
+			previousManifest = null;
+			addButton.setEnabled(false);
+			performDefaults();
+		} else {
+			if(previousManifest == null) {
+				performDefaults();
+			} else {
+				String currentManifest = manifest.getFullPath().toOSString();
+				if(!previousManifest.equals(currentManifest)) {
+					performDefaults();
+				}
+			}
+			previousManifest = manifest.getFullPath().toOSString();
+			addButton.setEnabled(true);
+			
+		}
+		updateButtons();
+		performOk();
+	}
+
 }
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
index 3dce0c0..283cdcc 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,17 +7,27 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
+
 package org.eclipse.jst.common.ui.internal.assembly.wizard;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
 import org.eclipse.jdt.internal.ui.wizards.buildpaths.CPVariableElement;
 import org.eclipse.jdt.internal.ui.wizards.buildpaths.CPVariableElementLabelProvider;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -27,6 +37,8 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIContextIds;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
 import org.eclipse.jst.common.ui.internal.Messages;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
@@ -67,8 +79,10 @@
 		this.handle = handle;
 		handle.setTitle(Messages.VariableReferenceTitle);
 		handle.setDescription(Messages.VariableReferenceDescription);
+		handle.setImageDescriptor(JavaPluginImages.DESC_WIZBAN_ADD_LIBRARY);
 				
 		Composite c = new Composite(parent, SWT.NONE);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IJstCommonUIContextIds.DEPLOYMENT_ASSEMBLY_NEW_VARIABLE_REFERENCE_P1);
 		c.setLayout(new FormLayout());
 		viewer = new TreeViewer(c, SWT.SINGLE | SWT.BORDER);
 		viewer.setContentProvider(getContentProvider());
@@ -80,6 +94,8 @@
 			}
 		});
 		FormData fd = new FormData();
+		fd.width = 390;
+		fd.height = 185;
 		fd.left = new FormAttachment(0, 5);
 		fd.top = new FormAttachment(0, 5);
 		fd.right = new FormAttachment(100, -5);
@@ -103,7 +119,7 @@
 			} else if( o instanceof ExtendedVariable) {
 				p = ((ExtendedVariable)o).element.getPath().append(((ExtendedVariable)o).pathAfterElement);
 			}
-			if( p.toFile().isDirectory()) {
+			if(p == null || p.isEmpty() || p.toFile().isDirectory() || !isValidArchive(p)) {
 				isComplete = false;
 			}
 		}
@@ -214,6 +230,7 @@
 
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
 		IVirtualComponent rootComponent = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
+		String runtimeLoc = (String)getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
 		if (selected != null ) {
 			ArrayList<IVirtualReference> refList = new ArrayList<IVirtualReference>();
 //			for (int i = 0; i < selected.length; i++) {
@@ -228,6 +245,9 @@
 									type + variablePath.toString());
 					VirtualReference ref = new VirtualReference(rootComponent, archive);
 					ref.setArchiveName(resolvedPath.lastSegment());
+					if (runtimeLoc != null) {
+						ref.setRuntimePath(new Path(runtimeLoc).makeAbsolute());
+					}
 					refList.add(ref);
 				}
 //			}
@@ -243,4 +263,38 @@
 		}
 		return new Path(((CPVariableElement)selected).getName());
 	}
+	
+	private boolean isValidArchive(IPath path) {
+		boolean valid = true;
+		ZipFile zipFile = null;
+		try {
+			String osPath = null;
+			if(path.segmentCount() > 1){
+				IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+				if(file.exists()) {
+					IPath loc = file.getLocation();
+					if(loc != null) { 
+						osPath = loc.toOSString();
+					}
+				}
+			}
+			if(osPath == null){
+				osPath = path.toOSString();
+			}
+			zipFile = new ZipFile(new File(osPath));
+		} catch (ZipException e1){
+			valid = false;
+		} catch (IOException e2){
+			valid = false;
+		}finally {
+			if (zipFile != null){
+				try {
+					zipFile.close();
+				} catch (IOException e) {
+					JstCommonUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, JstCommonUIPlugin.PLUGIN_ID, e.getMessage(), e));
+				}
+			}
+		}
+		return valid;
+	}
 }
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
index 2a5f096..82ed8ed 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
@@ -1,18 +1,21 @@
-JarTitle=Add a Jar Reference
-JarDescription=Here you can reference a workspace Jar\nThis is not a suggested use-case, but is here for backwards compatability.
-ExternalJarTitle=Add an External Jar Reference
-ExternalJarDescription=Here you can reference a filesystem Jar\nThis is not a suggested use-case, but is here for backwards compatability.
-Browse=Browse...
-VariableReferenceTitle=Add a Variable Reference
-VariableReferenceDescription=Here you can reference a variable which maps to a single jar.\nThis is not a suggested use-case, but is here for backwards compatability.
-AddManifestEntryTaskWizardTitle=Add Manifest Entry
-AddManifestEntryTaskWizardDesc=To add manifest entries that should be accessible at runtime,\nselect one or more desired entries and press "Finish"
-ParentProjects=Parent Projects: 
-CustomEntryButton=Add Custom Entry
-Add=Add...
-Remove=Remove
-MoveUp=Move Up
-MoveDown=Move Down
+ArchiveTitle=Archives from Workspace
+ArchiveDescription=Select archives to include in the deployment assembly.
+ArchiveDialogNewTitle=Archive Selection
+ArchiveDialogNewDescription=&Select archives to include in the deployment assembly:
+ExternalArchiveTitle=Archives from File System
+ExternalArchiveDescription=Select archives to include in the deployment assembly.
+Browse=Br&owse...
+VariableReferenceTitle=Archive via Path Variable
+VariableReferenceDescription=Select archive to include in the deployment assembly.
+AddManifestEntryTaskWizardTitle=Add Manifest Entries
+AddManifestEntryTaskWizardDesc=Add manifest entries that should be accessible at runtime.
+ParentProject=&Parent project: 
+CustomEntryButton=&Add Custom Entry
+Add=A&dd...
+Remove=&Remove
+MoveUp=Move &Up
+MoveDown=Move Do&wn
 ManifestEntryColumn=Manifest Entry
 ManifestEntrySourceColumn=Source
-ConfigureParentLink=Configure Available Manifest Entries
\ No newline at end of file
+ConfigureParentLink=Configure available manifest entries...
+InvalidArchivesWarning=The following files were not added because they are not archive files or are corrupted: 
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
index 54de84f..5878621 100644
--- a/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emf/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.emf; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.100.qualifier
 Bundle-Activator: org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin
 Bundle-Vendor: %pluginProvider
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java
index f7c6919..d4b8ea4 100644
--- a/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java
+++ b/plugins/org.eclipse.wst.common.emf/workbench/org/eclipse/wst/common/internal/emf/ResourceSynchronizedIsLoadingAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
+ * Copyright (c) 2005, 2010 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -18,8 +18,8 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapter;
 import org.eclipse.wst.common.internal.emf.plugin.EcoreUtilitiesPlugin;
+import org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapter;
 
 
 
@@ -57,7 +57,7 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see com.ibm.wtp.internal.emf.utilities.ResourceIsLoadingAdapter#waitForResourceToLoad()
+	 * @see org.eclipse.wst.common.internal.emf.utilities.ResourceIsLoadingAdapter#waitForResourceToLoad()
 	 */
 	@Override
 	public void waitForResourceToLoad() {
@@ -82,13 +82,10 @@
 	}
 
 
-	/**
-	 * 
-	 */
 	private void logWarning() {
-		Notifier target = getTarget();
-		if (target == null || !(target instanceof Resource)) {
-			Resource resource = (Resource) target;
+		Notifier notificationTarget = getTarget();
+		if (notificationTarget != null && notificationTarget instanceof Resource) {
+			Resource resource = (Resource) notificationTarget;
 			EcoreUtilitiesPlugin.logError("[WARNING] Could not acquire Semaphore Lock for Resource: \"" + resource.getURI() + "\" in " + getClass());  //$NON-NLS-1$//$NON-NLS-2$
 		}
 	}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
index 8b6dcc1..3fa734c 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2DOMAdapterImpl.java
@@ -1287,10 +1287,13 @@
 		if (textNode != null) {
 			textNode.setData(text);
 		} else {
+			textNode = createTextNode(parent.getOwnerDocument(), map, text);
 			if (!isEmptyTag((Element) parent)) {
-				Text newNode = createTextNode(parent.getOwnerDocument(), map, text);
-				DOMUtilities.insertBeforeNode(parent, newNode, null);
-				return newNode;
+				DOMUtilities.insertBeforeNode(parent, textNode, null);
+			}
+			else
+			{
+				parent.appendChild(textNode);
 			}
 		}
 		return textNode;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java
index 21064f7..0913c14 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/EMF2SAXRenderer.java
@@ -15,6 +15,7 @@
 import java.io.OutputStream;
 import java.util.Map;
 
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.OutputKeys;
@@ -50,7 +51,7 @@
 	 * 
 	 * @see com.ibm.etools.emf2xml.Renderer#doLoad(java.io.InputStream, java.util.Map)
 	 */
-	public void doLoad(InputStream in, Map options) {
+	public void doLoad(InputStream in, Map options) throws IOException {
 		try {
 			SAXParserFactory factory = SAXParserFactory.newInstance();
 			factory.setValidating(isValidating());
@@ -65,11 +66,13 @@
 			try {
 				reader.setFeature("http://xml.org/sax/features/validation", isValidating()); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException snre) {
+                // ignore exception
 			}
 			try {
 				reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException snre) {
-			}
+                // ignore exception
+            }
 			try {
 				reader.setFeature("http://apache.org/xml/features/validation/schema", isValidating()); //$NON-NLS-1$
 			} catch (SAXNotRecognizedException e) {
@@ -93,9 +96,11 @@
 			reader.parse(testsource);
 		} catch (RuntimeException t_rex) {
 			throw t_rex;
-		} catch (Exception ex) {
-			throw new WrappedException(ex);
-		}
+		} catch (SAXException se) {
+		    throw new WrappedException(se);
+        } catch (ParserConfigurationException e) {
+            throw new WrappedException(e);
+        }
 	}
 
 	/*
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java
index 520f7f0..46e9183 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/IDTranslator.java
@@ -48,14 +48,16 @@
 
 	@Override
 	public void setMOFValue(EObject emfObject, Object value) {
-		XMIResource res = (XMIResource) emfObject.eResource();
-		if (res == null)
-			throw new NoResourceException();
-		String id = res.getID(emfObject);
-		if (id == null && value == null)
-			return;
-		if ((id != null && !id.equals(value)) || (value != null && !value.equals(id)))
-			res.setID(emfObject, (String) value);
+		if (emfObject != null) {
+			XMIResource res = (XMIResource) emfObject.eResource();
+			if (res == null)
+				throw new NoResourceException();
+			String id = res.getID(emfObject);
+			if (id == null && value == null)
+				return;
+			if ((id != null && !id.equals(value)) || (value != null && !value.equals(id)))
+				res.setID(emfObject, (String) value);
+		}
 	}
 
 	@Override
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
index 0cee91f..e46e58e 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/resource/Translator.java
@@ -476,7 +476,7 @@
 	 *            org.eclipse.emf.ecore.EObject
 	 */
 	public boolean featureExists(EObject emfObject) {
-		if (feature == null)
+		if (feature == null || emfObject == null)
 			return false;
 
 		return emfObject.eClass().getEStructuralFeature(feature.getName()) != null;
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
index 1ec1c45..823f191 100644
--- a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ExtendedEcoreUtil.java
@@ -11,10 +11,12 @@
 package org.eclipse.wst.common.internal.emf.utilities;
 
 import java.io.FileNotFoundException;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.WrappedException;
@@ -34,7 +36,80 @@
 	private static FileNotFoundDetector FILE_NOT_FOUND_DETECTOR;
 	private static String NAME_ATTRIBUTE_STRING = "name"; //$NON-NLS-1$
 
+	public static class ESynchronizedAdapterList extends EAdapterList
+	  {
 
+	    /**
+		 * 
+		 */
+		private static final long serialVersionUID = 7855438339187540718L;
+
+		public ESynchronizedAdapterList(Notifier notifier) {
+			super(notifier);
+		}
+
+		@Override
+		public synchronized boolean add(Object object)
+	    {
+	    return super.add(object);
+	    }
+
+	    @Override
+		public synchronized void add(int index, Object object)
+	    {
+	    super.add(index, object);
+	    }
+
+	    @Override
+		public synchronized boolean addAll(Collection collection)
+	    {
+	    return super.addAll(collection);
+	    }
+
+	    @Override
+		public synchronized boolean remove(Object object)
+	    {
+	    return super.remove(object);
+	    }
+
+	    @Override
+		public synchronized Object remove(int index)
+	    {
+	    return super.remove(index);
+	    }
+
+	    @Override
+		public synchronized boolean removeAll(Collection collection)
+	    {
+	    return super.removeAll(collection);
+	    }
+
+	    @Override
+		public synchronized void clear()
+	    {
+	     super.clear();
+	    }
+
+
+	    @Override
+		public synchronized Object set(int index, Object object)
+	    {
+	    return super.set(index, object);
+	    }
+
+	    @Override
+		public synchronized void move(int newPosition, Object object)
+	    {
+	    super.move(newPosition, object);
+	    }
+
+	    @Override
+		public synchronized Object move(int newPosition, int oldPosition)
+	    {
+	    return super.move(newPosition, oldPosition);
+	    }
+	  }
+	
 	public interface FileNotFoundDetector {
 		boolean isFileNotFound(WrappedException wrappedEx);
 	}
@@ -71,10 +146,11 @@
 
 	public static void eSetOrAdd(EObject obj, EStructuralFeature feature, Object value, int newIndex) {
 		if (feature.isMany() && value != null) {
-			if (newIndex >= 0)
-				((List) obj.eGet(feature)).add(newIndex, value);
+			List featureList = ((List) obj.eGet(feature));
+			if (newIndex >= 0 && newIndex < featureList.size())
+				featureList.add(newIndex, value);
 			else
-				((List) obj.eGet(feature)).add(value);
+				featureList.add(value);
 		} else {
 			obj.eSet(feature, value);
 		}
diff --git a/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand2.java b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand2.java
new file mode 100644
index 0000000..2fb3c95
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.emf/wtpemf/org/eclipse/wst/common/internal/emf/utilities/ICommand2.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.internal.emf.utilities;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+
+public interface ICommand2 extends ICommand {
+
+	/**
+	 * Accessor for a {@link List} of {@link IProject} that were modified by the execution of this command.
+	 * 
+	 * @return A {@link List} of {@link IProject} that were modified by the execution of this command.
+	 */
+	public List getAffectedProjects();
+}
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
index b97fa45..ae350da 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.emfworkbench.integration; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.101.qualifier
 Bundle-Activator: org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
@@ -11,7 +11,7 @@
  org.eclipse.wst.common.internal.emfworkbench.integration;x-internal:=true,
  org.eclipse.wst.common.internal.emfworkbench.validateedit;x-internal:=true
 Require-Bundle: org.eclipse.wst.common.frameworks;bundle-version="[1.1.200,2.0.0)",
- org.eclipse.jem.util;bundle-version="[2.0.100,3.0.0)",
+ org.eclipse.jem.util;bundle-version="[2.1.0,3.0.0)",
  org.eclipse.emf.edit;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.4.0,3.0.0)",
  org.eclipse.wst.common.emf;bundle-version="[1.1.200,2.0.0)",
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java
index 1c04b70..a4e957d 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/PassthruResourceSet.java
@@ -20,7 +20,6 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl;
 import org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase;
 
@@ -41,7 +40,7 @@
 public class PassthruResourceSet extends ProjectResourceSetImpl {
 	protected boolean isIsolated = false;
 
-	public class PassthruResourcesEList extends ResourceSetImpl.ResourcesEList {
+	public class PassthruResourcesEList extends SynchronizedResourcesEList {
 		/**
 		 * 
 		 */
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java
index 1d5a248..f83118f 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/EditModel.java
@@ -907,7 +907,8 @@
 	/**
 	 * Process Resources that we are interrested in.
 	 */
-	protected boolean processResourcesIfInterrested(List someResources) {
+	protected boolean processResourcesIfInterrested(List aSomeResources) {
+		List someResources = new ArrayList(aSomeResources);
 		int size = someResources.size();
 		Resource res;
 		boolean processed = false;
@@ -936,6 +937,8 @@
 
 
 	public IProject getProject() {
+		if(project == null)
+			throw new IllegalStateException("The value of the project attribute is null"); //$NON-NLS-1$
 		return project;
 	}
 
diff --git a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
index 32cf6a8..65faf9c 100644
--- a/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
+++ b/plugins/org.eclipse.wst.common.emfworkbench.integration/src/org/eclipse/wst/common/internal/emfworkbench/integration/ResourceSetWorkbenchEditSynchronizer.java
@@ -38,19 +38,17 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.jobs.ILock;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.WrappedException;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.jem.internal.util.emf.workbench.EMFWorkbenchContextFactory;
+import org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl;
 import org.eclipse.jem.util.emf.workbench.ProjectResourceSet;
 import org.eclipse.jem.util.emf.workbench.ResourceSetWorkbenchSynchronizer;
 import org.eclipse.jem.util.plugin.JEMUtilPlugin;
 import org.eclipse.wst.common.internal.emf.resource.ReferencedResource;
 import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
-import org.eclipse.wst.common.internal.emfworkbench.integration.EMFWorkbenchEditPlugin;
 
 /**
  * @author schacher
@@ -180,52 +178,24 @@
 		}
 	}
 
-	private ILock lock;
-	private static final long delay = 30;
-	
-    private ILock getLock() {
-        if (lock == null)
-            lock = Platform.getJobManager().newLock();
-        return lock;
-    }
-    
-    private void releaseLock() {
-        getLock().release();
-    }
-    private boolean aquireLock() throws InterruptedException{
-    	return getLock().acquire(delay);
-    }
-    
 	protected void acceptDelta(final IResourceChangeEvent event) {
 
-		boolean hasLocked = false;
-		try {
-			hasLocked = aquireLock();
-		} catch (InterruptedException e) {
-			EMFWorkbenchEditPlugin.logError(e);
-		}		
-		
-		try{
-			final IResourceDelta delta = event.getDelta();
-	
-			if (ResourcesPlugin.getWorkspace().isTreeLocked()) {
-				primAcceptDelta(delta, event);
-			}
-			else {
-				IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
-					public void run(IProgressMonitor monitor) throws CoreException {
-						primAcceptDelta(delta, event);
-					}
-				};
-				try {
-					ResourcesPlugin.getWorkspace().run(runnable, project, IWorkspace.AVOID_UPDATE, null);
-				} catch (CoreException e) {
-					EMFWorkbenchEditPlugin.logError(e);
+		final IResourceDelta delta = event.getDelta();
+
+		if (ResourcesPlugin.getWorkspace().isTreeLocked()) {
+			primAcceptDelta(delta, event);
+		}
+		else {
+			IWorkspaceRunnable runnable = new IWorkspaceRunnable() {
+				public void run(IProgressMonitor monitor) throws CoreException {
+					primAcceptDelta(delta, event);
 				}
+			};
+			try {
+				ResourcesPlugin.getWorkspace().run(runnable, project, IWorkspace.AVOID_UPDATE, null);
+			} catch (CoreException e) {
+				EMFWorkbenchEditPlugin.logError(e);
 			}
-		}finally{
-			if( hasLocked )
-				releaseLock();
 		}
 	}
 
@@ -429,21 +399,41 @@
 	protected List getResources(IFile aFile) {
 
 		List resources = new ArrayList();
-		List allResources = resourceSet.getResources();
-		for (Iterator iterator = allResources.iterator(); iterator.hasNext();) {
-			Resource res = (Resource) iterator.next();
-			URI resURI = res.getURI();
-			String resURIString = ""; //$NON-NLS-1$
-			if (resURI.path() != null) {
-				IPath resURIPath;
-				if (WorkbenchResourceHelper.isPlatformResourceURI(resURI))
-					resURIPath = new Path(URI.decode(resURI.path())).removeFirstSegments(2);
-				else
-					resURIPath = new Path(URI.decode(resURI.path())).removeFirstSegments(1);
-				resURIString = resURIPath.toString();
+		String aFileString = URI.decode(aFile.getFullPath().toString());
+		IPath aFilePath = new Path(aFileString).removeFirstSegments(1);
+		if (!aFilePath.isEmpty())
+		{
+			aFileString = aFilePath.toString();
+		}
+		if (aFileString.length() > 0)
+		{
+			List allResources = null;
+			if (resourceSet instanceof ProjectResourceSetImpl) {
+	            ProjectResourceSetImpl projResSet =(ProjectResourceSetImpl)resourceSet;
+	            allResources = projResSet.getImmutableResources();
+	        } else {
+	            allResources = resourceSet.getResources();
+	        }
+			for (Iterator iterator = allResources.iterator(); iterator.hasNext();) {
+				Resource res = (Resource) iterator.next();
+				URI resURI = res.getURI();
+				String resURIString = ""; //$NON-NLS-1$
+				if (resURI.path() != null) {
+					IPath resURIPath;
+					if (WorkbenchResourceHelper.isPlatformResourceURI(resURI))
+						resURIPath = new Path(URI.decode(resURI.path())).removeFirstSegments(2);
+					else
+						resURIPath = new Path(URI.decode(resURI.path())).removeFirstSegments(1);
+					resURIString = resURIPath.toString();
+				}
+	
+				if (resURIString.length() > 0)
+				{
+					if (aFileString.equals(resURIString))
+					//if (!resURIString.equals("") && aFile.getFullPath().toString().indexOf(resURIString) != -1) //$NON-NLS-1$
+						resources.add(res);
+				}
 			}
-			if (!resURIString.equals("") && aFile.getFullPath().toString().indexOf(resURIString) != -1) //$NON-NLS-1$
-				resources.add(res);
 		}
 		return resources;
 	}
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
index 4a9fe89..e344a2e 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.wst.common.frameworks.ui; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.200.qualifier
 Bundle-Activator: org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.common.frameworks.internal.datamodel.ui;x-internal:=true,
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelSynchHelper.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelSynchHelper.java
index 4f18abb..2478830 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelSynchHelper.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelSynchHelper.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -46,9 +46,6 @@
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelListener;
 import org.eclipse.wst.common.frameworks.internal.ui.TimedModifyListener;
 
-/**
- * This class is EXPERIMENTAL and is subject to substantial changes.
- */
 public class DataModelSynchHelper implements IDataModelListener {
 	protected static final boolean isLinux = System.getProperty("os.name").equals("Linux"); //$NON-NLS-1$ //$NON-NLS-2$
 
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java
index 7bdbbe0..4157391 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizard.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -34,10 +34,6 @@
 import org.eclipse.wst.common.frameworks.internal.ui.WTPCommonUIResourceHandler;
 import org.eclipse.wst.common.frameworks.internal.ui.WTPUIPlugin;
 
-
-/**
- * This class is EXPERIMENTAL and is subject to substantial changes.
- */
 public abstract class DataModelWizard extends Wizard implements IDMPageHandler {
 	
 	private IDataModel dataModel;
@@ -161,7 +157,6 @@
 	}
 
 	// TODO need to implement this. Perhaps in the PageGroupManager
-	//
 	protected void resetAfterFinishError() {
 		// IWizardPage[] pages = getPages();
 		// for (int i = 0; i < pages.length; i++) {
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java
index 626d75c..df7cad8 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/DataModelWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2008 IBM Corporation and others.
+ * Copyright (c) 2001, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -31,9 +31,6 @@
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelListener;
 import org.eclipse.wst.common.frameworks.internal.ui.ValidationStatus;
 
-/**
- * This class is EXPERIMENTAL and is subject to substantial changes.
- */
 public abstract class DataModelWizardPage extends WizardPage implements Listener, IDataModelListener {
 	
 	protected static final int NEXT = 1;
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/IDMPageHandler.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/IDMPageHandler.java
index a4419a3..4866eba 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/IDMPageHandler.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/datamodel/ui/IDMPageHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -10,9 +10,6 @@
  *******************************************************************************/
 package org.eclipse.wst.common.frameworks.internal.datamodel.ui;
 
-/**
- * This interface is EXPERIMENTAL and is subject to substantial changes.
- */
 public interface IDMPageHandler {
 
 	/**
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/operation/extensionui/DMWizardExtensionFactory.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/operation/extensionui/DMWizardExtensionFactory.java
index b9f0cff..5a6c9a3 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/operation/extensionui/DMWizardExtensionFactory.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/operation/extensionui/DMWizardExtensionFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,9 +15,6 @@
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.IDMPageGroupHandler;
 import org.eclipse.wst.common.frameworks.internal.datamodel.ui.IDMPageHandler;
 
-/**
- * This interface is EXPERIMENTAL and is subject to substantial changes.
- */
 public abstract class DMWizardExtensionFactory {
 
 	public DMWizardExtensionFactory() {
diff --git a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/ErrorDialog.java b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/ErrorDialog.java
index a4fa24e..dfa54d1 100644
--- a/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/ErrorDialog.java
+++ b/plugins/org.eclipse.wst.common.frameworks.ui/wtp_ui/org/eclipse/wst/common/frameworks/internal/ui/ErrorDialog.java
@@ -43,7 +43,7 @@
 	private Throwable detail;
 	private int detailButtonID = -1;
 	private Text text;
-	private String message;
+	private String message2;
 	//Workaround. SWT does not seem to set the default button if
 	//there is not control with focus. Bug: 14668
 	private int defaultButtonIndex = 0;
@@ -56,8 +56,7 @@
 		super(parentShell, dialogTitle, dialogTitleImage, dialogMessage, dialogImageType, dialogButtonLabels, defaultIndex);
 		defaultButtonIndex = defaultIndex;
 		this.detail = detail;
-		message = dialogMessage;
-		setShellStyle(getShellStyle() | SWT.APPLICATION_MODAL | SWT.RESIZE);
+		message2 = dialogMessage;
 	}
 
 	//Workaround. SWT does not seem to set rigth the default button if
@@ -181,9 +180,9 @@
 			label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER | GridData.VERTICAL_ALIGN_BEGINNING));
 		}
 		// create message
-		if (message != null) {
+		if (message2 != null) {
 			Label label = new Label(composite, SWT.WRAP);
-			label.setText(message);
+			label.setText(message2);
 			GridData data = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER);
 			data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
 			label.setLayoutData(data);
diff --git a/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF
index 6a25ad7..f17c5a7 100644
--- a/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.frameworks/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.wst.common.frameworks; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.200.qualifier
 Bundle-Activator: org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin
 Bundle-Vendor: %provider
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/AscendingGroupComparator.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/AscendingGroupComparator.java
index 39afa0c..2a473d6 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/AscendingGroupComparator.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/AscendingGroupComparator.java
@@ -28,6 +28,8 @@
 	private static AscendingGroupComparator singleton;
 
 	public int compare(Object o1, Object o2) {
+		FunctionGroup group1 = (FunctionGroup) o1;
+		FunctionGroup group2 = (FunctionGroup) o2;
 		if (o2 == null && o1 != null)
 			return -1;
 		if (o1 == null && o2 != null)
@@ -35,9 +37,6 @@
 		if (o1 == null && o2 == null)
 			return 0;
 
-		FunctionGroup group1 = (FunctionGroup) o1;
-		FunctionGroup group2 = (FunctionGroup) o2;
-
 		if (group1.getPriority() > group2.getPriority())
 			return 1;
 		if (group1.getPriority() == group2.getPriority())
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/DescendingGroupComparator.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/DescendingGroupComparator.java
index 0720856..0c7619b 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/DescendingGroupComparator.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/enablement/DescendingGroupComparator.java
@@ -29,6 +29,8 @@
 	private static DescendingGroupComparator singleton;
 
 	public int compare(Object o1, Object o2) {
+		FunctionGroup group1 = (FunctionGroup) o1;
+		FunctionGroup group2 = (FunctionGroup) o2;
 		if (o1 == null && o2 != null)
 			return -1;
 		if (o2 == null && o1 != null)
@@ -36,9 +38,6 @@
 		if (o1 == null && o2 == null)
 			return 0;
 
-		FunctionGroup group1 = (FunctionGroup) o1;
-		FunctionGroup group2 = (FunctionGroup) o2;
-
 		if (group1.getPriority() > group2.getPriority())
 			return -1;
 		if (group1.getPriority() == group2.getPriority())
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/IHeadlessRunnableWithProgress.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/IHeadlessRunnableWithProgress.java
index 35db85c..d4b7ac9 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/IHeadlessRunnableWithProgress.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/operations/IHeadlessRunnableWithProgress.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -15,9 +15,8 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 
 /**
- * Simialar to org.eclipse.jface.operation.IRunnableWithProgress, however without UI dependencies.
- * 
- * This class is EXPERIMENTAL and is subject to substantial changes.
+ * Similar to org.eclipse.jface.operation.IRunnableWithProgress, however without UI dependencies.
+ *
  */
 public interface IHeadlessRunnableWithProgress {
 	/**
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java
index 85111d6..25bf558 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java
+++ b/plugins/org.eclipse.wst.common.frameworks/src/org/eclipse/wst/common/frameworks/internal/plugin/WTPCommonMessages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -51,4 +51,6 @@
 	public static final String PROJECT_EXISTS_SAMENAME_ERROR = "43"; //$NON-NLS-1$
 	public static final String RUNTIME_NONE = "44"; //$NON-NLS-1$
 	public static final String EAR_WILL_BE_CREATED = "45"; //$NON-NLS-1$
+	public static final String SAME_MODULE_AND_EAR_NAME_DIFFERENT_CASE = "46"; //$NON-NLS-1$
+	public static final String EAR_NAME_USED_BY_NON_EAR_PROJECT = "47"; //$NON-NLS-1$
 }
diff --git a/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties b/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties
index 81046cb..f8e9abb 100644
--- a/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties
+++ b/plugins/org.eclipse.wst.common.frameworks/src/wtp_common.properties
@@ -1,5 +1,5 @@
 ###############################################################################
-# Copyright (c) 2003, 2006 IBM Corporation and others.
+# Copyright (c) 2003, 2012 IBM Corporation and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Eclipse Public License v1.0
 # which accompanies this distribution, and is available at
@@ -53,3 +53,5 @@
 43=A project already exists with this name.
 44=<None>
 45=EAR project {0} does not exist. It will be created.
+46=The EAR project name, "{0}", can not be the same as the project name with a different case.
+47=EAR project name already in use by non-EAR project.
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.modulecore.ui/META-INF/MANIFEST.MF
index fd3a590..9c29828 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/META-INF/MANIFEST.MF
@@ -3,23 +3,26 @@
 Bundle-Name: %Bundle-Name.0
 Bundle-Vendor: %provider
 Bundle-SymbolicName: org.eclipse.wst.common.modulecore.ui; singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.0.200.qualifier
 Bundle-Localization: plugin
 Bundle-Activator: org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin
 Require-Bundle: org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.modulecore;bundle-version="[1.1.300,2.0.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.2.101,2.0.0)",
  org.eclipse.wst.common.frameworks;bundle-version="[1.1.300,2.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.4.0,2.0.0)",
  org.eclipse.jem.util;bundle-version="[2.0.200,3.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)",
  org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.2.0,2.0.0)"
+ org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.wst.server.core;bundle-version="[1.1.202,2.0.0)",
+ org.eclipse.core.expressions;bundle-version="[3.4.200,4.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Export-Package: org.eclipse.wst.common.componentcore.internal.impl;x-internal:=true,
- org.eclipse.wst.common.componentcore.ui,
+ org.eclipse.wst.common.componentcore.ui;x-internal:=true,
  org.eclipse.wst.common.componentcore.ui.internal.propertypage;x-internal:=true,
+ org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;x-internal:=true,
  org.eclipse.wst.common.componentcore.ui.internal.taskwizard;x-internal:=true,
- org.eclipse.wst.common.componentcore.ui.propertypage
+ org.eclipse.wst.common.componentcore.ui.propertypage;x-internal:=true
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/icons/assembly-banner.png b/plugins/org.eclipse.wst.common.modulecore.ui/icons/assembly-banner.png
new file mode 100644
index 0000000..6628af8
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/icons/assembly-banner.png
Binary files differ
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
index 7dae034..a963071 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
@@ -10,4 +10,6 @@
 ###############################################################################
 provider=Eclipse.org
 Bundle-Name.0 = Modulecore UI Plug-in
-Module_assembly.name = Deployment Assembly
\ No newline at end of file
+Module_assembly.name = Deployment Assembly
+Project=Project
+Folder_Mapping=Folder
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml
index 7485ccc..21c635e 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml
@@ -4,6 +4,8 @@
    <extension-point id="moduleDependencyPropertyPage" name="moduleDependencyPropertyPage" schema="schema/moduleDependencyPropertyPage.exsd"/>
    <extension-point id="referenceWizardFragment" name="referenceWizardFragment" schema="schema/referenceWizardFragment.exsd"/>
    <extension-point id="virtualComponentLabelProvider" name="virtualComponentLabelProvider" schema="schema/virtualComponentLabelProvider.exsd"/>
+   <extension-point id="deploymentAssemblyVerifier" name="Deployment Assembly Verifier" schema="schema/deploymentAssemblyVerifier.exsd"/>
+   <extension-point id="resourceMappingFilter" name="resourceMappingFilter" schema="schema/resourceMappingFilter.exsd"/>
    <!-- =========== DeploymentAssemblyPage ============ -->
    <extension
    		point="org.eclipse.ui.propertyPages">
@@ -29,13 +31,21 @@
              class="org.eclipse.wst.common.componentcore.ui.internal.propertypage.ProjectReferenceWizardFragment"
              icon="icons/prj_obj.gif"
              id="org.eclipse.wst.common.componentcore.ui.newProjectReference"
-             name="Project">
+             name="%Project">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.wst.common.componentcore.ui.internal.propertypage.FolderMappingWizardFragment"
              icon="icons/folder.gif"
              id="org.eclipse.wst.common.componentcore.ui.resourceMappingReference"
-             name="Folder Mapping">
+             name="%Folder_Mapping">
        </referenceFragment>
     </extension>
+    
+    <extension
+        point="org.eclipse.wst.common.modulecore.ui.resourceMappingFilter">
+        <resourceMapping 
+              source-path="\.settings">            
+        </resourceMapping>
+    </extension>
+    
 </plugin>
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/schema/deploymentAssemblyVerifier.exsd b/plugins/org.eclipse.wst.common.modulecore.ui/schema/deploymentAssemblyVerifier.exsd
new file mode 100644
index 0000000..36e2203
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/schema/deploymentAssemblyVerifier.exsd
@@ -0,0 +1,115 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.common.modulecore.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.wst.common.modulecore.ui" id="DeploymentAssemblyVerifier" name="Deployment Assembly Verifier"/>
+      </appInfo>
+      <documentation>
+         The extension point gives the ability to extend deployment assembly validation during the creation of resource and dependency mappings. Registration of the verifier is based on component type and server target.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="verifier"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a fully qualified identifier of the target extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="verifier">
+      <complexType>
+         <sequence>
+            <element ref="runtime" minOccurs="1" maxOccurs="unbounded"/>
+            <element ref="component"/>
+         </sequence>
+         <attribute name="class" type="string" use="required">
+            <annotation>
+               <documentation>
+                  the qualified name of the class to be used as the verifier
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn="AbstractDeploymentAssemblyVerifier:"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="runtime">
+      <complexType>
+         <attribute name="runtime_server_id" type="string" use="required">
+            <annotation>
+               <documentation>
+                  the runtime server id for this verifier
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="component">
+      <complexType>
+         <attribute name="component_type" type="string" use="required">
+            <annotation>
+               <documentation>
+                  the supported component type for this verifier(uses facet id)
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         &lt;b&gt;This extension point is part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.&lt;/b&gt;
+      </documentation>
+   </annotation>
+
+
+
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2010 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at &lt;a
+href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/schema/moduleDependencyPropertyPage.exsd b/plugins/org.eclipse.wst.common.modulecore.ui/schema/moduleDependencyPropertyPage.exsd
index 7562a68..df32f3e 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/schema/moduleDependencyPropertyPage.exsd
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/schema/moduleDependencyPropertyPage.exsd
@@ -13,6 +13,7 @@
    <element name="extension">
       <annotation>
          <appinfo>
+            <meta.element />
          </appinfo>
       </annotation>
       <complexType>
@@ -43,6 +44,13 @@
                </appinfo>
             </annotation>
          </attribute>
+         <attribute name="weight" type="string">
+            <annotation>
+               <documentation>
+                  Default weight is 100. Make higher is wanting to override
+               </documentation>
+            </annotation>
+         </attribute>
       </complexType>
    </element>
 
@@ -65,6 +73,13 @@
                </appinfo>
             </annotation>
          </attribute>
+         <attribute name="weight" type="string">
+            <annotation>
+               <documentation>
+                  Default weight is 100. Make higher is wanting to override
+               </documentation>
+            </annotation>
+         </attribute>
       </complexType>
    </element>
 
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/schema/referenceWizardFragment.exsd b/plugins/org.eclipse.wst.common.modulecore.ui/schema/referenceWizardFragment.exsd
index dbe2db5..e320384 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/schema/referenceWizardFragment.exsd
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/schema/referenceWizardFragment.exsd
@@ -10,6 +10,8 @@
       </documentation>
    </annotation>
 
+   <include schemaLocation="schema://org.eclipse.core.expressions/schema/expressionLanguage.exsd"/>
+
    <element name="extension">
       <annotation>
          <appinfo>
@@ -49,6 +51,9 @@
 
    <element name="referenceFragment">
       <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="enablement" minOccurs="0" maxOccurs="1"/>
+         </sequence>
          <attribute name="id" type="string" use="required">
             <annotation>
                <documentation>
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd b/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd
new file mode 100644
index 0000000..38b775a
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/schema/resourceMappingFilter.exsd
@@ -0,0 +1,97 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.wst.common.componentcore.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.wst.common.componentcore.ui" id="resourceMappingFilter" name="resourceMappingFilter"/>
+      </appinfo>
+      <documentation>
+         This extension point is to be used to specify any folder that should not be displayed or allowed to be added as resource mapping using the &apos;Deployment Assembly&apos; properties page
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element internal="true" />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence minOccurs="1" maxOccurs="unbounded">
+            <element ref="resourceMapping" minOccurs="1" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="resourceMapping">
+      <complexType>
+         <attribute name="source-path" type="string" use="required">
+            <annotation>
+               <documentation>
+                  Project relative source path that should be filtered out represented as regular expression. (i.e. source-path=&quot;\.settings&quot; would filter out the &apos;.settings&apos; folder and its contents; Since it expects a relative path filtering source-path=&quot;/\.settings&quot; would not filter out the &apos;.settings&apos; folder)
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         WTP 3.2.2
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="examples"/>
+      </appinfo>
+      <documentation>
+         &lt;extension 
+ point=&quot;org.eclipse.wst.common.modulecore.ui.resourceMappingFilter&quot;&gt;
+  &lt;resourceMapping
+   source-path=&quot;\.settings&quot;&gt;
+  &lt;/resourceMapping&gt;
+&lt;/extension&gt;
+      </documentation>
+   </annotation>
+
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2010 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at &lt;a
+href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/IModuleCoreUIContextIds.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/IModuleCoreUIContextIds.java
new file mode 100644
index 0000000..f526c66
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/IModuleCoreUIContextIds.java
@@ -0,0 +1,22 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui;
+
+/**
+ * @author: Aidyl Kareh
+ */
+public interface IModuleCoreUIContextIds {
+	//	 New references wizards
+	public static final String DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_REFERENCE_P1 = ModuleCoreUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_PROJECT_REFERENCE_P1 = ModuleCoreUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_PROJECT_REFERENCE_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_FOLDER_MAPPING_P1 = ModuleCoreUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_FOLDER_MAPPING_P1"; //$NON-NLS-1$
+	public static final String DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_DEPLOYMENT_ASSEMBLY_TAB = ModuleCoreUIPlugin.PLUGIN_ID + ".DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_DEPLOYMENT_ASSEMBLY_TAB"; //$NON-NLS-1$
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
index d6fce43..fa3211f 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Messages.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
+ * Copyright (c) 2009, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - Initial API and implementation
+ *     
+ *
  *******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui;
 
@@ -15,9 +17,9 @@
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.wst.common.componentcore.ui.messages"; //$NON-NLS-1$
 	public static String ModuleAssemblyRootPageDescription;
-	public static String ModuleAssembly;
 	public static String ErrorCheckingFacets;
 	public static String ErrorNotVirtualComponent;
+	public static String DeploymentAssemblyVerifierHelper_0;
 	public static String DeployPathColumn;
 	public static String SourceColumn;
 	public static String InternalLibJarWarning;
@@ -40,6 +42,10 @@
 	public static String VariableReferenceTitle;
 	public static String VariableReferenceDescription;
 	public static String WizardError;
+	public static String ProjectConversionError;
+	public static String ExistingFolderError;
+	public static String Revert;
+	public static String ErrorEntryNotFound;
 	
 	static {
 		// initialize resource bundle
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/ModuleCoreUIPlugin.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/ModuleCoreUIPlugin.java
index f0c9223..79cd747 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/ModuleCoreUIPlugin.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/ModuleCoreUIPlugin.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2009, 2012 Red Hat
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    
+ *
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui;
 
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Trace.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Trace.java
index bf3639e..6c732bd 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Trace.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/Trace.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *     IBM Corporation - Initial API and implementation
+ *     
+ *
  *******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui;
 
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java
index 9c140bc..d262603 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ComponentDependencyContentProvider.java
@@ -15,9 +15,11 @@
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.viewers.DecoratingLabelProvider;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.graphics.Image;
@@ -38,10 +40,11 @@
  * This provider no longer "meddles" in to the content as it used to, 
  * but rather serves as only a view of it. 
  */
-public class ComponentDependencyContentProvider extends LabelProvider implements IStructuredContentProvider, ITableLabelProvider {
+public class ComponentDependencyContentProvider extends LabelProvider implements IStructuredContentProvider, ITableLabelProvider, ITreeContentProvider {
 	
 	final static String PATH_SEPARATOR = String.valueOf(IPath.SEPARATOR);
 	
+	private IVirtualComponent component;
 	private ArrayList<IVirtualReference> runtimePaths;
 	private ArrayList<ComponentResourceProxy> resourceMappings;
 	private DecoratingLabelProvider decProvider = new DecoratingLabelProvider(
@@ -77,10 +80,11 @@
 			return ModuleCoreUIPlugin.getInstance().getImage("folder");
 		}
 		if (element instanceof IVirtualReference) {
-			if (columnIndex == 0)
-				return ModuleCoreUIPlugin.getInstance().getImage("jar_obj");
-			else
+			if( columnIndex == AddModuleDependenciesPropertiesPage.SOURCE_COLUMN ){
 				return handleSourceImage(((IVirtualReference)element).getReferencedComponent());
+			} else if(columnIndex == AddModuleDependenciesPropertiesPage.DEPLOY_COLUMN){
+				return ModuleCoreUIPlugin.getInstance().getImage("jar_obj");
+			}
 		} 
 		if (element instanceof IProject){
 			return decProvider.getImage(element);
@@ -90,17 +94,21 @@
 
 	public String getColumnText(Object element, int columnIndex) {
 		if( element instanceof ComponentResourceProxy) {
-			if( columnIndex == 0 ) 
-				return ((ComponentResourceProxy)element).runtimePath.toString();
-			else if( columnIndex == 1 ) 
+			if( columnIndex == AddModuleDependenciesPropertiesPage.SOURCE_COLUMN ) { 
 				return ((ComponentResourceProxy)element).source.toString();
+			} else if( columnIndex == AddModuleDependenciesPropertiesPage.DEPLOY_COLUMN ) {
+				if(((ComponentResourceProxy)element).runtimePath.isRoot())
+					return ((ComponentResourceProxy)element).runtimePath.toString();
+				else
+					return ((ComponentResourceProxy)element).runtimePath.makeRelative().toString();
+			}
 		}
 		if( element instanceof IVirtualReference) {
-			if (columnIndex == 0) {
-				return AddModuleDependenciesPropertiesPage.getSafeRuntimePath((IVirtualReference)element);
-			} else if (columnIndex == 1) {
+			if (columnIndex == AddModuleDependenciesPropertiesPage.SOURCE_COLUMN) {
 				return handleSourceText(((IVirtualReference)element).getReferencedComponent());
-			}
+			} else if (columnIndex == AddModuleDependenciesPropertiesPage.DEPLOY_COLUMN) {
+				return new Path(AddModuleDependenciesPropertiesPage.getSafeRuntimePath((IVirtualReference)element)).makeRelative().toString();
+			} 
 		}
 		return null;
 	}
@@ -115,8 +123,8 @@
 		
 		// default impl
 		if( component.isBinary() ) {
-			IPath p = (IPath)component.getAdapter(IPath.class);
-			return p == null ? null : p.toString();
+			IPath p = (IPath)component.getAdapter(IPath.class);			
+			return p == null ? component.getName() : p.toString();
 		}
 		return component.getProject().getName();
 	}
@@ -140,5 +148,24 @@
 		
 	}
 
+	public void setComponent(IVirtualComponent component) {
+		this.component = component;
+	}
+
+	public IVirtualComponent getComponent(){
+		return component;
+	}
+
+	public Object[] getChildren(Object parentElement) {
+		return null;
+	}
+
+	public Object getParent(Object element) {
+		return null;
+	}
+
+	public boolean hasChildren(Object element) {
+		return false;
+	}
 	
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/DependencyPageExtensionManager.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/DependencyPageExtensionManager.java
index 05eadcc..01dd452 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/DependencyPageExtensionManager.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/DependencyPageExtensionManager.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,7 +7,9 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - added support for enablement expressions
  ******************************************************************************/
+
 package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
 
 import java.util.ArrayList;
@@ -15,9 +17,16 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
+import org.eclipse.core.expressions.EvaluationContext;
+import org.eclipse.core.expressions.EvaluationResult;
+import org.eclipse.core.expressions.Expression;
+import org.eclipse.core.expressions.ExpressionConverter;
+import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExtensionRegistry;
@@ -31,6 +40,7 @@
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
 
 public class DependencyPageExtensionManager {
+	private static final String DEFAULT_WEIGHT = "100"; //$NON-NLS-1$
 	private static DependencyPageExtensionManager manager = null;
 	public static DependencyPageExtensionManager getManager() {
 		if( manager == null )
@@ -39,22 +49,37 @@
 	}
 	
 	private HashMap<String, IDependencyPageProvider> providers = null;
+	private HashMap<String, String> providerWeight;
 	
 	public IDependencyPageProvider getProvider(IFacetedProject project) {
 		if( providers == null )
 			loadProviders();
-		Iterator<IDependencyPageProvider> i = providers.values().iterator();
-		IDependencyPageProvider temp;
-		while(i.hasNext()) {
-			temp = i.next();
-			if( temp.canHandle(project))
-				return temp;
+		IDependencyPageProvider foundProvider = null;
+		int highestWeight = 0;
+		for (Iterator iterator = providers.keySet().iterator(); iterator.hasNext();) {
+			String id = (String) iterator.next();
+			IDependencyPageProvider temp = providers.get(id);
+			if( temp.canHandle(project)) {
+				int weight = Integer.valueOf(providerWeight.get(id)).intValue();
+				if (foundProvider == null) {
+					foundProvider = temp;
+					highestWeight = weight;
+				}
+				else {
+					if (highestWeight < weight) {
+						foundProvider = temp;
+						highestWeight = weight;
+					}
+				}
+			}
 		}
-		return null;
+		return foundProvider;
 	}
 	
 	private void loadProviders() {
 		HashMap<String, IDependencyPageProvider> temp = new HashMap<String, IDependencyPageProvider>();
+		HashMap<String, String> tempProviderWeight = new HashMap<String, String>();
+		String weight;
 		IExtensionRegistry registry = Platform.getExtensionRegistry();
 		IConfigurationElement[] cf = registry.getConfigurationElementsFor(
 				ModuleCoreUIPlugin.PLUGIN_ID, "moduleDependencyPropertyPage"); //$NON-NLS-1$
@@ -62,9 +87,15 @@
 			try {
 				temp.put(cf[i].getAttribute("id"),  //$NON-NLS-1$
 					(IDependencyPageProvider)cf[i].createExecutableExtension("class"));  //$NON-NLS-1$
-			} catch( CoreException ce ) {}
+				weight = cf[i].getAttribute("weight"); //$NON-NLS-1$
+				tempProviderWeight.put(cf[i].getAttribute("id"),(weight == null) ? DEFAULT_WEIGHT : weight); //$NON-NLS-1$
+			} catch( CoreException ce ) 
+			{
+				ModuleCoreUIPlugin.log( ce );
+			}
 		}
 		providers = temp;
+		providerWeight = tempProviderWeight;
 	}
 	
 	public WizardFragment[] loadAllReferenceWizardFragments() {
@@ -75,7 +106,10 @@
 		for( int i = 0; i < cf.length; i++ ) {
 			try {
 				list.add((WizardFragment)cf[i].createExecutableExtension("class"));
-			} catch( CoreException ce) {}
+			} catch( CoreException ce) 
+			{
+				ModuleCoreUIPlugin.log( ce );
+			}
 		}
 		return list.toArray(new WizardFragment[list.size()]);
 	}
@@ -88,30 +122,49 @@
 			if( cf[i].getAttribute("id").equals(id)) //$NON-NLS-1$
 				try {
 					return (WizardFragment)cf[i].createExecutableExtension("class"); //$NON-NLS-1$
-				} catch( CoreException ce) {}
+				} catch( CoreException ce) 
+				{
+					ModuleCoreUIPlugin.log( ce );
+				}
 		}
 		return null;
 	}
 	
-	public ReferenceExtension[] getExposedReferenceExtensions() {
-		ArrayList<ReferenceExtension> list = new ArrayList<ReferenceExtension>();
-		list.addAll(Arrays.asList(getAllReferenceExtensions()));
-		for(Iterator<ReferenceExtension> i = list.iterator();i.hasNext();) {
-			if(i.next().isHidden())
-				i.remove();
+	public List<ReferenceExtension> getExposedReferenceExtensions() 
+	{
+		final List<ReferenceExtension> list = new ArrayList<ReferenceExtension>();
+		final Set<String> hidden = new HashSet<String>();
+		
+        for( ReferenceExtension ext : getAllReferenceExtensions() )
+        {
+            if( ext.isHidden() )
+            {
+				hidden.add( ext.getId() );
+			}
 		}
-		return list.toArray(new ReferenceExtension[list.size()]);
+		
+        for( ReferenceExtension ext : getAllReferenceExtensions() )
+        {
+            if( ! ext.isHidden() && ! hidden.contains( ext.getId() ) )
+            {
+                list.add( ext );
+            }
+		}
+		
+		return list;
 	}
 	
-	public ReferenceExtension[] getAllReferenceExtensions() {
-		IExtensionRegistry registry = Platform.getExtensionRegistry();
-		IConfigurationElement[] cf = registry.getConfigurationElementsFor(
-				ModuleCoreUIPlugin.PLUGIN_ID, "referenceWizardFragment"); //$NON-NLS-1$
-		ArrayList<ReferenceExtension> list = new ArrayList<ReferenceExtension>();
-		for( int i = 0; i < cf.length; i++ ) {
-			list.add(new ReferenceExtension(cf[i]));
+	public List<ReferenceExtension> getAllReferenceExtensions() 
+	{
+		final ArrayList<ReferenceExtension> list = new ArrayList<ReferenceExtension>();
+		final IExtensionRegistry registry = Platform.getExtensionRegistry();
+		
+		for( IConfigurationElement cf : registry.getConfigurationElementsFor( ModuleCoreUIPlugin.PLUGIN_ID, "referenceWizardFragment" ) )
+		{
+			list.add( new ReferenceExtension( cf ) );
 		}
-		return list.toArray(new ReferenceExtension[list.size()]);
+
+		return list;
 	}
 	
 	public ReferenceExtension findReferenceExtension(String id) {
@@ -131,17 +184,58 @@
 		private String id, name, imageLoc;
 		private Image image;
 		private boolean hidden;
-		public ReferenceExtension(IConfigurationElement element) {
+		private Expression enablementExpression;
+		
+		public ReferenceExtension(IConfigurationElement element) 
+		{
 			this.element = element;
 			this.id = element.getAttribute("id"); //$NON-NLS-1$
 			this.name = element.getAttribute("name"); //$NON-NLS-1$
 			this.imageLoc = element.getAttribute("icon"); //$NON-NLS-1$
 			this.hidden = Boolean.parseBoolean(element.getAttribute("hidden")); //$NON-NLS-1$
+			
+			for( IConfigurationElement child : element.getChildren( "enablement" ) ) //$NON-NLS-1$
+			{
+	            try
+	            {
+	                this.enablementExpression = ExpressionConverter.getDefault().perform( child );
+	            }
+	            catch( CoreException e )
+	            {
+	            	ModuleCoreUIPlugin.log( e );
+	            }
+			}
 		}
 		
 		public String getId() { return this.id;}
 		public String getName() { return this.name; }
 		public boolean isHidden() { return this.hidden; }
+		
+		public boolean isApplicable( final IProject project )
+		{
+			if( this.enablementExpression != null )
+			{
+		        final EvaluationContext evalContext = new EvaluationContext( null, project );
+		        evalContext.setAllowPluginActivation( true );
+		        
+	            try
+	            {
+	                final EvaluationResult evalResult = this.enablementExpression.evaluate( evalContext );
+	                
+	                if( evalResult == EvaluationResult.FALSE )
+	                {
+	                    return false;
+	                }
+	            }
+	            catch( CoreException e )
+	            {
+	            	ModuleCoreUIPlugin.log( e );
+	            }
+			}
+			
+			return true;
+		}
+		
 		public Image getImage() { 
 			if( image == null ) {
 				if( imageLoc != null && element.getContributor().getName() != null) {
@@ -193,7 +287,7 @@
 				String className = el.getAttribute("class");
 				retList.add((IVirtualComponentLabelProvider)el.createExecutableExtension("class"));
 			} catch( CoreException ce) {
-				// log
+				ModuleCoreUIPlugin.log( ce );
 			}
 		}
 		return retList.toArray(new IVirtualComponentLabelProvider[retList.size()]);
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
index 98b82da..e9b1306 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,9 +7,14 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
+
 package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
 
+
+import java.util.ArrayList;
+
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -17,6 +22,7 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.IMessageProvider;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
@@ -25,39 +31,58 @@
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.ISharedImages;
 import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
+import org.eclipse.wst.common.componentcore.ui.IModuleCoreUIContextIds;
 import org.eclipse.wst.common.componentcore.ui.Messages;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
-import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
 import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
+import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
 
 public class FolderMappingWizardFragment extends WizardFragment {
 	private IProject project;
 	private TreeViewer viewer;
 	private IContainer selected = null;
+	protected IWizardHandle handle;
 
+	boolean isComplete = false;
+
+	public boolean isComplete() {
+		return isComplete;
+	}
+	
 	public boolean hasComposite() {
 		return true;
 	}
 
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
+		this.handle = handle;
 		handle.setTitle(Messages.AddFolder);
 		handle.setDescription(Messages.AddFolderMappings);
+		handle.setImageDescriptor(IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/newfolder_wiz.png"));
 		project = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);		
 		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new FillLayout());
+		GridLayout layout = new GridLayout();
+		c.setLayout(layout);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IModuleCoreUIContextIds.DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_FOLDER_MAPPING_P1);
 		this.viewer = new TreeViewer(c, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
 		viewer.setContentProvider(getContentProvider());
 		viewer.setLabelProvider(getLabelProvider());
 		viewer.addFilter(getFilter());
 		viewer.setInput(project);
 		viewer.addSelectionChangedListener(getListener());
+		GridData data = new GridData(GridData.FILL_BOTH);
+		data.widthHint = 390;
+		data.heightHint = 185;
+		viewer.getTree().setLayoutData(data);
 		return c;
 	}
 	
@@ -66,21 +91,56 @@
 			public void selectionChanged(SelectionChangedEvent event) {
 				IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
 				Object first = sel.getFirstElement();
-				if( first instanceof IContainer) 
+				if( first instanceof IContainer) {
 					selected = (IContainer)first;
+					String errorMessage=validateFolder();
+					if (errorMessage !=  null)
+						handle.setMessage(errorMessage,IMessageProvider.ERROR);
+					else
+						handle.setMessage(Messages.AddFolderMappings, IMessageProvider.NONE);
+					handle.update();
+				}
 			}
 		};
 	}
 	
+	protected String validateFolder() {
+		IContainer c = getSelected();
+		IPath p = c.getProjectRelativePath().makeAbsolute();					
+		ArrayList<Object> currentRefs = (ArrayList<Object>)getTaskModel().getObject(IReferenceWizardConstants.ALL_DIRECTIVES);
+		if (!currentRefs.isEmpty())
+			for (int j = 0; j < currentRefs.size(); j++) 
+			{
+				Object ref = currentRefs.get(j);
+				if (ref instanceof ComponentResourceProxy)
+				{					
+					ComponentResourceProxy folder = (ComponentResourceProxy) ref;
+					if (p.equals(folder.source)){						
+						isComplete=false;				
+						return NLS.bind(Messages.ExistingFolderError, folder.source); 						
+					}
+				}							
+			}	
+		isComplete = true;
+		return null;
+	}
+	
 	public IContainer getSelected() {
 		return selected;
 	}
 	
 	protected ViewerFilter getFilter() {
-		return new ViewerFilter() {
+		return new ViewerFilter() {			
 			public boolean select(Viewer viewer, Object parentElement,
 					Object element) {
-				return element instanceof IContainer;
+				if(element instanceof IContainer) {
+					IContainer container = (IContainer) element;
+					IPath path = container.getProjectRelativePath();
+					if(!ResourceMappingFilterExtensionRegistry.shouldFilter(path)){
+						return true;
+					}
+				}
+				return false;
 			}
 		};
 	}
@@ -147,7 +207,7 @@
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
 		IContainer c = getSelected();
 		if( c != null ) {
-			IPath p = c.getProjectRelativePath();
+			IPath p = c.getProjectRelativePath().makeAbsolute();
 			ComponentResourceProxy proxy = new ComponentResourceProxy(p, new Path("/")); //$NON-NLS-1$
 			getTaskModel().putObject(IReferenceWizardConstants.FOLDER_MAPPING, proxy);
 		}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceRootWizardFragment.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceRootWizardFragment.java
index 573a906..676fce5 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceRootWizardFragment.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceRootWizardFragment.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,7 +7,9 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
+
 package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
 
 import java.util.ArrayList;
@@ -25,11 +27,17 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.wst.common.componentcore.ui.IModuleCoreUIContextIds;
 import org.eclipse.wst.common.componentcore.ui.Messages;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager.ReferenceExtension;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
@@ -39,11 +47,10 @@
 		new HashMap<String, WizardFragment>();
 	private IWizardHandle wizard;
 	private TreeViewer viewer;
-	private ReferenceExtension[] extensions = null;
-	public NewReferenceRootWizardFragment(ReferenceExtension[] extensions) {
-		this.extensions = extensions != null ? extensions :
-				DependencyPageExtensionManager.getManager().getExposedReferenceExtensions();
-		if( this.extensions.length == 0 )
+	private List<ReferenceExtension> extensions = null;
+	public NewReferenceRootWizardFragment(List<ReferenceExtension> extensions) {
+		this.extensions = extensions;
+		if( this.extensions.size() == 0 )
 			setComplete(false);
 	}
 	
@@ -55,11 +62,15 @@
 		this.wizard = wizard;
 		wizard.setTitle(Messages.NewReferenceTitle);
 		wizard.setDescription(Messages.NewReferenceDescription);
+		wizard.setImageDescriptor( AbstractUIPlugin.imageDescriptorFromPlugin( ModuleCoreUIPlugin.PLUGIN_ID, "icons/assembly-banner.png" ) );
 		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new FillLayout());
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IModuleCoreUIContextIds.DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_REFERENCE_P1);
+		c.setLayout(new GridLayout());
 		viewer = new TreeViewer(c, SWT.SINGLE | SWT.BORDER);
+		viewer.getTree().setLayoutData(new GridData( GridData.FILL_BOTH ));
 		viewer.setLabelProvider(getLabelProvider());
 		viewer.setContentProvider(getContentProvider());
+		viewer.setComparator( new ViewerComparator() );
 		viewer.setInput(ResourcesPlugin.getWorkspace());
 		viewer.addSelectionChangedListener(new ISelectionChangedListener() {
 			public void selectionChanged(SelectionChangedEvent event) {
@@ -135,8 +146,9 @@
 			   public void dispose() {
 			    	super.dispose();
 			    	if( extensions != null ) {
-			    		for( int i = 0; i < extensions.length; i++) {
-			    			extensions[i].disposeImage();
+			    		for( ReferenceExtension ex : extensions )
+			    		{
+			    			ex.disposeImage();
 			    		}
 			    	}
 			    }
@@ -149,7 +161,7 @@
 		if( contentProvider == null ) {
 			contentProvider = new ITreeContentProvider() {
 				public Object[] getElements(Object inputElement) {
-					return extensions;
+					return extensions.toArray();
 				}
 				public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
 				}
@@ -168,4 +180,5 @@
 		}
 		return contentProvider;
 	}
+	
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceWizard.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceWizard.java
index b4f2440..1a96473 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceWizard.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/NewReferenceWizard.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,7 +7,9 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
+
 package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
 
 import java.util.List;
@@ -23,18 +25,14 @@
 
 public class NewReferenceWizard extends TaskWizard implements IReferenceWizardConstants {
 	private static final Object REFERENCE_FAMILY = new Object();
-	public NewReferenceWizard() {
-		this(null);
-	}
-	public NewReferenceWizard(ReferenceExtension[] extensions) {
+	public NewReferenceWizard(List<ReferenceExtension> extensions) {
 		super(Messages.NewReferenceWizard, new RootWizardFragment(extensions));
 		setFinishJobFamily(REFERENCE_FAMILY);
 		getRootFragment().setTaskModel(getTaskModel());
 	}
 	protected static class RootWizardFragment extends WizardFragment {
-		private ReferenceExtension[] extensions = null;
-		public RootWizardFragment() {}
-		public RootWizardFragment(ReferenceExtension[] extensions) {
+		private List<ReferenceExtension> extensions = null;
+		public RootWizardFragment(List<ReferenceExtension> extensions) {
 			this.extensions = extensions;
 		}
 
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java
index a179183..ff38a4d 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,13 +7,16 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
  ******************************************************************************/
+
 package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
@@ -28,22 +31,30 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.ModuleCoreNature;
 import org.eclipse.wst.common.componentcore.internal.IModuleHandler;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.IModuleCoreUIContextIds;
 import org.eclipse.wst.common.componentcore.ui.Messages;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.TaskWizardPage;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
 import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
+import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants.ProjectConverterOperationProvider;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 
 public class ProjectReferenceWizardFragment extends WizardFragment {
@@ -63,9 +74,11 @@
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
 		handle.setTitle(Messages.ProjectReferenceTitle);
 		handle.setDescription(Messages.ProjectReferenceDescription);
+		handle.setImageDescriptor(IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/newprj_wiz.png"));
 		
 		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new FillLayout());
+		c.setLayout(new GridLayout());
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(c, IModuleCoreUIContextIds.DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_ADD_NEW_PROJECT_REFERENCE_P1);
 		viewer = new TreeViewer(c, SWT.MULTI | SWT.BORDER);
 		viewer.setContentProvider(getContentProvider());
 		viewer.setLabelProvider(getLabelProvider());
@@ -80,6 +93,10 @@
 			}
 		});
 		viewer.setInput(ResourcesPlugin.getWorkspace());
+		GridData data = new GridData(GridData.FILL_BOTH);
+		data.widthHint = 390;
+		data.heightHint = 185;
+		viewer.getTree().setLayoutData(data);
 		return c;
 	}
 	
@@ -99,28 +116,46 @@
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
 		VirtualReference[] refs = new VirtualReference[selected.length];
 		String runtimeLoc = (String) getTaskModel().getObject(IReferenceWizardConstants.DEFAULT_LIBRARY_LOCATION);
+		ProjectConverterOperationProvider converter = (ProjectConverterOperationProvider)getTaskModel().getObject(IReferenceWizardConstants.PROJECT_CONVERTER_OPERATION_PROVIDER);
 		runtimeLoc = runtimeLoc != null ? runtimeLoc : "/"; //$NON-NLS-1$
 		for (int i = 0; i < selected.length; i++) {
 			IProject proj = selected[i];
 			
 			if( !ModuleCoreNature.isFlexibleProject(proj)) {
-				try {
-					ModuleCoreNature.addModuleCoreNatureIfNecessary(proj, monitor);
-					ProjectFacetsManager.create(proj, true, monitor);
-				} catch( CoreException ee) {
-					// TODO something
-				}
+				convertProject(selected[i], converter, monitor);
 			}
 			String path = null;
 			refs[i] = new VirtualReference(
 					(IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT), 
 					ComponentCore.createComponent(proj, false));
-			refs[i].setArchiveName(getArchiveName(proj, refs[i].getReferencedComponent()));
+			refs[i].setArchiveName(new Path(getArchiveName(proj, refs[i].getReferencedComponent())).lastSegment());
 			refs[i].setRuntimePath(new Path(runtimeLoc).makeAbsolute());
 		}
 		getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, refs);
 	}
 
+	protected void convertProject(IProject proj, ProjectConverterOperationProvider converter, IProgressMonitor monitor) {
+		if( converter != null ) {
+			IDataModelOperation operation = converter.getConversionOperation(proj);
+			if( operation != null ) {
+				try {
+					operation.execute(monitor, null);
+					return;
+				} catch( ExecutionException ee ) {
+					ModuleCoreUIPlugin.log(NLS.bind(Messages.ProjectConversionError, proj.getName()), ee);
+				}
+			}
+		} 
+		try {
+			if( !ModuleCoreNature.isFlexibleProject(proj)) {
+				ModuleCoreNature.addModuleCoreNatureIfNecessary(proj, monitor);
+				ProjectFacetsManager.create(proj, true, monitor);
+			}
+		} catch( CoreException ce) {
+			ModuleCoreUIPlugin.log(NLS.bind(Messages.ProjectConversionError, proj.getName()), ce);
+		}
+	}
+	
 	protected String getArchiveName(IProject proj, IVirtualComponent comp) {
 		return getModuleHandler().getArchiveName(proj,comp);
 	}
@@ -152,11 +187,29 @@
 				public Object[] getElements(Object inputElement) {
 					IProject root = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);
 					IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
-					ArrayList<IProject> list = new ArrayList<IProject>(Arrays.asList(projects));
+					ArrayList<IVirtualReference> currentRefs = (ArrayList<IVirtualReference>)getTaskModel().getObject(IReferenceWizardConstants.CURRENT_REFS);
+					ArrayList<IProject> availableList = getAvailableProjects(projects,currentRefs);
 					IVirtualComponent comp = (IVirtualComponent)getTaskModel().getObject(IReferenceWizardConstants.ROOT_COMPONENT);
-					List filtered = getModuleHandler().getFilteredProjectListForAdd(comp, list);
+					List filtered = getModuleHandler().getFilteredProjectListForAdd(comp, availableList);
 					return filtered.toArray(new IProject[filtered.size()]);
 				}
+				private ArrayList<IProject> getAvailableProjects(IProject[] projects, ArrayList<IVirtualReference> currentRefs) {
+					if (currentRefs.isEmpty())
+						return new ArrayList<IProject>(Arrays.asList(projects));
+					ArrayList availProjects = new ArrayList();
+					for (int i = 0; i < projects.length; i++) {
+						IProject proj = projects[i];
+						boolean matches = false;
+						for (int j = 0; j < currentRefs.size() && !matches; j++) {
+							IVirtualReference ref = currentRefs.get(j);
+							if ((ref.getReferencedComponent().getProject().equals(proj)) || availProjects.contains(proj))
+								matches = true;
+						}
+						if( !matches )
+							availProjects.add(proj);
+					}
+					return availProjects;
+				}
 				public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
 				}
 				public void dispose() {
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java
new file mode 100644
index 0000000..9f4c316
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ResourceMappingFilterExtensionRegistry.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.regex.PatternSyntaxException;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.core.util.RegistryReader;
+
+public class ResourceMappingFilterExtensionRegistry extends RegistryReader {
+	
+	static final String EXTENSION_NAME = "resourceMappingFilter"; //$NON-NLS-1$
+	static final String RESOURCE_MAPPING = "resourceMapping"; //$NON-NLS-1$
+	static final String SOURCE_PATH = "source-path"; //$NON-NLS-1$	
+	private static ResourceMappingFilterExtensionRegistry instance = null;
+	private static HashMap<String, Pattern> resourceMappingFilters = null;
+	
+	
+	public ResourceMappingFilterExtensionRegistry() {
+		super(ModuleCoreUIPlugin.PLUGIN_ID, EXTENSION_NAME);
+	}
+	
+	public static ResourceMappingFilterExtensionRegistry getInstance() {
+		if( instance == null ) {
+			instance = new ResourceMappingFilterExtensionRegistry();
+			instance.readRegistry();
+		}
+		return instance;
+	}
+
+	@Override
+	public boolean readElement(IConfigurationElement element) {
+		if (!element.getName().equals(RESOURCE_MAPPING))
+			return false;
+		String sourcePath = element.getAttribute(SOURCE_PATH);
+		if(sourcePath != null)
+			addResourceMappingFilter(sourcePath);
+		return true;
+	}
+
+
+	private static void addResourceMappingFilter(String filterRegExp) {
+		if(resourceMappingFilters == null)
+			resourceMappingFilters = new HashMap<String, Pattern>();
+		if(filterRegExp != null) {
+			try {
+				Pattern pattern = Pattern.compile(filterRegExp);
+				resourceMappingFilters.put(filterRegExp, pattern);
+			} catch(PatternSyntaxException e) {
+				ModuleCoreUIPlugin.logError(e);
+			}
+		}
+	}
+	
+	
+	
+	public static boolean shouldFilter(IPath path) {
+		ResourceMappingFilterExtensionRegistry.getInstance();
+		if(path != null) {
+			String relativePath = path.makeRelative().toString();
+			for(Iterator iterator = resourceMappingFilters.values().iterator(); iterator.hasNext();) {
+				Pattern pattern = (Pattern) iterator.next();
+				Matcher matcher = pattern.matcher(relativePath);
+				if (matcher.matches()) {
+					return true;
+				} else {
+					Pattern childrenPattern = Pattern.compile(pattern.pattern()+"/.*"); //$NON-NLS-1$
+					matcher = childrenPattern.matcher(relativePath);
+					if (matcher.matches()) {
+						return true;
+					} 
+				}
+			}
+		}
+		return false;
+	}
+	
+	public static boolean shouldFilter(String path) {
+		if(path != null) {
+			return shouldFilter(new Path(path));
+		}
+		return false;
+	}
+	
+	public static String[] getResourceMappingFiltersRegularExpressions() {
+		return resourceMappingFilters.keySet().toArray(new String[resourceMappingFilters.keySet().size()]);
+	}
+	
+	public static Pattern[] getResourceMappingFiltersRelativePatterns() {
+		return resourceMappingFilters.values().toArray(new Pattern[resourceMappingFilters.values().size()]);
+	}
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/AbstractDeploymentAssemblyVerifier.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/AbstractDeploymentAssemblyVerifier.java
new file mode 100644
index 0000000..7cc4832
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/AbstractDeploymentAssemblyVerifier.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import org.eclipse.core.runtime.IStatus;
+
+/**
+ * All extenders of AbstractDeploymentAssemblyVerifier must implement the verify methods to perform any verification on the deployment assembly wizard page
+ *
+ */
+public abstract class AbstractDeploymentAssemblyVerifier implements IDeploymentAssemblyVerifier {
+
+	public abstract IStatus verify(DeploymentAssemblyVerifierData data);
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DefaultDeploymentAssemblyVerifier.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DefaultDeploymentAssemblyVerifier.java
new file mode 100644
index 0000000..e433b25
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DefaultDeploymentAssemblyVerifier.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.componentcore.ui.Messages;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.ResourceMappingFilterExtensionRegistry;
+import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
+
+/**
+ * This class does basic validation of the deployment assembly. It validates that 
+ * references to other components like projects and archives exists. It also validates that
+ * folder mappings exists in the project.  
+ * 
+ */
+
+public class DefaultDeploymentAssemblyVerifier extends AbstractDeploymentAssemblyVerifier {
+
+	@Override
+	public IStatus verify(DeploymentAssemblyVerifierData data) {
+		IStatus status = validateResourceMappings(data, null);
+		return validateMissingReferences(data, status);
+	}
+	
+	
+	protected IStatus validateResourceMappings(DeploymentAssemblyVerifierData data, IStatus existingStatus){
+		IStatus status = existingStatus!=null?existingStatus:Status.OK_STATUS;
+		ArrayList<ComponentResourceProxy> mappings = data.getResourceMappings();
+		if (mappings == null)
+			return status;		
+		int severity = Status.WARNING;
+		String msg = null;
+		IProject project = data.getComponent().getProject();
+		for (ComponentResourceProxy mapping:mappings){
+			if (ResourceMappingFilterExtensionRegistry.shouldFilter(mapping.source))
+				continue;  // Do not validate filtered entries
+			if (!project.exists(mapping.source)){
+				msg = NLS.bind(Messages.ErrorEntryNotFound, mapping.source); 
+				status = appendStatusMessage(status, msg, severity);
+			}
+		}
+		return status;
+		
+	}
+	
+	protected IStatus validateMissingReferences(DeploymentAssemblyVerifierData data, IStatus existingStatus) {
+		IStatus status = existingStatus!=null?existingStatus:Status.OK_STATUS;
+		ArrayList<IVirtualReference> references = data.getCurrentReferences();
+		if (references == null){
+			return status;
+		}
+		int severity = Status.WARNING;
+		String msg = null;
+		for (IVirtualReference reference:references){
+			if (!reference.getReferencedComponent().exists()){
+				String name;
+				if( reference.getReferencedComponent().isBinary() ) {
+					IVirtualComponent vc = reference.getReferencedComponent();
+					IPath p = (IPath)vc.getAdapter(IPath.class);
+					name= p == null ? vc.getName() : p.toString();
+				}
+				else {
+					name = reference.getReferencedComponent().getProject().getName();
+				}
+				msg = NLS.bind(Messages.ErrorEntryNotFound, name); 
+				status = appendStatusMessage(status, msg, severity);
+			}
+		}
+		return status;		
+	}
+	
+	private IStatus appendStatusMessage(IStatus existingStatus, String message, int severity) {
+        MultiStatus multiStatus;
+        IStatus newStatus = new Status(severity, ModuleCoreUIPlugin.PLUGIN_ID, message);
+		int newSeverity = severity;
+		if(existingStatus.getSeverity() > severity)
+			newSeverity = existingStatus.getSeverity();
+        if(existingStatus instanceof MultiStatus){
+            multiStatus = (MultiStatus)existingStatus;
+            multiStatus.merge(newStatus);
+        } else {
+        	if(!existingStatus.isMultiStatus() && existingStatus.isOK()) {
+        		return newStatus;
+        	}
+            IStatus [] children = new IStatus [] {existingStatus, newStatus};
+            multiStatus = new MultiStatus(ModuleCoreUIPlugin.PLUGIN_ID, newSeverity, children, null, null);
+        }
+        return multiStatus;
+    }
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DeploymentAssemblyVerifierData.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DeploymentAssemblyVerifierData.java
new file mode 100644
index 0000000..c183835
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DeploymentAssemblyVerifierData.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import java.util.ArrayList;
+
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
+import org.eclipse.wst.server.core.IRuntime;
+
+public class DeploymentAssemblyVerifierData {
+	
+	public DeploymentAssemblyVerifierData(IVirtualComponent component, IRuntime runtime, ArrayList<IVirtualReference> currentReferences,
+			ArrayList<ComponentResourceProxy> resourceMappings, boolean resourceMappingsChanged) {
+		super();
+		this.component = component;
+		this.runtime = runtime;
+		this.currentReferences = currentReferences;
+		this.resourceMappings = resourceMappings;
+		this.resourceMappingsChanged = resourceMappingsChanged;
+	}
+	private IVirtualComponent component;
+	private IRuntime runtime;
+	private ArrayList<IVirtualReference> currentReferences;
+	private ArrayList<ComponentResourceProxy> resourceMappings;
+	private boolean resourceMappingsChanged;
+	public IVirtualComponent getComponent() {
+		return component;
+	}
+	public void setComponent(IVirtualComponent component) {
+		this.component = component;
+	}
+	public IRuntime getRuntime() {
+		return runtime;
+	}
+	public void setRuntime(IRuntime runtime) {
+		this.runtime = runtime;
+	}
+	public ArrayList<IVirtualReference> getCurrentReferences() {
+		return currentReferences;
+	}
+	public void setCurrentReferences(ArrayList<IVirtualReference> currentReferences) {
+		this.currentReferences = currentReferences;
+	}
+	public ArrayList<ComponentResourceProxy> getResourceMappings() {
+		return resourceMappings;
+	}
+	public void setResourceMappings(ArrayList<ComponentResourceProxy> resourceMappings) {
+		this.resourceMappings = resourceMappings;
+	}
+	public boolean isResourceMappingsChanged() {
+		return resourceMappingsChanged;
+	}
+	public void setResourceMappingsChanged(boolean resourceMappingsChanged) {
+		this.resourceMappingsChanged = resourceMappingsChanged;
+	}
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DeploymentAssemblyVerifierHelper.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DeploymentAssemblyVerifierHelper.java
new file mode 100644
index 0000000..aa1b6cd
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/DeploymentAssemblyVerifierHelper.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.Messages;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.server.core.IRuntime;
+
+public class DeploymentAssemblyVerifierHelper {
+	
+	
+	/**
+	 * This method will use the facet framework to find all registered verifiers based on installed facets and runtimes.
+	 * All the verifiers will have an opportunity to verify and return status on the proposed component mappings
+	 * @param component
+	 * @param runtime
+	 * @param resourceMappingsChanged 
+	 * @param resourceMappings 
+	 * @param currentReferences 
+	 * @return IStatus
+	 */
+	public static IStatus verify(IVirtualComponent component,IRuntime runtime, ArrayList<IVirtualReference> currentReferences, ArrayList<ComponentResourceProxy> resourceMappings, boolean resourceMappingsChanged) {
+		IProject project = component.getProject();
+		
+		List verifiers = collectAllVerifiers(project,runtime);
+		if (verifiers.isEmpty()) return Status.OK_STATUS;
+		MultiStatus masterStatus = new MultiStatus(ModuleCoreUIPlugin.PLUGIN_ID, IStatus.OK, Messages.DeploymentAssemblyVerifierHelper_0,null); 
+		
+		for (int i = 0; i < verifiers.size(); i++) {
+			if (!(verifiers.get(i) instanceof IConfigurationElement))
+				continue;
+			IDeploymentAssemblyVerifier verifier = null;
+			try {
+				verifier = (IDeploymentAssemblyVerifier) ((IConfigurationElement) verifiers.get(i)).createExecutableExtension(VerifierRegistryReader.VERIFIER_CLASS);
+				DeploymentAssemblyVerifierData data = new DeploymentAssemblyVerifierData(component, runtime,currentReferences,resourceMappings,resourceMappingsChanged);
+				IStatus verifyStatus = verifier.verify(data);
+				if(verifyStatus != null && verifyStatus.isMultiStatus()) {
+					masterStatus.addAll(verifyStatus);
+				} else {
+					masterStatus.add(verifyStatus);
+				}
+			} catch (Exception e) {
+				ModuleCoreUIPlugin.log(e);
+				continue;
+			}
+			
+		}
+		return masterStatus;
+	}
+
+	/**
+	 * @param project
+	 * @param runtime
+	 * @return all verifiers by iterating through projects installed facets, and querying the registry
+	 */
+	public static List collectAllVerifiers(IProject project, IRuntime runtime) {
+		IFacetedProject fProj = null;
+		try {
+			fProj = ProjectFacetsManager.create(project);
+		} catch (CoreException e) {
+			ModuleCoreUIPlugin.log(e);
+			return Collections.EMPTY_LIST;
+		}
+		Set<IProjectFacetVersion> facets = fProj.getProjectFacets();
+		List verifiers = new ArrayList();
+		for (Iterator iterator = facets.iterator(); iterator.hasNext();) {
+			IProjectFacetVersion facet = (IProjectFacetVersion)iterator.next();
+			verifiers.addAll(VerifierRegistry.instance().getVerifierExtensions(facet.getProjectFacet().getId(), runtime));	
+		}
+		return verifiers;
+	}
+	
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/IDeploymentAssemblyVerifier.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/IDeploymentAssemblyVerifier.java
new file mode 100644
index 0000000..a3576b9
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/IDeploymentAssemblyVerifier.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import org.eclipse.core.runtime.IStatus;
+
+/**
+ * This interface is used to allow verifications from extending plugins registered by runtime targets and component type
+ * This interface in NOT meant to be implemented, but instead extend the abstract class AbstractDeploymentAssemblyVerifier
+ *
+ */
+public interface IDeploymentAssemblyVerifier {
+	/**
+	 * Validate the current state of the component resource and reference mappings
+	 * 
+	 * @param data - All of the relevant dialog properties/values is sent via a DeploymentAssemblyVerifierData object
+	 * @return IStatus indicating OK, Warning , or Error.  Warning text will display in the wizard dialog, but not prevent completion. 
+	 * Error status will prevent completion
+	 */
+	IStatus verify(DeploymentAssemblyVerifierData data);
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java
new file mode 100644
index 0000000..ba74ba0
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistry.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.wst.server.core.IRuntime;
+
+public class VerifierRegistry {
+	/**
+	 *  
+	 */
+	private static VerifierRegistry INSTANCE;
+	private HashMap assemblyVerifierExtensions = new HashMap();
+
+	public VerifierRegistry() {
+		super();
+	}
+
+	/**
+	 * @param verifier
+	 * @param serverTargets
+	 * @param components
+	 */
+	protected void register(IConfigurationElement verifier, List serverTargets, List components) {
+		HashMap targetVerifiers;
+		for (Iterator iter = components.iterator(); iter.hasNext();) {
+			String compID = (String) iter.next();
+			for (Iterator iterator = serverTargets.iterator(); iterator.hasNext();) {
+				String runtimeID = (String) iterator.next();
+				targetVerifiers = getVerifierExtensions(compID);
+				getTargetVerifiers(targetVerifiers, runtimeID).add(verifier);
+			}
+		}
+	}
+
+	private List getVerifiers(String compID, String serverTarget) {
+		HashMap targetVerifiers = getVerifierExtensions(compID);
+		return getTargetVerifiers(targetVerifiers, serverTarget);
+	}
+
+	protected static VerifierRegistry instance() {
+		if (INSTANCE == null) {
+			INSTANCE = new VerifierRegistry();
+			readRegistry();
+		}
+		return INSTANCE;
+	}
+
+	/**
+	 *  
+	 */
+	private static void readRegistry() {
+		VerifierRegistryReader reader = new VerifierRegistryReader();
+		reader.readRegistry();
+	}
+
+	/**
+	 * @param targetVerifiers
+	 * @param serverTarget
+	 */
+	private List getTargetVerifiers(HashMap targetVerifiers, String serverTarget) {
+		if (targetVerifiers.get(serverTarget) == null)
+			targetVerifiers.put(serverTarget, new ArrayList());
+		return (List) targetVerifiers.get(serverTarget);
+	}
+
+	/**
+	 * @param compID
+	 * @return
+	 */
+	private HashMap getVerifierExtensions(String compID) {
+		if (getVerifierExtensions().get(compID) == null)
+			getVerifierExtensions().put(compID, new HashMap());
+		return (HashMap) getVerifierExtensions().get(compID);
+	}
+
+	/**
+	 * @return Returns the verifierExtensions.
+	 */
+	private HashMap getVerifierExtensions() {
+		return assemblyVerifierExtensions;
+	}
+
+	/**
+	 * @param facetTypeID
+	 * @param runtime
+	 * @return List of IConfigurationElements representing instances of IDeploymentAssemblyVerifier
+	 */
+	public List getVerifierExtensions(String facetTypeID, IRuntime runtime) {
+		// Identifier used by verifiers that will run for any runtime
+		String allRuntimes = "org.eclipse.wst.common.modulecore.ui.deploymentAssemblyVerifier.anyruntime"; //$NON-NLS-1$
+		String runtimeID = null;
+		if (runtime == null)
+			runtimeID = "None"; //$NON-NLS-1$
+		else
+			runtimeID = runtime.getRuntimeType().getId();
+		// Get the verifiers specific for the target runtime
+		List verifiers = getVerifiers(facetTypeID, runtimeID);		
+		if (verifiers == null)
+			verifiers = Collections.EMPTY_LIST;
+		// Get the verifiers for any runtime
+		List genericVerifiers = getVerifiers(facetTypeID, allRuntimes);
+		if (genericVerifiers == null)
+			genericVerifiers = Collections.EMPTY_LIST;
+		// Merge both verifiers into one list and return
+		List result = new ArrayList(verifiers);
+		result.addAll(genericVerifiers);
+		return result;
+	}
+
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistryReader.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistryReader.java
new file mode 100644
index 0000000..0a454d3
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/verifier/VerifierRegistryReader.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
+import org.eclipse.wst.common.core.util.RegistryReader;
+
+
+public class VerifierRegistryReader extends RegistryReader {
+	/**
+	 * @param registry
+	 * @param plugin
+	 * @param extensionPoint
+	 */
+	static final String ASSEMBLY_VERIFIER_EXTENSION_POINT = "deploymentAssemblyVerifier"; //$NON-NLS-1$
+	static final String TARGET_SERVER_RUNTIME_ID = "runtime_server_id"; //$NON-NLS-1$
+	static final String RUNTIME = "runtime"; //$NON-NLS-1$
+	static final String VERIFIER = "verifier"; //$NON-NLS-1$
+	public static final String VERIFIER_CLASS = "class"; //$NON-NLS-1$
+	static final String COMPONENT_TYPE_ID = "component_type"; //$NON-NLS-1$
+	static final String COMPONENT = "component"; //$NON-NLS-1$
+
+	public VerifierRegistryReader() {
+		super(ModuleCoreUIPlugin.PLUGIN_ID, ASSEMBLY_VERIFIER_EXTENSION_POINT);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.wst.common.frameworks.internal.RegistryReader#readElement(org.eclipse.core.runtime.IConfigurationElement)
+	 */
+	@Override
+	public boolean readElement(IConfigurationElement element) {
+		if (!element.getName().equals(VERIFIER))
+			return false;
+		List runtimeList = new ArrayList();
+		List comps = new ArrayList();
+		IConfigurationElement[] runtimes = element.getChildren(RUNTIME);
+		for (int i = 0; i < runtimes.length; i++) {
+			IConfigurationElement runtime = runtimes[i];
+			String serverTarget = runtime.getAttribute(TARGET_SERVER_RUNTIME_ID);
+			runtimeList.add(serverTarget);
+		}
+		IConfigurationElement[] components = element.getChildren(COMPONENT);
+		for (int i = 0; i < components.length; i++) {
+			IConfigurationElement component = components[i];
+			String compType = component.getAttribute(COMPONENT_TYPE_ID);
+			comps.add(compType);
+		}
+
+		String deployer = element.getAttribute(VERIFIER_CLASS);
+		if (deployer != null) {
+			VerifierRegistry.instance().register(element, runtimeList, comps);
+			return true;
+		}
+		return false;
+	}
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
index bc5397e..5083668 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/messages.properties
@@ -1,14 +1,14 @@
-ModuleAssemblyRootPageDescription=Create and change packaging structure for this project
-ModuleAssembly=Deployment a&ssembly:
+ModuleAssemblyRootPageDescription=Define packaging structure for this project.
 ErrorCheckingFacets=Error Checking Project Facets
 ErrorNotVirtualComponent=The given project is not a virtual component project
+DeploymentAssemblyVerifierHelper_0=Verifying Component
 DeployPathColumn=Deploy Path
 SourceColumn=Source
 InternalLibJarWarning=This library has been added to the project by using the project tree or the file system. If you want to move / remove it, use the same approach.
-AddFolder=Add Folder
+AddFolder=Folder
 AddFolderElipses=Add Folder...
-AddFolderMappings=Add a folder mapping
-AddEllipsis=&Add...
+AddFolderMappings=Select a project folder to include in the deployment assembly.
+AddEllipsis=A&dd...
 EditEllipsis=&Edit...
 RemoveSelected=&Remove
 ExternalJarTitle=Add an External Jar Reference
@@ -16,11 +16,15 @@
 JarTitle=Add a Jar Reference
 JarDescription="Here you can reference a workspace Jar\nThis is not a suggested use-case, but is here for backwards compatability.
 Browse=Browse...
-NewReferenceTitle=Select a reference type
-NewReferenceDescription=Here you can select one of many types of references to add
-NewReferenceWizard=New Reference Wizard
-ProjectReferenceTitle=Add a Project Reference
-ProjectReferenceDescription=Here you can make a project into a reference.\nIf the project is not already a flexible project, it will be converted into one.
+NewReferenceTitle=Select Directive Type
+NewReferenceDescription=Add a new assembly directive.
+NewReferenceWizard=New Assembly Directive
+ProjectReferenceTitle=Projects
+ProjectReferenceDescription=Select projects to include in the deployment assembly.
 VariableReferenceTitle=Add a Variable Reference
 VariableReferenceDescription="Here you can reference a variable which maps to a single jar.\nThis is not a suggested use-case, but is here for backwards compatability.
-WizardError=Wizard Error
\ No newline at end of file
+WizardError=Wizard Error
+ProjectConversionError=Error converting project {0} into a flexible project
+ExistingFolderError= Folder "{0}" already exists.
+Revert=Re&vert
+ErrorEntryNotFound=Cannot find entry: "{0}".
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AbstractIModuleDependenciesControl.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AbstractIModuleDependenciesControl.java
new file mode 100644
index 0000000..05845d4
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AbstractIModuleDependenciesControl.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial implementation
+ *******************************************************************************/
+package org.eclipse.wst.common.componentcore.ui.propertypage;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+public abstract class AbstractIModuleDependenciesControl implements IModuleDependenciesControl {
+
+	/**
+	 * Returns any error/warning messages that are associated with the current content of the page  
+	 * @param parent Parent Composite.
+	 * @return IStatus with all the error/warning messages associated with the page
+	 */
+	public IStatus validate() {
+		return Status.OK_STATUS;
+	}
+
+}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
index 511a865..fa16f30 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010, 2012 Red Hat and others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,9 +7,15 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
+ *    Roberto Sanchez (IBM) - Handle tags in mappings
+ *    
+ *
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui.propertypage;
 
+import java.io.File;
+import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -26,24 +32,38 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
 import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.FocusCellOwnerDrawHighlighter;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
 import org.eclipse.jface.viewers.ICellModifier;
 import org.eclipse.jface.viewers.ILabelProviderListener;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
 import org.eclipse.jface.viewers.LabelProviderChangedEvent;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TableLayout;
-import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.TreeViewerEditor;
+import org.eclipse.jface.viewers.TreeViewerFocusCellManager;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.jface.window.Window;
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -53,10 +73,11 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.datamodel.properties.IAddReferenceDataModelProperties;
 import org.eclipse.wst.common.componentcore.internal.ComponentResource;
@@ -68,38 +89,51 @@
 import org.eclipse.wst.common.componentcore.internal.impl.TaskModel;
 import org.eclipse.wst.common.componentcore.internal.operation.AddReferenceDataModelProvider;
 import org.eclipse.wst.common.componentcore.internal.operation.RemoveReferenceDataModelProvider;
+import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
+import org.eclipse.wst.common.componentcore.internal.util.VirtualReferenceUtilities;
+import org.eclipse.wst.common.componentcore.resources.ITaggedVirtualResource;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.eclipse.wst.common.componentcore.ui.IModuleCoreUIContextIds;
 import org.eclipse.wst.common.componentcore.ui.Messages;
 import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.ComponentDependencyContentProvider;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager.ReferenceExtension;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.NewReferenceWizard;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.ResourceMappingFilterExtensionRegistry;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier.DeploymentAssemblyVerifierHelper;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.TaskWizard;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.internal.facets.FacetUtil;
  
-public class AddModuleDependenciesPropertiesPage implements Listener,
-		IModuleDependenciesControl, ILabelProviderListener {
+public class AddModuleDependenciesPropertiesPage extends AbstractIModuleDependenciesControl implements Listener,
+		ILabelProviderListener {
 
-	protected static final String DEPLOY_PATH_PROPERTY = new Integer(0).toString();
-	protected static final String SOURCE_PROPERTY = new Integer(1).toString();
 	
+	public static final int SOURCE_COLUMN = 0;
+	public static final int DEPLOY_COLUMN = 1;
+	protected static final String SOURCE_PROPERTY = new Integer(SOURCE_COLUMN).toString();
+	protected static final String DEPLOY_PATH_PROPERTY = new Integer(DEPLOY_COLUMN).toString();
 	
 	protected final String PATH_SEPARATOR = String.valueOf(IPath.SEPARATOR);
 	private boolean hasInitialized = false;
 	protected final IProject project;
+	protected final IRuntime runtime;
 	protected final ModuleAssemblyRootPage propPage;
 	protected IVirtualComponent rootComponent = null;
 	protected Text componentNameText;
-	protected Label availableModules;
-	protected TableViewer availableComponentsViewer;
+	protected TreeViewer availableComponentsViewer;
+	
 	protected Button addMappingButton, addReferenceButton, editReferenceButton, removeButton;
 	protected Composite buttonColumn;
 	protected static final IStatus OK_STATUS = IDataModelProvider.OK_STATUS;
@@ -112,6 +146,7 @@
 	// A single list of wb-resource mappings. If there's any change, 
 	// all old will be removed and new ones added
 	protected ArrayList<ComponentResourceProxy> resourceMappings = new ArrayList<ComponentResourceProxy>();
+	protected ArrayList<ComponentResourceProxy> hiddenMappings = new ArrayList<ComponentResourceProxy>();
 	
 	// keeps track if a change has occurred in wb-resource mappings
 	protected boolean resourceMappingsChanged = false;
@@ -120,18 +155,39 @@
 	
 	public static String getSafeRuntimePath(IVirtualReference ref) {
 		String archiveName = ref.getDependencyType() == DependencyType.CONSUMES ? null : ref.getArchiveName();
-		String val = (archiveName != null) ? ref.getRuntimePath().append(archiveName).toString() : ref.getRuntimePath().toString();
+		String val = null;
+		if(archiveName != null) {
+			IPath runtimePath = new Path(archiveName);
+			if(runtimePath.segmentCount() > 1) {
+				val = archiveName;
+			} else {
+				val = ref.getRuntimePath().append(archiveName).toString();
+			}
+		} else {
+			val = ref.getRuntimePath().toString();
+		}
 		if( val == null ) val = "/";
 		return val;
 	}
 
 	public static void setRuntimePathSafe(IVirtualReference ref, String newPath) {
 		if( ref.getDependencyType() == IVirtualReference.DEPENDENCY_TYPE_CONSUMES)
-			ref.setRuntimePath(new Path(newPath == null ? "/" : newPath));
+			ref.setRuntimePath(new Path(newPath == null ? "/" : newPath.trim()).makeRelative().makeAbsolute());
 		else {
-			IPath path2 = new Path(newPath == null ? "/" : newPath);
+			IPath path2 = new Path(newPath == null ? "/" : newPath.trim()).makeRelative().makeAbsolute();
 			ref.setRuntimePath(path2.segmentCount() > 1 ? path2.removeLastSegments(1) : new Path("/"));
-			ref.setArchiveName(path2.segmentCount() > 0 ? path2.lastSegment() : "");
+			if(path2.segmentCount() > 0) {
+				ref.setArchiveName(path2.lastSegment());
+			} else if(ref.getReferencedComponent() instanceof VirtualArchiveComponent && ((VirtualArchiveComponent)ref.getReferencedComponent()).getArchiveType().equals(VirtualArchiveComponent.VARARCHIVETYPE) ) {
+				File diskFile = (java.io.File)ref.getReferencedComponent().getAdapter(java.io.File.class);
+				IPath filePath = null;
+				if (diskFile.exists()) {
+					filePath = new Path(diskFile.getAbsolutePath());
+					ref.setArchiveName(filePath.lastSegment());
+				}
+			} else {
+				ref.setArchiveName(VirtualReferenceUtilities.INSTANCE.getDefaultArchiveName(ref));
+			}
 		}
 	}
 	
@@ -142,15 +198,28 @@
 			final ModuleAssemblyRootPage page) {
 		this.project = project;
 		this.propPage = page;
+		this.runtime = setRuntime();
 		rootComponent = ComponentCore.createComponent(project);
 	}
 
+	private IRuntime setRuntime() {
+		IRuntime aRuntime = null;
+		try {
+			aRuntime = getServerRuntime(project);
+		}
+		catch (CoreException e) {
+			ModuleCoreUIPlugin.log(e);
+		}
+		return aRuntime;
+	}
+
 	/*
 	 * UI Creation Methods
 	 */
 
 	public Composite createContents(final Composite parent) {
 		Composite composite = new Composite(parent, SWT.NONE);
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IModuleCoreUIContextIds.DEPLOYMENT_ASSEMBLY_PREFERENCE_PAGE_DEPLOYMENT_ASSEMBLY_TAB);
 		GridLayout layout = new GridLayout();
 		layout.marginWidth = 0;
 		layout.marginWidth = 0;
@@ -178,15 +247,8 @@
 		layout.marginWidth = 0;
 		layout.marginHeight = 0;
 		listGroup.setLayout(layout);
-		GridData gData = new GridData(GridData.FILL_BOTH);
-		gData.horizontalIndent = 5;
-		listGroup.setLayoutData(gData);
+		listGroup.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-		availableModules = new Label(listGroup, SWT.NONE);
-		gData = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-				| GridData.VERTICAL_ALIGN_FILL);
-		availableModules.setText(Messages.ModuleAssembly); 
-		availableModules.setLayoutData(gData);
 		createTableComposite(listGroup);
 	}
 
@@ -201,6 +263,7 @@
 		GridLayout layout = new GridLayout();
 		layout.numColumns = 2;
 		layout.marginHeight = 0;
+		layout.marginWidth = 0;
 		parent.setLayout(layout);
 		parent.setLayoutData(new GridData(GridData.FILL_BOTH));
 		createTable(parent);
@@ -224,7 +287,7 @@
 		Button aButton = new Button(buttonColumn, SWT.PUSH);
 		aButton.setText(label);
 		aButton.addListener(SWT.Selection, this);
-		aButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		GridDataFactory.defaultsFor( aButton ).applyTo( aButton );
 		return aButton;
 	}
 
@@ -248,11 +311,11 @@
 	protected void createTable(Composite parent) {
 		if (rootComponent != null) {
 			availableComponentsViewer = createAvailableComponentsViewer(parent);
-			GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL
-					| GridData.FILL_VERTICAL);
-			availableComponentsViewer.getTable().setLayoutData(gd);
+			GridData gd = new GridData( GridData.FILL_BOTH );
+			availableComponentsViewer.getTree().setLayoutData(gd);
 
 			ComponentDependencyContentProvider provider = createProvider();
+			provider.setComponent(rootComponent);
 			provider.setRuntimePaths(currentReferences);
 			provider.setResourceMappings(resourceMappings);
 			availableComponentsViewer.setContentProvider(provider);
@@ -282,8 +345,8 @@
 	}
 
 	protected void addHoverHelpListeners() {
-		final Table table = availableComponentsViewer.getTable();
-		createLabelListener(table);
+		final Tree tree = availableComponentsViewer.getTree();
+		createLabelListener(tree);
 //		createTableListener(table);
 //		table.addListener(SWT.Dispose, tableListener);
 //		table.addListener(SWT.KeyDown, tableListener);
@@ -291,7 +354,7 @@
 //		table.addListener(SWT.MouseHover, tableListener);
 	}
 
-	protected void createLabelListener(final Table table) {
+	protected void createLabelListener(final Tree tree) {
 		labelListener = new Listener() {
 			public void handleEvent(Event event) {
 				Label label = (Label) event.widget;
@@ -299,11 +362,11 @@
 				switch (event.type) {
 				case SWT.MouseDown:
 					Event e = new Event();
-					e.item = (TableItem) label.getData("_TABLEITEM"); //$NON-NLS-1$
-					table.setSelection(new TableItem[] { (TableItem) e.item });
-					table.notifyListeners(SWT.Selection, e);
+					e.item = (TreeItem) label.getData("_TreeItem"); //$NON-NLS-1$
+					tree.setSelection(new TreeItem[] { (TreeItem) e.item });
+					tree.notifyListeners(SWT.Selection, e);
 					shell.dispose();
-					table.setFocus();
+					tree.setFocus();
 					break;
 				case SWT.MouseExit:
 					shell.dispose();
@@ -331,7 +394,7 @@
 //					break;
 //				}
 //				case SWT.MouseHover: {
-//					TableItem item = table.getItem(new Point(event.x, event.y));
+//					TreeItem item = table.getItem(new Point(event.x, event.y));
 //					if (item != null && item.getData() != null && !canEdit(item.getData())) {
 //						if (tip != null && !tip.isDisposed())
 //							tip.dispose();
@@ -348,7 +411,7 @@
 //								.getSystemColor(SWT.COLOR_INFO_FOREGROUND));
 //						label.setBackground(Display.getDefault()
 //								.getSystemColor(SWT.COLOR_INFO_BACKGROUND));
-//						label.setData("_TABLEITEM", item); //$NON-NLS-1$
+//						label.setData("_TreeItem", item); //$NON-NLS-1$
 //						label.setText( Messages.InternalLibJarWarning);
 //						label.addListener(SWT.MouseExit, labelListener);
 //						label.addListener(SWT.MouseDown, labelListener);
@@ -377,14 +440,18 @@
 	
 	protected void addDoubleClickListener() {
 		availableComponentsViewer.setColumnProperties(new String[] { 
-				DEPLOY_PATH_PROPERTY, SOURCE_PROPERTY });
+				SOURCE_PROPERTY, DEPLOY_PATH_PROPERTY });
 		
-		CellEditor[] editors = new CellEditor[] { 
-				new TextCellEditor(availableComponentsViewer.getTable()),
-				new TextCellEditor()};
+		CellEditor[] editors = new CellEditor[] {
+				new TextCellEditor(),
+				new TextCellEditor(availableComponentsViewer.getTree())};
 		availableComponentsViewer.setCellEditors(editors);
 		availableComponentsViewer
-				.setCellModifier(new RuntimePathCellModifier());
+				.setCellModifier(getRuntimePathCellModifier());
+	}
+
+	protected RuntimePathCellModifier getRuntimePathCellModifier() {
+		return new RuntimePathCellModifier();
 	}
 
 	protected void addSelectionListener() {
@@ -398,7 +465,11 @@
 	
 	protected void viewerSelectionChanged() {
 		editReferenceButton.setEnabled(hasEditWizardPage(getSelectedObject()));
-		removeButton.setEnabled(getSelectedObject() != null);
+		removeButton.setEnabled(canRemove(getSelectedObject()));
+	}
+
+	protected boolean canRemove(Object selectedObject) {
+		return selectedObject != null;
 	}
 	
 	protected boolean hasEditWizardPage(Object o) {
@@ -413,7 +484,7 @@
 		return sel.getFirstElement();
 	}
 	
-	private class RuntimePathCellModifier implements ICellModifier {
+	protected class RuntimePathCellModifier implements ICellModifier {
 
 		public boolean canModify(Object element, String property) {
 			if( property.equals(DEPLOY_PATH_PROPERTY)) {
@@ -427,24 +498,48 @@
 
 		public Object getValue(Object element, String property) {
 			if( element instanceof IVirtualReference ) {
-				return getSafeRuntimePath((IVirtualReference)element);
+				return new Path(getSafeRuntimePath((IVirtualReference)element)).makeRelative().toString();
 			} else if( element instanceof ComponentResourceProxy) {
-				return ((ComponentResourceProxy)element).runtimePath.toString();
+				if(((ComponentResourceProxy)element).runtimePath.isRoot())
+					return ((ComponentResourceProxy)element).runtimePath.toString();
+				else
+					return ((ComponentResourceProxy)element).runtimePath.makeRelative().toString();
 			}
 			return new Path("/"); //$NON-NLS-1$
 		}
 
 		public void modify(Object element, String property, Object value) {
 			if (property.equals(DEPLOY_PATH_PROPERTY)) {
-				TableItem item = (TableItem) element;
+				TreeItem item = (TreeItem) element;
+				TreeItem[] components = availableComponentsViewer.getTree().getItems();
+				int tableIndex = -1;
+				for(int i=0; i < components.length; i++) {
+					if(components[i] == item) {
+						tableIndex = i;
+						break;
+					}
+				}
 				if( item.getData() instanceof IVirtualReference) {
 					setRuntimePathSafe((IVirtualReference)item.getData(), (String) value);
+					if(tableIndex >= 0) {
+						IPath deployPath = ((IVirtualReference)item.getData()).getRuntimePath();
+						if( ((IVirtualReference)item.getData()).getDependencyType() == IVirtualReference.DEPENDENCY_TYPE_USES ) 
+							deployPath = deployPath.append(((IVirtualReference)item.getData()).getArchiveName());
+						components[tableIndex].setText(AddModuleDependenciesPropertiesPage.DEPLOY_COLUMN, deployPath.makeRelative().toString());
+					}
 				} else if( item.getData() instanceof ComponentResourceProxy) {
 					ComponentResourceProxy c = ((ComponentResourceProxy)item.getData());
-					c.runtimePath = new Path((String)value);
+					c.runtimePath = new Path((String)value).makeAbsolute();
+					String runtimePath;
+					if(c.runtimePath.isRoot())
+						runtimePath = c.runtimePath.toString();
+					else
+						runtimePath = c.runtimePath.makeRelative().toString();
 					resourceMappingsChanged = true;
+					if(tableIndex >= 0)
+						components[tableIndex].setText(AddModuleDependenciesPropertiesPage.DEPLOY_COLUMN, runtimePath);
 				}
-				refresh();
+				verify();
 			}
 		}
 
@@ -467,19 +562,44 @@
 		showReferenceWizard(true);
 	}
 	
-	protected ReferenceExtension[] filterReferenceTypes(ReferenceExtension[] defaults) {
-		return defaults;
+	protected void filterReferenceTypes(List<ReferenceExtension> defaults) 
+	{
 	}
 	
-	protected void showReferenceWizard(boolean editing) {
-		ReferenceExtension[] extensions = 
+	protected void showReferenceWizard( final boolean editing ) 
+	{
+		final List<ReferenceExtension> extensions = 
 			DependencyPageExtensionManager.getManager().getExposedReferenceExtensions();
-		extensions = filterReferenceTypes(extensions);
+		
+		for( Iterator<ReferenceExtension> itr = extensions.iterator(); itr.hasNext(); )
+		{
+			final ReferenceExtension extension = itr.next();
+			
+			if( ! extension.isApplicable( this.project ) )
+			{
+				itr.remove();
+			}
+		}
+		
+		filterReferenceTypes( extensions );
+		
 		NewReferenceWizard wizard = new NewReferenceWizard(extensions);
+		
 		// fill the task model
 		wizard.getTaskModel().putObject(IReferenceWizardConstants.PROJECT, project);
 		wizard.getTaskModel().putObject(IReferenceWizardConstants.ROOT_COMPONENT, rootComponent);
 		wizard.getTaskModel().putObject(IReferenceWizardConstants.MODULEHANDLER, getModuleHandler());
+		wizard.getTaskModel().putObject(IReferenceWizardConstants.CURRENT_REFS, currentReferences);
+		
+		final List<Object> directives = new ArrayList<Object>();
+		
+		for( TreeItem item : this.availableComponentsViewer.getTree().getItems() )
+		{
+			directives.add( item.getData() );
+		}
+		
+		wizard.getTaskModel().putObject(IReferenceWizardConstants.ALL_DIRECTIVES, directives);
+		
 		setCustomReferenceWizardProperties(wizard.getTaskModel());
 
 		IVirtualReference selected = null;
@@ -498,10 +618,7 @@
 				currentReferences.remove(selected);
 			}
 			
-			if( wizard.getTaskModel().getObject(IReferenceWizardConstants.FOLDER_MAPPING) != null )
-				handleAddFolderMapping(wizard);
-			else
-				handleAddNewReference(wizard);
+			handleAddDirective( wizard );
 			refresh();
 		}
 	}
@@ -513,20 +630,28 @@
 		// do nothing
 	}
 	
-	protected void handleAddFolderMapping(TaskWizard wizard) {
-		Object o = wizard.getTaskModel().getObject(IReferenceWizardConstants.FOLDER_MAPPING);
-		if( o != null && o instanceof ComponentResourceProxy ) {
-			ComponentResourceProxy proxy = (ComponentResourceProxy)o;
+	protected void handleAddDirective( final TaskWizard wizard )
+	{
+		final Object folderMapping = wizard.getTaskModel().getObject(IReferenceWizardConstants.FOLDER_MAPPING);
+		
+		if( folderMapping != null && folderMapping instanceof ComponentResourceProxy ) 
+		{
+			ComponentResourceProxy proxy = (ComponentResourceProxy) folderMapping;
 			resourceMappings.add(proxy);
+			resourceMappingsChanged = true;
 		}
-	}
-	
-	protected void handleAddNewReference(TaskWizard wizard) {
-		Object c1 = wizard.getTaskModel().getObject(IReferenceWizardConstants.FINAL_REFERENCE);
-		IVirtualReference[] referenceArray = c1 instanceof IVirtualReference ? 
-				new IVirtualReference[] { (IVirtualReference)c1 } : 
-					(IVirtualReference[])c1;
-		currentReferences.addAll(Arrays.asList(referenceArray));
+		else
+		{
+			Object reference = wizard.getTaskModel().getObject(IReferenceWizardConstants.FINAL_REFERENCE);
+			
+			if( reference != null ) 
+			{
+				IVirtualReference[] referenceArray = reference instanceof IVirtualReference ? 
+						new IVirtualReference[] { (IVirtualReference)reference } : 
+							(IVirtualReference[])reference;
+				currentReferences.addAll(Arrays.asList(referenceArray));
+			}
+		}
 	}
 	
 	/**
@@ -553,39 +678,148 @@
 			Object[] selectedStuff = sel2.toArray();
 			for( int i = 0; i < selectedStuff.length; i++) {
 				Object o = selectedStuff[i];
-				if( o instanceof IVirtualReference)
-					currentReferences.remove(o);
-				else if( o instanceof ComponentResourceProxy) 
-					resourceMappings.remove(o);
+				remove(o);
 			}
 			refresh();
 		}
 	}
 
-	public TableViewer createAvailableComponentsViewer(Composite parent) {
+	protected void remove(Object selectedItem){
+		if( selectedItem instanceof IVirtualReference)
+			currentReferences.remove(selectedItem);
+		else if( selectedItem instanceof ComponentResourceProxy) {
+			resourceMappings.remove(selectedItem);
+			resourceMappingsChanged = true;
+		}
+	}
+	
+	/**
+	 * Provides two possible sorts for each column based on the text labels.
+	 * Clicking on the column will toggle forwards/backwards sorting
+	 * @author jsholl
+	 */
+	private static class TreeViewerTableColumnSortToggler {
+		private int sortDirection = 0;
+		private int sortColumn = 0;
+		private TreeViewer treeViewer;
+		
+		private TreeViewerTableColumnSortToggler(TreeViewer treeViewer){
+			this.treeViewer = treeViewer;
+		}
+		
+		private void toggleSort(int column){
+			if(sortColumn == column){
+				//cycle through sort options
+				switch(sortDirection){
+				case SWT.NONE:
+					sortDirection = SWT.UP;
+					break;
+				case SWT.UP:
+					sortDirection = SWT.DOWN;
+					break;
+				case SWT.DOWN:
+					sortDirection = SWT.UP;
+					break;
+				}
+			} else {
+				//clicked on a different column reset cycle
+				sortColumn = column;
+				sortDirection = SWT.UP;
+			}
+			
+			ViewerComparator comparator = getViewerComparator(column, sortDirection);
+			treeViewer.setComparator(comparator);
+			
+			Tree tree = treeViewer.getTree();
+			TreeColumn sortColumn = treeViewer.getTree().getColumn(column);
+			tree.setSortColumn(sortColumn);
+			tree.setSortDirection(sortDirection);
+		}
+		
+		private ViewerComparator getViewerComparator(final int columnIndex, final int sortDirection) {
+			if(sortDirection == SWT.NONE){
+				return null;
+			}
+			return new ViewerComparator() {
+				Collator collator = Collator.getInstance();
+				public int compare(Viewer viewerLocal, Object e1, Object e2) {
+					IBaseLabelProvider baseLabelProvider = treeViewer.getLabelProvider();
+					if(baseLabelProvider instanceof ITableLabelProvider){
+						ITableLabelProvider tableLabelProvider = (ITableLabelProvider)baseLabelProvider;
+						String text1 = tableLabelProvider.getColumnText(e1, columnIndex);
+						if(text1 != null){
+							String text2 = tableLabelProvider.getColumnText(e2, columnIndex);
+							int comp = collator.compare(text1, text2);
+							if(sortDirection == SWT.DOWN){
+								comp = -comp;
+							}
+							return comp;
+						}
+					}
+					return 0;
+				}
+			};
+		}
+	};
+	
+	public TreeViewer createAvailableComponentsViewer(Composite parent) {
 		int flags = SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI;
 
-		Table table = new Table(parent, flags);
-		TableViewer tempViewer = new TableViewer(table);
+		Tree tree = new Tree(parent, flags);
+		TreeViewer tempViewer = new TreeViewer(tree);
+		final TreeViewerTableColumnSortToggler sortController = new TreeViewerTableColumnSortToggler(tempViewer);
+		
+		TreeViewerFocusCellManager focusCellManager = new TreeViewerFocusCellManager(tempViewer,new FocusCellOwnerDrawHighlighter(tempViewer));
+		ColumnViewerEditorActivationStrategy actSupport = new ColumnViewerEditorActivationStrategy(tempViewer) {
+			private final int SPACE = 32;
+			protected boolean isEditorActivationEvent(
+					ColumnViewerEditorActivationEvent event) {
+				return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
+						|| event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
+						|| (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED && event.keyCode == SPACE)
+						|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
+			}
+		};
+		
+		TreeViewerEditor.create(tempViewer, focusCellManager, actSupport, ColumnViewerEditor.TABBING_HORIZONTAL
+				| ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
+				| ColumnViewerEditor.TABBING_VERTICAL | ColumnViewerEditor.KEYBOARD_ACTIVATION);
 
 		// set up table layout
 		TableLayout tableLayout = new org.eclipse.jface.viewers.TableLayout();
 		tableLayout.addColumnData(new ColumnWeightData(400, true));
 		tableLayout.addColumnData(new ColumnWeightData(500, true));
-		table.setLayout(tableLayout);
-		table.setHeaderVisible(true);
-		table.setLinesVisible(true);
+		tree.setLayout(tableLayout);
+		tree.setHeaderVisible(true);
+		tree.setLinesVisible(true);
 		tempViewer.setSorter(null);
 
-		TableColumn bndColumn = new TableColumn(table, SWT.NONE, 0);
-		bndColumn.setText(Messages.DeployPathColumn);
-		bndColumn.setResizable(true);
-
-		TableColumn projectColumn = new TableColumn(table, SWT.NONE, 1);
+		TreeColumn projectColumn = new TreeColumn(tree, SWT.NONE, SOURCE_COLUMN);
 		projectColumn.setText(Messages.SourceColumn);
 		projectColumn.setResizable(true);
+		projectColumn.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				sortController.toggleSort(0);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
 
-		tableLayout.layout(table, true);
+		TreeColumn bndColumn = new TreeColumn(tree, SWT.NONE, DEPLOY_COLUMN);
+		bndColumn.setText(Messages.DeployPathColumn);
+		bndColumn.setResizable(true);
+		bndColumn.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				sortController.toggleSort(1);
+			}
+			public void widgetDefaultSelected(SelectionEvent e) {
+				//do nothing
+			}
+		});
+		
+		tableLayout.layout(tree, true);
+		sortController.toggleSort(0);
 		return tempViewer;
 
 	}
@@ -603,18 +837,66 @@
 			initialize();
 			resetTableUI();
 		}
+		verify();
 
 	}
 
+	protected void verify() {
+		propPage.refreshProblemsView();
+	}
+	
+	public IStatus validate() {
+		ArrayList<ComponentResourceProxy> allMappings = new ArrayList<ComponentResourceProxy>();
+		allMappings.addAll(resourceMappings);
+		allMappings.addAll(hiddenMappings);
+		
+		return DeploymentAssemblyVerifierHelper.verify(rootComponent, runtime, currentReferences, allMappings,resourceMappingsChanged);
+	}
+	
+	protected void setErrorMessage(IStatus status) {
+		// Clear the messages
+		propPage.setErrorMessage(null);
+		propPage.setMessage(null);
+		if(status != null) {
+			if (status.isMultiStatus()) {
+				MultiStatus multi = (MultiStatus)status;
+				if (!multi.isOK()) {
+					propPage.setMessage(getMessage(multi), multi.getSeverity());
+					if (multi.getSeverity() == IStatus.ERROR) {
+						propPage.setErrorMessage(getMessage(multi));
+						propPage.setValid(false);
+					}
+					else 
+						propPage.setValid(true);
+				} else propPage.setValid(true);
+			} else if (status.isOK()) propPage.setValid(true);
+			propPage.getContainer().updateMessage();
+		}
+	}
+
+	private String getMessage(MultiStatus multi) {
+		//Append Messages
+		StringBuffer message = new StringBuffer();
+		
+		for (int i = 0; i < multi.getChildren().length; i++) {
+			IStatus status = multi.getChildren()[i];
+			if (!status.isOK() && status.getMessage() != null) {
+				message.append(status.getMessage());
+				message.append(" "); //$NON-NLS-1$
+			}
+		}
+		return message.toString();
+	}
+
 	protected void resetTableUI() {
 		IWorkspaceRoot input = ResourcesPlugin.getWorkspace().getRoot();
 		availableComponentsViewer.setInput(input);
 		GridData data = new GridData(GridData.FILL_BOTH);
-		int numlines = Math.min(10, availableComponentsViewer.getTable()
+		int numlines = Math.min(10, availableComponentsViewer.getTree()
 				.getItemCount());
-		data.heightHint = availableComponentsViewer.getTable().getItemHeight()
+		data.heightHint = availableComponentsViewer.getTree().getItemHeight()
 				* numlines;
-		availableComponentsViewer.getTable().setLayoutData(data);
+		availableComponentsViewer.getTree().setLayoutData(data);
 		GridData btndata = new GridData(GridData.HORIZONTAL_ALIGN_FILL
 				| GridData.VERTICAL_ALIGN_BEGINNING);
 		buttonColumn.setLayoutData(btndata);
@@ -622,16 +904,22 @@
 
 	protected void initialize() {
 		Map<String, Object> options = new HashMap<String, Object>();
-		options.put(IVirtualComponent.REQUESTED_REFERENCE_TYPE, IVirtualComponent.DISPLAYABLE_REFERENCES);
+		options.put(IVirtualComponent.REQUESTED_REFERENCE_TYPE, IVirtualComponent.DISPLAYABLE_REFERENCES_ALL);
 		IVirtualReference[] refs = rootComponent.getReferences(options);
 		IVirtualComponent comp;
 		originalReferences.addAll(Arrays.asList(refs));
 		currentReferences.addAll(Arrays.asList(cloneReferences(refs)));
 
-		ComponentResource[] allMappings = findAllMappings();
+		ComponentResource[] allMappings = findAllExposedMappings();
 		for( int i = 0; i < allMappings.length; i++ ) {
 			resourceMappings.add(new ComponentResourceProxy(
-					allMappings[i].getSourcePath(), allMappings[i].getRuntimePath()
+					allMappings[i].getSourcePath(), allMappings[i].getRuntimePath(), allMappings[i].getTag()
+			));
+		}
+		ComponentResource[] onlyHiddenMappings = findOnlyHiddenMappings();
+		for( int i = 0; i < onlyHiddenMappings.length; i++ ) {
+			hiddenMappings.add(new ComponentResourceProxy(
+					onlyHiddenMappings[i].getSourcePath(), onlyHiddenMappings[i].getRuntimePath(), onlyHiddenMappings[i].getTag()
 			));
 		}
 		if(editReferenceButton != null)
@@ -641,6 +929,18 @@
 		hasInitialized = true;
 	}
 
+	private IRuntime getServerRuntime(IProject project2) throws CoreException {
+		if (project == null)
+			return null;
+		IFacetedProject facetedProject = ProjectFacetsManager.create(project);
+		if (facetedProject == null)
+			return null;
+		org.eclipse.wst.common.project.facet.core.runtime.IRuntime runtime = facetedProject.getRuntime();
+		if (runtime == null)
+			return null;
+		return FacetUtil.getRuntime(runtime);
+	}
+
 	protected IVirtualReference[] cloneReferences(IVirtualReference[] refs) {
 		IVirtualReference[] result = new IVirtualReference[refs.length];
 		VirtualReference temp;
@@ -665,18 +965,71 @@
 			for( int i = 0; i < arr.length; i++ )
 				result[i] = (ComponentResource)arr[i];
 			return result;
-		} catch(Exception e) {
+		} catch (NullPointerException e) {
+			ModuleCoreUIPlugin.logError(e);
 		} finally {
-			structureEdit.dispose();
+			if(structureEdit != null)
+				structureEdit.dispose();
+		}
+		return new ComponentResource[]{};
+	}
+	
+	protected ComponentResource[] findAllExposedMappings() {
+		StructureEdit structureEdit = null;
+		try {
+			structureEdit = StructureEdit.getStructureEditForRead(project);
+			WorkbenchComponent component = structureEdit.getComponent();
+			Object[] arr = component.getResources().toArray();
+			ArrayList <ComponentResource> result = new ArrayList<ComponentResource>();
+			for( int i = 0; i < arr.length; i++ ) {
+				ComponentResource resource = (ComponentResource)arr[i];
+				if(!ResourceMappingFilterExtensionRegistry.shouldFilter(resource.getSourcePath())) {
+					result.add((ComponentResource)arr[i]);
+				}
+			}
+			return result.toArray(new ComponentResource[result.size()]);
+		} catch (NullPointerException e) {
+			ModuleCoreUIPlugin.logError(e);
+		} finally {
+			if(structureEdit != null)
+				structureEdit.dispose();
+		}
+		return new ComponentResource[]{};
+	}
+	
+	protected ComponentResource[] findOnlyHiddenMappings() {
+		StructureEdit structureEdit = null;
+		try {
+			structureEdit = StructureEdit.getStructureEditForRead(project);
+			WorkbenchComponent component = structureEdit.getComponent();
+			Object[] arr = component.getResources().toArray();
+			ArrayList <ComponentResource> result = new ArrayList<ComponentResource>();
+			for( int i = 0; i < arr.length; i++ ) {
+				ComponentResource resource = (ComponentResource)arr[i];
+				if(ResourceMappingFilterExtensionRegistry.shouldFilter(resource.getSourcePath())) {
+					result.add((ComponentResource)arr[i]);
+				}
+			}
+			return result.toArray(new ComponentResource[result.size()]);
+		} catch (NullPointerException e) {
+			ModuleCoreUIPlugin.logError(e);
+		} finally {
+			if(structureEdit != null)
+				structureEdit.dispose();
 		}
 		return new ComponentResource[]{};
 	}
 	
 	public static class ComponentResourceProxy {
 		public IPath source, runtimePath;
+		public String tag;
 		public ComponentResourceProxy(IPath source, IPath runtimePath) {
+			this(source, runtimePath, null);
+		}
+		public ComponentResourceProxy(IPath source, IPath runtimePath, String tag) {
 			this.source = source;
 			this.runtimePath = runtimePath;
+			this.tag = tag;
 		}
 	}
 	
@@ -688,6 +1041,18 @@
 	}
 
 	public void performDefaults() {
+		currentReferences.clear();
+		IVirtualReference[] currentTmp =
+			originalReferences.toArray(new IVirtualReference[originalReferences.size()]); 
+		currentReferences.addAll(Arrays.asList(cloneReferences(currentTmp)));
+		resourceMappings.clear();
+		ComponentResource[] allMappings = findAllExposedMappings();
+		for( int i = 0; i < allMappings.length; i++ ) {
+			resourceMappings.add(new ComponentResourceProxy(
+					allMappings[i].getSourcePath(), allMappings[i].getRuntimePath(), allMappings[i].getTag()
+			));
+		}
+		refresh();
 	}
 
 	public boolean performCancel() {
@@ -695,9 +1060,9 @@
 	}
 
 	public void dispose() {
-		Table table = null;
+		Tree tree = null;
 		if (availableComponentsViewer != null) {
-			table = availableComponentsViewer.getTable();
+			tree = availableComponentsViewer.getTree();
 		}
 //		if (table == null || tableListener == null)
 //			return; 
@@ -732,16 +1097,36 @@
 		if( resourceMappingsChanged ) {
 			removeAllResourceMappings();
 			addNewResourceMappings();
+			addAllHiddenResourceMappings();
 		}
 		return true;
 	}
-	protected boolean addNewResourceMappings() {
-		ComponentResourceProxy[] proxies = resourceMappings.toArray(new ComponentResourceProxy[resourceMappings.size()]);
+	
+	private void addAllHiddenResourceMappings() {
+		ComponentResourceProxy[] proxies = hiddenMappings.toArray(new ComponentResourceProxy[hiddenMappings.size()]);
 		IVirtualFolder rootFolder = rootComponent.getRootFolder();
 		for( int i = 0; i < proxies.length; i++ ) {
 			try {
 				rootFolder.getFolder(proxies[i].runtimePath).createLink(proxies[i].source, 0, null);
 			} catch( CoreException ce ) {
+				ModuleCoreUIPlugin.logError(ce);
+			}
+		}
+	}
+	
+	protected boolean addNewResourceMappings() {
+		ComponentResourceProxy[] proxies = resourceMappings.toArray(new ComponentResourceProxy[resourceMappings.size()]);
+		IVirtualFolder rootFolder = rootComponent.getRootFolder();
+		IVirtualFolder subFolder = null;
+		for( int i = 0; i < proxies.length; i++ ) {
+			try {			
+				subFolder= rootFolder.getFolder(proxies[i].runtimePath);
+				subFolder.createLink(proxies[i].source, 0, null);
+				if (subFolder instanceof ITaggedVirtualResource){
+					((ITaggedVirtualResource) subFolder).tagResource(proxies[i].source, proxies[i].tag, null);
+				}
+			} catch( CoreException ce ) {
+				ModuleCoreUIPlugin.logError(ce);
 			}
 		}
 		resourceMappingsChanged = false;
@@ -916,7 +1301,7 @@
 	}
 
 	public void labelProviderChanged(LabelProviderChangedEvent event) {
-		if(!availableComponentsViewer.getTable().isDisposed())
+		if(!availableComponentsViewer.getTree().isDisposed())
 			availableComponentsViewer.refresh(true);
 	}
 
@@ -926,4 +1311,9 @@
 		return moduleHandler;
 	}
 
+	public void performApply() {
+		performOk();
+		verify();
+	}
+
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IDependencyPageProvider.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IDependencyPageProvider.java
index df2fd6c..7a71881 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IDependencyPageProvider.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IDependencyPageProvider.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2009, 2012 Red Hat
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    
+ *
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui.propertypage;
 
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IModuleDependenciesControl.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IModuleDependenciesControl.java
index faebf94..481ed85 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IModuleDependenciesControl.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IModuleDependenciesControl.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2009, 2012 Red Hat
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,6 +7,8 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    
+ *
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui.propertypage;
 
@@ -44,6 +46,12 @@
 	boolean performCancel();
 	
 	/**
+	 * Called when the property page's <code>performApply()</code> method is called.
+	 * @return
+	 */
+	void performApply();
+	
+	/**
 	 * Called when the property page's <code>setVisible()</code> method is called.
 	 * @return
 	 */
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IReferenceWizardConstants.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IReferenceWizardConstants.java
index 7dde3aa..7fb643b 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IReferenceWizardConstants.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/IReferenceWizardConstants.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2009, 2012 Red Hat
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,9 +7,15 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    IBM - Ongoing maintenance
+ *    
+ *
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui.propertypage;
 
+import org.eclipse.core.resources.IProject;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
+
 public interface IReferenceWizardConstants {
 	/**
 	 * The key representing that this wizard can return a folder mapping
@@ -59,5 +65,25 @@
 	 * set the runtimePath of the reference to whatever it wants.
 	 */
 	public static final String DEFAULT_RESOURCE_LOCATION = "default.resource.location";
+
+	/**
+	 * This property helps track the current state of the component ref model as each subsequent action is taken, but not committed
+	 */
+	public static final String CURRENT_REFS = "current.references";
 	
+	/**
+	 * This key should be used when you want to convert a project into 
+	 * a specific modulecore project type.
+	 * 
+	 */
+	public static final String PROJECT_CONVERTER_OPERATION_PROVIDER = "project.converter.operation.provider";
+	
+	public static final String ALL_DIRECTIVES = "all.directives";
+	
+	/**
+	 * An interface to provide an operation for converting a specific project
+	 */
+	public static interface ProjectConverterOperationProvider {
+		public IDataModelOperation getConversionOperation(IProject project);
+	}
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/ModuleAssemblyRootPage.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/ModuleAssemblyRootPage.java
index 3518bcd..80f569f 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/ModuleAssemblyRootPage.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/ModuleAssemblyRootPage.java
@@ -1,5 +1,5 @@
 /******************************************************************************
- * Copyright (c) 2009 Red Hat
+ * Copyright (c) 2010, 2012 Red Hat and Others
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -7,19 +7,38 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Konstantin Komissarchik - misc. UI cleanup
+ *    
+ *
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui.propertypage;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.PropertyPage;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.ui.Messages;
@@ -34,6 +53,10 @@
 	
 	private IProject project;
 	private IModuleDependenciesControl[] controls = new IModuleDependenciesControl[0];
+	private SashForm sform1;
+	private Composite topComposite;
+	private ScrolledComposite problemsViewComposite;
+	private Composite subProblemsViewComposite;
 	
 	public ModuleAssemblyRootPage() {
 		super();
@@ -88,6 +111,14 @@
 		}
 	}
 	
+	public void performApply() {
+		for (int i = 0; i < controls.length; i++) {
+			if (controls[i] != null) {
+				controls[i].performApply();
+			}
+		}
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.eclipse.jface.preference.IPreferencePage#performCancel()
 	 */
@@ -130,6 +161,8 @@
 		Composite descriptionComp = new Composite(parent, SWT.NONE);
 		GridLayout layout = new GridLayout();
 		layout.numColumns = 1;
+		layout.marginWidth = 0;
+		layout.marginHeight = 0;
 		descriptionComp.setLayout(layout);
 		descriptionComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 		fillDescription(descriptionComp, description);
@@ -138,9 +171,10 @@
 	private static void fillDescription(Composite c, String s) {
 		GridData data = new GridData(GridData.FILL_HORIZONTAL);
 		data.widthHint = 250;
-		Text text = new Text(c, SWT.READ_ONLY | SWT.WRAP);
-		text.setLayoutData(data);
-		text.setText(s);
+		final Text label = new Text( c, SWT.WRAP | SWT.READ_ONLY);
+		label.setBackground(c.getBackground());
+		label.setLayoutData(data);
+		label.setText(s);
 	}
 	
 	protected Control createContents(Composite parent) {
@@ -160,24 +194,222 @@
 					controls = controls == null ? new IModuleDependenciesControl[]{} : controls;
 					if (provider.getPageTitle(project) != null)
 						setTitle(provider.getPageTitle(project));
-					return provider.createRootControl(facetedProject, controls, parent);
+					
+					this.sform1 = new SashForm( parent, SWT.VERTICAL | SWT.SMOOTH );
+					GridData gd1 = new GridData(SWT.LEFT, SWT.FILL, false, false);
+			        this.sform1.setLayoutData(gd1);
+			        
+					topComposite = provider.createRootControl(facetedProject, controls, sform1);
+				} else {				
+					if( ComponentCore.createComponent(project) == null )
+						return getVirtCompErrorComposite(parent);
+					
+					AddModuleDependenciesPropertiesPage page = new AddModuleDependenciesPropertiesPage(project, this);
+					controls = new IModuleDependenciesControl[1];
+					controls[0] = page;
+					this.sform1 = new SashForm( parent, SWT.VERTICAL | SWT.SMOOTH );
+					GridData gd1 = new GridData(SWT.LEFT, SWT.FILL, false, false);
+			        this.sform1.setLayoutData(gd1);
+			        
+					topComposite = page.createContents(sform1);
 				}
 				
-				if( ComponentCore.createComponent(project) == null )
-					return getVirtCompErrorComposite(parent);
-				
-				AddModuleDependenciesPropertiesPage page = new AddModuleDependenciesPropertiesPage(project, this);
-				controls = new IModuleDependenciesControl[1];
-				controls[0] = page;
-				return page.createContents(parent);
+				problemsViewComposite = new ScrolledComposite(sform1, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+				GridData gd = new GridData();
+	    		gd.heightHint = 100;
+	        	gd.horizontalAlignment = SWT.FILL;
+	    		gd.verticalAlignment = SWT.BOTTOM;
+	    		problemsViewComposite.setLayoutData(gd);
+	    		problemsViewComposite.setBackground( Display.getDefault().getSystemColor(SWT.COLOR_WHITE) );
+				fillProblemsViewComposite();
+		        this.sform1.setWeights( new int[] { 80, 20 } );
+		        problemsViewComposite.addListener(SWT.Resize, new Listener() {
+					public void handleEvent(Event e) {
+						handleProblemsViewResize();
+					}
+				});
+		        return sform1;
 			} catch( CoreException ce )	{
 			}
 		}
 		return getFacetErrorComposite(parent);
 	}
 	
+	private void handleProblemsViewResize() {
+		if(subProblemsViewComposite != null && !subProblemsViewComposite.isDisposed() && topComposite != null) {
+           	int width = topComposite.getClientArea().width;
+           	if(width < 400) {
+           		width = 400;
+           	}
+			int i = 1;
+			for( Control child : subProblemsViewComposite.getChildren() )
+			{
+				if(i%2 == 0) {
+					GridData gd = (GridData) child.getLayoutData();
+					gd.widthHint = width - 50;
+				}
+				i++;
+			}
+			subProblemsViewComposite.setSize(subProblemsViewComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+        	subProblemsViewComposite.update();
+		}
+	}
+	
+	protected void fillProblemsViewComposite() {
+		if(problemsViewComposite != null) {
+			IStatus [] problems = getProblemElements();
+	    	if(problems != null && problems.length > 0) {
+	    		boolean resize = false;
+				for( Control child : problemsViewComposite.getChildren() )
+				{
+					child.dispose();
+					resize = true;
+				}
+
+	        	subProblemsViewComposite = new Composite( problemsViewComposite, SWT.NONE);
+	            subProblemsViewComposite.setLayoutData(new GridData( SWT.FILL, SWT.FILL, true, true));
+	            subProblemsViewComposite.setLayout(glmargins( new GridLayout(2, false ), 0, 0, 5, 5) );
+	            subProblemsViewComposite.setBackground( Display.getDefault().getSystemColor(SWT.COLOR_WHITE));
+
+	            int width = 400;
+	            if(topComposite != null && topComposite.getClientArea().width > 400) {
+	            	width = topComposite.getClientArea().width;
+	            }
+	            
+	            Listener focusOnProblemListener = new Listener() {
+	                public void handleEvent(Event e) {
+	                  Control problemLabel = (Control) e.widget;
+	                  Rectangle problemLabelBounds = problemLabel.getBounds();
+	                  Rectangle scrollableArea = problemsViewComposite.getClientArea();
+	                  Point currentScrollPosition = problemsViewComposite.getOrigin();
+	                  if (currentScrollPosition.y > problemLabelBounds.y)
+	                	  currentScrollPosition.y = Math.max(0, problemLabelBounds.y);
+	                  if (currentScrollPosition.y + scrollableArea.height < problemLabelBounds.y + problemLabelBounds.height)
+	                	  currentScrollPosition.y = Math.max(0, problemLabelBounds.y + problemLabelBounds.height - scrollableArea.height);
+	                  problemsViewComposite.setOrigin(currentScrollPosition);
+	                }
+	              };
+	           	
+	        	for (int i = 0; i < problems.length; i++) {
+	    			IStatus singleStatus = problems[i];
+	    			if (!singleStatus.isOK() && singleStatus.getMessage() != null) {
+	    				final Label image = new Label( subProblemsViewComposite, SWT.NONE );
+	    				GridData gdImage = new GridData();	    				
+	    				gdImage.verticalAlignment = SWT.BEGINNING;
+	    	            image.setBackground( Display.getDefault().getSystemColor(SWT.COLOR_WHITE) );
+	    	            image.setImage(getProblemImage(singleStatus));
+	    	            image.setLayoutData(gdImage);
+	    	            
+	    	            final Text text  = new Text( subProblemsViewComposite, SWT.WRAP | SWT.READ_ONLY);
+	    	            GridData gdLabel = new GridData();
+	    	            gdLabel.widthHint = width - 50;
+	    	            text.setBackground( Display.getDefault().getSystemColor(SWT.COLOR_WHITE) );
+	    	            text.setText(singleStatus.getMessage());
+	    	            text.setLayoutData(gdLabel);
+	    	            text.addListener(SWT.Activate, focusOnProblemListener);
+	    			}
+	    		}
+	            problemsViewComposite.setContent(subProblemsViewComposite);
+	            
+	            if(resize)
+	            	handleProblemsViewResize();
+	            
+	            if( this.sform1.getMaximizedControl() != null ) {
+	                this.sform1.setMaximizedControl( null );
+	            }
+	    	} else {
+	    		this.sform1.setMaximizedControl( this.topComposite );
+	    	}
+		}
+	}
+	
+	
+	private final static GridLayout glmargins( final GridLayout layout,
+			final int marginWidth,
+			final int marginHeight,
+			final int marginTop,
+			final int marginBottom)
+	{
+		layout.marginWidth = marginWidth;
+		layout.marginHeight = marginHeight;
+		layout.marginLeft = 0;
+		layout.marginRight = 0;
+		layout.marginTop = marginTop;
+		layout.marginBottom = marginBottom;
+
+		return layout;
+	}
+	
     public void createControl(Composite parent){
-    	noDefaultAndApplyButton();
     	super.createControl(parent);
+    	getDefaultsButton().setText(Messages.Revert);
     }
+    
+    public void refreshProblemsView(){
+    	setErrorMessage(null);
+		setMessage(null);
+    	setValid(true);
+    	fillProblemsViewComposite();
+    }
+    
+    private Image getProblemImage(IStatus element) {
+		final ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
+		final String imageType;
+
+		if(element.getSeverity() == IStatus.ERROR) {
+			imageType = ISharedImages.IMG_OBJS_ERROR_TSK;
+		}
+		else if (element.getSeverity() == IStatus.INFO){
+			imageType = ISharedImages.IMG_OBJS_INFO_TSK;
+		}
+		else {
+			imageType = ISharedImages.IMG_OBJS_WARN_TSK;
+		}
+		return sharedImages.getImage( imageType );
+	}
+    
+    protected IStatus[] getProblemElements() {
+		final List<IStatus> errors = new ArrayList<IStatus>();
+		final List<IStatus> warnings = new ArrayList<IStatus>();
+        
+		for (int i = 0; i < controls.length; i++) {
+			if (controls[i] != null) {
+				IStatus status = Status.OK_STATUS;
+				if(controls[i] instanceof AbstractIModuleDependenciesControl)
+					status = ((AbstractIModuleDependenciesControl) controls[i]).validate();
+				if(status != null) {
+					if (status.isMultiStatus()) {
+						MultiStatus multi = (MultiStatus)status;
+						if (!multi.isOK()) {
+							for (int y = 0; y < multi.getChildren().length; y++) {
+								IStatus singleStatus = multi.getChildren()[y];
+								if(singleStatus.getMessage() != null && singleStatus.getMessage().trim().length() > 0) {
+									if(multi.getChildren()[y].getSeverity() == IStatus.ERROR) {
+										errors.add(multi.getChildren()[y]);
+									} else {
+										warnings.add(multi.getChildren()[y]);
+									}
+								}
+							}
+						}
+					} else if (!status.isOK()) {
+						if(status.getMessage() != null && status.getMessage().trim().length() > 0) {
+							if(status.getSeverity() == IStatus.ERROR) {
+								errors.add(status);
+							} else {
+								warnings.add(status);
+							}
+						}
+					}
+				}
+			}
+		}
+		if(errors.size() > 0) {
+			setValid(false);
+			errors.addAll(warnings);
+			// This returns all the errors followed by all the warnings
+			return errors.toArray(new IStatus[errors.size()]);
+		}
+		return warnings.toArray(new IStatus[warnings.size()]);
+	}
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
index d7f7bb1..11329a6 100644
--- a/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.common.modulecore/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %Bundle-Name.0
 Bundle-Vendor: %provider
 Bundle-SymbolicName: org.eclipse.wst.common.modulecore; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.200.qualifier
 Bundle-Activator: org.eclipse.wst.common.componentcore.internal.ModulecorePlugin
 Bundle-Localization: plugin
 Export-Package: org.eclipse.wst.common.componentcore,
diff --git a/plugins/org.eclipse.wst.common.modulecore/model/componentCore.ecore b/plugins/org.eclipse.wst.common.modulecore/model/componentCore.ecore
index fccafb8..ec338c4 100644
--- a/plugins/org.eclipse.wst.common.modulecore/model/componentCore.ecore
+++ b/plugins/org.eclipse.wst.common.modulecore/model/componentCore.ecore
@@ -28,6 +28,7 @@
         lowerBound="1" eType="#//WorkbenchComponent" eOpposite="#//WorkbenchComponent/resources"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="resourceType" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="tag" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EDataType" name="IPath" instanceClassName="org.eclipse.core.runtime.IPath">
     <eAnnotations source="keywords">
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java
index eee7b8a..cff8c48 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/ArtifactEdit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -65,9 +65,6 @@
  * When clients have concluded their use of the instance, <b>clients must call {@see #dispose()}
  * </b>.
  * </p>
- * <p>
- * This class is experimental until fully documented.
- * </p>
  * 
  * @see ModuleCoreNature
  * @see ArtifactEditModel
@@ -84,9 +81,6 @@
 	private BinaryComponentHelper binaryComponentHelper;
 	private final IProject project;
 	
-	/**
-	 * 
-	 */
 	protected ArtifactEdit() {
 		super();
 		artifactEditModel = null;
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
index 6be809b..3f0001a 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/FacetProjectCreationDataModelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2011 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -17,6 +17,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -41,11 +42,11 @@
 import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin;
 import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
 import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
 import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
 import org.eclipse.wst.common.project.facet.core.IProjectFacet;
 import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject.Action;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
 import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
 import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;
@@ -64,6 +65,9 @@
 	
 	public static final String FORCE_VERSION_COMPLIANCE = "FacetProjectCreationDataModelProvider.FORCE_VERSION_COMPLIANCE";
 	
+	private List<IFacetedProjectListener> facetedProjectListeners = new ArrayList<IFacetedProjectListener>();
+	private IDataModelListener dataModelListener;
+	
 	public FacetProjectCreationDataModelProvider() {
 		super();
 	}
@@ -87,45 +91,42 @@
 		
 		model.setProperty(FACETED_PROJECT_WORKING_COPY, fpjwc);
 		
-		fpjwc.addListener
-		(
-		    new IFacetedProjectListener()
-		    {
-                public void handleEvent( final IFacetedProjectEvent event )
+		IFacetedProjectListener projectFacetChangedListener = new IFacetedProjectListener()
+	    {
+            public void handleEvent( final IFacetedProjectEvent event )
+            {
+                for( IFacetedProject.Action action : fpjwc.getProjectFacetActions() )
                 {
-                    for( IFacetedProject.Action action : fpjwc.getProjectFacetActions() )
+                    final Object config = action.getConfig();
+                    
+                    if( config != null && config instanceof IDataModel )
                     {
-                        final Object config = action.getConfig();
+                        final IDataModel dm = (IDataModel) config;
                         
-                        if( config != null && config instanceof IDataModel )
+                        if( dm.getAllProperties().contains( FacetInstallDataModelProvider.MASTER_PROJECT_DM ) )
                         {
-                            final IDataModel dm = (IDataModel) config;
-                            
-                            if( dm.getAllProperties().contains( FacetInstallDataModelProvider.MASTER_PROJECT_DM ) )
-                            {
-                                dm.setProperty( FacetInstallDataModelProvider.MASTER_PROJECT_DM, model );
-                            }
+                            dm.setProperty( FacetInstallDataModelProvider.MASTER_PROJECT_DM, model );
                         }
                     }
                 }
-		    },
-		    IFacetedProjectEvent.Type.PROJECT_FACETS_CHANGED
-		);
+            }
+	    };
+	    this.facetedProjectListeners.add(projectFacetChangedListener);    
+		fpjwc.addListener(projectFacetChangedListener, IFacetedProjectEvent.Type.PROJECT_FACETS_CHANGED	);
 
-        fpjwc.addListener
-        (
-            new IFacetedProjectListener()
+		IFacetedProjectListener availableRuntimeChangedListener = new IFacetedProjectListener()
+        {
+            public void handleEvent( final IFacetedProjectEvent event )
             {
-                public void handleEvent( final IFacetedProjectEvent event )
-                {
-                    model.notifyPropertyChange(FACET_RUNTIME, IDataModel.VALID_VALUES_CHG);
-                }
-            },
-            IFacetedProjectEvent.Type.AVAILABLE_RUNTIMES_CHANGED
-        );
+                model.notifyPropertyChange(FACET_RUNTIME, IDataModel.VALID_VALUES_CHG);
+            }
+        };
+        this.facetedProjectListeners.add(availableRuntimeChangedListener);
+        fpjwc.addListener(availableRuntimeChangedListener, IFacetedProjectEvent.Type.AVAILABLE_RUNTIMES_CHANGED);
 		
 		IDataModel projectDataModel = DataModelFactory.createDataModel(new ProjectCreationDataModelProviderNew());
-		projectDataModel.addListener(new IDataModelListener() {
+		
+		dataModelListener = new IDataModelListener() {
 			public void propertyChanged(DataModelEvent event) 
 			{
 			    final String prop = event.getPropertyName();
@@ -134,10 +135,10 @@
                     prop.equals( IProjectCreationPropertiesNew.PROJECT_NAME ) )
                 {
                     final String projectName = (String) event.getProperty();
-                    IStatus status = getDataModel().validateProperty(FACET_PROJECT_NAME);
+					getDataModel().setProperty(FACET_PROJECT_NAME, projectName);
+					IStatus status = getDataModel().validateProperty(FACET_PROJECT_NAME);
                     if( status.isOK() ){
-						getDataModel().setProperty(FACET_PROJECT_NAME, projectName);
-						fpjwc.setProjectName( projectName );
+                    	fpjwc.setProjectName( projectName );
                     }
 				}
                 else if( prop.equals( IProjectCreationPropertiesNew.PROJECT_LOCATION ) )
@@ -146,15 +147,27 @@
                     fpjwc.setProjectLocation( location == null ? null : new Path( location ) );
                 }
 			}
-		});
+		};
+			
+		projectDataModel.addListener(dataModelListener);
 		model.addNestedModel(NESTED_PROJECT_DM, projectDataModel);
 	}
 
 	@Override
 	public void dispose() {
 		if(fpjwc != null){
+			for (IFacetedProjectListener listener:this.facetedProjectListeners){
+				fpjwc.removeListener(listener);
+			}
 			fpjwc.dispose();
 		}
+		if (model != null){
+			IDataModel nestedProjectDM = model.getNestedModel(NESTED_PROJECT_DM);
+			if (nestedProjectDM != null){
+				nestedProjectDM.removeListener(dataModelListener);
+			}
+		}
+		setDataModel(null);
 		super.dispose();
 	}
 	
@@ -356,7 +369,7 @@
 	            
 	            if( ! ( config instanceof IDataModel ) )
 	            {
-	                config = Platform.getAdapterManager().getAdapter( config, IDataModel.class );
+	                config = Platform.getAdapterManager().loadAdapter( config, IDataModel.class.getName() );
 	            }
 	            
 	            final IDataModel dm = (IDataModel) config;
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/IAddReferenceDataModelProperties.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/IAddReferenceDataModelProperties.java
index 2367892..200a2dd 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/IAddReferenceDataModelProperties.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/datamodel/properties/IAddReferenceDataModelProperties.java
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *    Rob Stryker - initial implementation and ongoing maintenance
+ *    Carl Anderson (IBM) - SYNC_PRIMARY_RUNTIME
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.datamodel.properties;
 
@@ -40,4 +41,12 @@
 	 * </p>
 	 */
 	public static final String TARGET_REFERENCE_LIST = "IAddReferenceDataModelProperties.TARGET_REFERENCE_LIST"; //$NON-NLS-1$
+
+	/**
+	 * <p>
+	 * This required property is a {@link java.util.Boolean} that specifies whether the child project's primary runtime should be set 
+	 * to the same primary runtime as the parent.  The default is TRUE.
+	 * </p>
+	 */
+	public static final String SYNC_PRIMARY_RUNTIME = "IAddReferenceDataModelProperties.SYNC_PRIMARY_RUNTIME"; //$NON-NLS-1$
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java
index 4bdb739..9d1fafd 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ArtifactEditModel.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.wst.common.componentcore.internal;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.core.resources.IProject;
@@ -272,7 +273,8 @@
 	 * @throws UnresolveableURIException
 	 *             could not WorkbenchResource with the corresponding URI.
 	 */
-	protected boolean processResourcesIfInterrested(List theResources) {
+	protected boolean processResourcesIfInterrested(List aTheResources) {
+		List theResources = new ArrayList(aTheResources);
 		int size = theResources.size();
 		Resource resourceToProcess;
 		boolean processed = false; 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java
index efe8adc..4fe2aac 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentResource.java
@@ -1,7 +1,7 @@
 /**
  * <copyright></copyright>
  * 
- * $Id: ComponentResource.java,v 1.6 2006/04/27 04:17:40 cbridgha Exp $
+ * $Id: ComponentResource.java,v 1.7 2011/08/10 21:40:14 rsanchez Exp $
  */
 package org.eclipse.wst.common.componentcore.internal;
 
@@ -33,6 +33,7 @@
  *   <li>{@link org.eclipse.wst.common.componentcore.internal.ComponentResource#getExclusions <em>Exclusions</em>}</li>
  *   <li>{@link org.eclipse.wst.common.componentcore.internal.ComponentResource#getComponent <em>Component</em>}</li>
  *   <li>{@link org.eclipse.wst.common.componentcore.internal.ComponentResource#getResourceType <em>Resource Type</em>}</li>
+ *   <li>{@link org.eclipse.wst.common.componentcore.internal.ComponentResource#getTag <em>Tag</em>}</li>
  * </ul>
  * </p>
  *
@@ -165,6 +166,32 @@
 	 */
 	void setResourceType(String value);
 
+	/**
+	 * Returns the value of the '<em><b>Tag</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Tag</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Tag</em>' attribute.
+	 * @see #setTag(String)
+	 * @see org.eclipse.wst.common.componentcore.ComponentcorePackage#getComponentResource_Tag()
+	 * @model
+	 * @generated
+	 */
+	String getTag();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.wst.common.componentcore.internal.ComponentResource#getTag <em>Tag</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Tag</em>' attribute.
+	 * @see #getTag()
+	 * @generated
+	 */
+	void setTag(String value);
+
 	IProject getOwningProject();
 	void setOwningProject(IProject aProject);
 
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentcorePackage.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentcorePackage.java
index e789e75..737cc80 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentcorePackage.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ComponentcorePackage.java
@@ -2,7 +2,7 @@
  * <copyright>
  * </copyright>
  *
- * $Id: ComponentcorePackage.java,v 1.9 2009/06/09 20:02:04 jsholl Exp $
+ * $Id: ComponentcorePackage.java,v 1.10 2011/08/10 21:40:14 rsanchez Exp $
  */
 package org.eclipse.wst.common.componentcore.internal;
 
@@ -191,13 +191,22 @@
 	int COMPONENT_RESOURCE__RESOURCE_TYPE = 4;
 
 	/**
+	 * The feature id for the '<em><b>Tag</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_RESOURCE__TAG = 5;
+
+	/**
 	 * The number of structural features of the '<em>Component Resource</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int COMPONENT_RESOURCE_FEATURE_COUNT = 5;
+	int COMPONENT_RESOURCE_FEATURE_COUNT = 6;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.wst.common.componentcore.internal.impl.ComponentTypeImpl <em>Component Type</em>}' class.
@@ -574,6 +583,17 @@
 	EAttribute getComponentResource_ResourceType();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.wst.common.componentcore.internal.ComponentResource#getTag <em>Tag</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Tag</em>'.
+	 * @see org.eclipse.wst.common.componentcore.internal.ComponentResource#getTag()
+	 * @see #getComponentResource()
+	 * @generated
+	 */
+	EAttribute getComponentResource_Tag();
+
+	/**
 	 * Returns the meta object for class '{@link org.eclipse.wst.common.componentcore.internal.ComponentType <em>Component Type</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -784,7 +804,7 @@
 	 * @return the meta object for data type '<em>IPath</em>'.
 	 * @see org.eclipse.core.runtime.IPath
 	 * @model instanceClass="org.eclipse.core.runtime.IPath"
-	 *        annotation="keywords datatype='null'" 
+	 *        annotation="keywords datatype='null'"
 	 * @generated
 	 */
 	EDataType getIPath();
@@ -796,7 +816,7 @@
 	 * @return the meta object for data type '<em>URI</em>'.
 	 * @see org.eclipse.emf.common.util.URI
 	 * @model instanceClass="org.eclipse.emf.common.util.URI"
-	 *        annotation="keywords datatype='null'" 
+	 *        annotation="keywords datatype='null'"
 	 * @generated
 	 */
 	EDataType getURI();
@@ -932,6 +952,14 @@
 		EAttribute COMPONENT_RESOURCE__RESOURCE_TYPE = eINSTANCE.getComponentResource_ResourceType();
 
 		/**
+		 * The meta object literal for the '<em><b>Tag</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COMPONENT_RESOURCE__TAG = eINSTANCE.getComponentResource_Tag();
+
+		/**
 		 * The meta object literal for the '{@link org.eclipse.wst.common.componentcore.internal.impl.ComponentTypeImpl <em>Component Type</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
index bb268a1..c120a83 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
@@ -19,10 +19,10 @@
 import java.util.List;
 import java.util.Map;
 
+import org.eclipse.core.internal.resources.Workspace;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
@@ -284,15 +284,15 @@
 			if (!compFile.isSynchronized(IResource.DEPTH_ONE)) {
 				File iofile = compFile.getFullPath().toFile();
 				if (iofile.exists() || compFile.exists()) {
-					IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
 					try {
-						// OK wait to get workspace root before refreshing
-						Job.getJobManager().beginRule(root, null);
-						compFile.refreshLocal(IResource.DEPTH_ONE, null);
+						Workspace workspace = (Workspace)compFile.getWorkspace();
+						if (workspace.getElementTree().isImmutable())
+						{
+							workspace.newWorkingTree();
+						}
+						((org.eclipse.core.internal.resources.Resource)compFile).getLocalManager().refresh(compFile.getProject(), IResource.DEPTH_INFINITE, true, null);
 					} catch (CoreException ce) {
 						// ignore
-					} finally {
-						Job.getJobManager().endRule(root);
 					}
 				}
 			}
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
index 4bcf5a8..9e0ac3f 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/StructureEdit.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
+ * Copyright (c) 2003, 2012 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -75,9 +75,6 @@
  * For more information about the underlying EditModel, see <a
  * href="ModuleCoreNature.html#module-structural-model">the discussion of the ModuleStructuralModel
  * </a>.
- * <p>
- * The following class is experimental until fully documented.
- * </p>
  * 
  * @see org.eclipse.wst.common.componentcore.ModuleCoreNature
  * @see org.eclipse.wst.common.componentcore.internal.ModuleStructuralModel
@@ -113,8 +110,9 @@
 	 * 
 	 * @param aProject
 	 *            The IProject that contains the WTP Modules model to load
-	 * @return A ModuleCore edit facade to access the WTP Modules Model, null
-	 *         for non-flexible projects
+	 * @return A ModuleCore edit facade to access the WTP Modules Model or
+	 *         <code>null</code> if the project is inaccessible or not a
+	 *         flexible project
 	 */
 	public static StructureEdit getStructureEditForRead(IProject aProject) {
 		ModuleCoreNature nature = ModuleCoreNature.getModuleCoreNature(aProject);
@@ -124,17 +122,19 @@
 	/**
 	 * 
 	 * <p>
-	 * Each ModuleCore edit facade is tied to a specific project. A project may have multiple
-	 * ModuleCore edit facades live at any given time.
+	 * Each ModuleCore edit facade is tied to a specific project. A project
+	 * may have multiple ModuleCore edit facades live at any given time.
 	 * </p>
 	 * <p>
-	 * Use to acquire a ModuleCore facade for a specific project that may be used to modify the
-	 * model.
+	 * Use to acquire a ModuleCore facade for a specific project that may be
+	 * used to modify the model.
 	 * </p>
 	 * 
 	 * @param aProject
 	 *            The IProject that contains the WTP Modules model to load
-	 * @return A ModuleCore edit facade to access the WTP Modules Model
+	 * @return A ModuleCore edit facade to access the WTP Modules Model or
+	 *         <code>null</code> if the project is inaccessible or not a
+	 *         flexible project
 	 */
 	public static StructureEdit getStructureEditForWrite(IProject aProject) {
 		ModuleCoreNature nature = ModuleCoreNature.getModuleCoreNature(aProject);
@@ -143,9 +143,10 @@
 
 	/**
 	 * <p>
-	 * A convenience API to fetch the {@see ModuleCoreNature}&nbsp;for a particular module URI. The
-	 * module URI must be of the valid form, or an exception will be thrown. The module URI must be
-	 * contained by a project that has a {@see ModuleCoreNature}&nbsp;or null will be returned.
+	 * A convenience API to fetch the {@see ModuleCoreNature}&nbsp;for a
+	 * particular module URI. The module URI must be of the valid form, or an
+	 * exception will be thrown. The module URI must be contained by a project
+	 * that has a {@see ModuleCoreNature}&nbsp;or null will be returned.
 	 * </p>
 	 * <p>
 	 * <b>This method may return null. </b>
@@ -154,6 +155,9 @@
 	 * @param aModuleURI
 	 *            A valid, fully-qualified module URI
 	 * @return The ModuleCoreNature of the project associated with aModuleURI
+	 *         or <code>null</code> if the URI has no containing project, its
+	 *         containing project is either inaccessible or not a flexible
+	 *         project
 	 * @throws UnresolveableURIException
 	 *             If the supplied module URI is invalid or unresolveable.
 	 */
@@ -193,13 +197,51 @@
 		return null;
 	}
 	
+	
 	/**
 	 * <p>
 	 * For {@see WorkbenchComponent}s that are contained within a project, the containing project
 	 * can be determined with the {@see WorkbenchComponent}'s fully-qualified module URI.
 	 * </p>
 	 * <p>
-	 * The following method will return the the corresponding project for the supplied module URI,
+	 * The following method will return the corresponding project for the supplied module URI,
+	 * if it can be determined.
+	 * </p>
+	 * <p>
+	 * The method may return an inaccessible project.	
+	 * </p>
+	 * <p>
+	 * <b>This method may return null. </b>
+	 * </p>
+	 * 
+	 * @param aModuleURI
+	 *            A valid, fully-qualified module URI
+	 * @param onlyAccessibleProjects
+	 *            True if the method should return only accessible projects. 
+	 * @return The project that contains the module referenced by the module URI
+	 * @throws UnresolveableURIException
+	 *             If the supplied module URI is invalid or unresolveable.
+	 */
+	public static IProject getContainingProject(URI aModuleURI, boolean onlyAccessibleProjects) throws UnresolveableURIException {
+		ModuleURIUtil.ensureValidFullyQualifiedModuleURI(aModuleURI);
+		String projectName = aModuleURI.segment(ModuleURIUtil.ModuleURI.PROJECT_NAME_INDX);
+		if (projectName == null || projectName.length() == 0)
+			throw new UnresolveableURIException(aModuleURI);
+		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+		if (!onlyAccessibleProjects)
+			return project;
+		if (project.isAccessible())
+			return project;
+		return null;
+	}
+	
+	/**
+	 * <p>
+	 * For {@see WorkbenchComponent}s that are contained within a project, the containing project
+	 * can be determined with the {@see WorkbenchComponent}'s fully-qualified module URI.
+	 * </p>
+	 * <p>
+	 * The following method will return the corresponding project for the supplied module URI,
 	 * if it can be determined.
 	 * </p>
 	 * <p>
@@ -216,14 +258,7 @@
 	 *             If the supplied module URI is invalid or unresolveable.
 	 */
 	public static IProject getContainingProject(URI aModuleURI) throws UnresolveableURIException {
-		ModuleURIUtil.ensureValidFullyQualifiedModuleURI(aModuleURI);
-		String projectName = aModuleURI.segment(ModuleURIUtil.ModuleURI.PROJECT_NAME_INDX);
-		if (projectName == null || projectName.length() == 0)
-			throw new UnresolveableURIException(aModuleURI);
-		IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
-		if (project.isAccessible())
-			return project;
-		return null;
+		return getContainingProject(aModuleURI, true);
 	}
 
 	/**
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/WorkbenchComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/WorkbenchComponent.java
index e8d7586..58b6899 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/WorkbenchComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/WorkbenchComponent.java
@@ -166,5 +166,7 @@
 	ComponentResource[] findResourcesBySourcePath(IPath aSourcePath, int resourceFlag);
 	
 	boolean exists(IPath aSourcePath, int resourceFlag);
+	
+	final String DEFAULT_ROOT_SOURCE_TAG = "defaultRootSource";
 
 } // WorkbenchComponent
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphEvent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphEvent.java
index d6fdcf0..f63c4d6 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphEvent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphEvent.java
@@ -13,6 +13,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
@@ -40,6 +41,10 @@
 		return type;
 	}
 
+	private void setType(int newType){
+		this.type = newType;
+	}
+	
 	void setModStamp(long modStamp) {
 		this.modStamp = modStamp;
 	}
@@ -61,8 +66,30 @@
 		if (targetProject == null) {
 			throw new NullPointerException("Target project must not be null.");
 		}
+		//update removed references accordingly
+		if(removedReferences != null){
+			Set references = removedReferences.get(targetProject);
+			if(references != null){
+				if(references.remove(sourceProject)) {
+					if(references.isEmpty()){
+						removedReferences.remove(targetProject);
+						if(removedReferences.isEmpty()){
+							removedReferences = null;
+							if((getType() & ADDED) == ADDED){
+								setType(ADDED);
+							} else {
+								setType(0);
+							}
+						}
+					}
+					//there is no net change, so return.
+					return;
+				}
+			}
+		}
+		
 		if (addedReferences == null) {
-			type = type | ADDED;
+			setType(getType() | ADDED);
 			addedReferences = new HashMap<IProject, Set<IProject>>();
 		}
 		Set references = addedReferences.get(targetProject);
@@ -71,6 +98,8 @@
 			addedReferences.put(targetProject, references);
 		}
 		references.add(sourceProject);
+		
+		
 	}
 
 	void removeReference(IProject sourceProject, IProject targetProject) {
@@ -80,8 +109,31 @@
 		if (targetProject == null) {
 			throw new NullPointerException("Target project must not be null.");
 		}
+		
+		//updated added references accordingly
+		if(addedReferences != null){
+			Set references = addedReferences.get(targetProject);
+			if(references != null){
+				if(references.remove(sourceProject)){
+					if(references.isEmpty()){
+						addedReferences.remove(targetProject);
+						if(addedReferences.isEmpty()){
+							addedReferences = null;
+							if((getType() & REMOVED) == REMOVED){
+								setType(REMOVED);
+							} else {
+								setType(0);
+							}
+						}
+					}
+					//there is no net change, so return.
+					return;
+				}
+			}
+		}
+		
 		if (removedReferences == null) {
-			type = type | REMOVED;
+			setType(getType() | REMOVED);
 			removedReferences = new HashMap<IProject, Set<IProject>>();
 		}
 		Set references = removedReferences.get(targetProject);
@@ -118,4 +170,41 @@
 		return removedReferences;
 	}
 
+	@Override
+	public String toString() {
+		StringBuffer buff = new StringBuffer("Dependency Graph Event \n{\n getModStamp() = "+getModStamp()+"\n hashCode() = "+hashCode()+"\n");
+		boolean added = (getType() & ADDED) == ADDED;
+		if(added){
+			buff.append(" ADDED:\n" );
+			for(Iterator<Map.Entry<IProject, Set<IProject>>> iterator = getAddedReferences().entrySet().iterator(); iterator.hasNext();){
+				Map.Entry<IProject, Set<IProject>> entry = iterator.next();
+				buff.append("  " + entry.getKey().getName() + " -> {");
+				for (Iterator<IProject> mappedProjects = entry.getValue().iterator(); mappedProjects.hasNext();) {
+					buff.append(mappedProjects.next().getName());
+					if (mappedProjects.hasNext()) {
+						buff.append(", ");
+					}
+				}
+				buff.append("}\n");
+			}
+		}
+		boolean removed = (getType() & REMOVED) == REMOVED;
+		if(removed){
+			buff.append(" REMOVED:\n" );
+			for(Iterator<Map.Entry<IProject, Set<IProject>>> iterator = getRemovedReferences().entrySet().iterator(); iterator.hasNext();){
+				Map.Entry<IProject, Set<IProject>> entry = iterator.next();
+				buff.append("  " + entry.getKey().getName() + " -> {");
+				for (Iterator<IProject> mappedProjects = entry.getValue().iterator(); mappedProjects.hasNext();) {
+					buff.append(mappedProjects.next().getName());
+					if (mappedProjects.hasNext()) {
+						buff.append(", ");
+					}
+				}
+				buff.append("}\n");
+			}
+		}
+		buff.append("}\n");
+		return buff.toString();
+	}
+	
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.java
index a633ec1..c9b9ee9 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphImpl.java
@@ -1,12 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2011 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
 package org.eclipse.wst.common.componentcore.internal.builder;
 
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
 import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -14,47 +35,56 @@
 import org.eclipse.core.resources.IResourceChangeListener;
 import org.eclipse.core.resources.IResourceDelta;
 import org.eclipse.core.resources.IResourceDeltaVisitor;
+import org.eclipse.core.resources.IWorkspaceRoot;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.ISafeRunnable;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.ListenerList;
+import org.eclipse.core.runtime.OperationCanceledException;
 import org.eclipse.core.runtime.SafeRunner;
 import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.IJobManager;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.core.runtime.jobs.ILock;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.ModulecorePlugin;
 import org.eclipse.wst.common.componentcore.internal.impl.WTPModulesResourceFactory;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualComponent;
+import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualReference;
+import org.osgi.framework.Bundle;
 
 public class DependencyGraphImpl implements IDependencyGraph {
 
 	/**
 	 * Don't read or write the graph without first obtaining the graphLock.
 	 */
-	private Object graphLock = new Object();
+	private final Object graphLock = new Object();
 
 	/**
-	 * If projects A and and B both depend on C an entry in this graph would be {C ->
-	 * {A, B} }
+	 * If projects A and and B both depend on C an entry in this graph would be
+	 * {C -> {A, B} }
 	 */
-	private Map<IProject, Set<IProject>> graph = null;
-	
-	private long modStamp = 0;
+	private Map<IProject, Set<IProject>> graph;
 
-	private Map<String, Object> referenceOptions = new HashMap<String, Object>();
+	private final AtomicLong modStamp = new AtomicLong();
+
+	private final ListenerList listeners = new ListenerList();
 	
-	private ListenerList listeners = new ListenerList();
-	
+	/** Used to guard pauseCount. */
+	private final Object jobLock = new Object();
+
+	/** If this is greater than zero we do not run the graph update job. This is guarded by jobLock. */
+	private int pauseCount;
+
 	/**
-	 * This is not public; only {@link IDependencyGraph#INSTANCE} should be
+	 * This is not public, only {@link IDependencyGraph#INSTANCE} should be
 	 * used.
-	 * 
-	 * @return
 	 */
 	static IDependencyGraph getInstance() {
 		if (instance == null) {
@@ -64,15 +94,17 @@
 		return instance;
 	}
 
-	private static DependencyGraphImpl instance = null;
+	private static DependencyGraphImpl instance;
 
 	private DependencyGraphImpl() {
 	}
 
 	public long getModStamp() {
-		synchronized (graphLock) {
-			return modStamp;
-		}
+		return modStamp.get();
+	}
+
+	private void incrementModStamp() {
+		modStamp.incrementAndGet();
 	}
 
 	/**
@@ -81,26 +113,58 @@
 	 * reference C. Passing C as the targetProject will return {A, B}
 	 */
 	public Set<IProject> getReferencingComponents(IProject targetProject) {
-		waitForAllUpdates(null);
+		IDependencyGraphReferences refs = getReferencingComponents(targetProject, true);
+		return refs.getReferencingComponents();
+	}
+
+	public IDependencyGraphReferences getReferencingComponents(
+			IProject targetProject, boolean waitForAllUpdates) {
+		DependencyGraphReferences refs = new DependencyGraphReferences();
+		refs.targetProject = targetProject;
+		if (waitForAllUpdates) {
+			refs.stale = false;
+			waitForAllUpdates(null);
+		} else if (isUpdateNecessary()) {
+			refs.stale = true;
+		}
 		synchronized (graphLock) {
 			Set<IProject> set = graph.get(targetProject);
 			if (set == null) {
-				return Collections.EMPTY_SET;
+				refs.referencingProjects = Collections.EMPTY_SET;
 			} else {
-				for (Iterator<IProject> iterator = set.iterator(); iterator.hasNext();) {
-					IProject project = iterator.next();
-					if (!project.isAccessible()) {
+				DependencyGraphEvent event = null;
+				for (Iterator<IProject> iterator = set.iterator(); iterator	.hasNext();) {
+					IProject sourceProject = iterator.next();
+					if (!sourceProject.isAccessible()) {
 						iterator.remove();
+						if (event == null) {
+							incrementModStamp();
+							event = new DependencyGraphEvent();
+							event.setModStamp(getModStamp());
+						}
+						event.removeReference(sourceProject, targetProject);
 					}
 				}
+				if (event != null) {
+					notifiyListeners(event);
+				}
 				Set<IProject> copy = new HashSet<IProject>();
 				copy.addAll(set);
-				return copy;