diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/icons/folder.gif b/plugins/org.eclipse.wst.common.modulecore.ui/icons/folder.gif
new file mode 100644
index 0000000..c91b267
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/icons/folder.gif
Binary files differ
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/icons/jar_obj.gif b/plugins/org.eclipse.wst.common.modulecore.ui/icons/jar_obj.gif
new file mode 100644
index 0000000..ec315d5
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/icons/jar_obj.gif
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 3d2d760..baccaf3 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
@@ -10,4 +10,4 @@
 ###############################################################################
 provider=Eclipse.org
 Bundle-Name.0 = Modulecore UI Plug-in
-Module_assembly.name = Module Assembly **EXPERIMENTAL**
\ No newline at end of file
+Module_assembly.name = Module Assembly
\ No newline at end of file
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 a73fc22..d73441d 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
@@ -10,11 +10,20 @@
  ******************************************************************************/
 package org.eclipse.wst.common.componentcore.ui;
 
+import java.net.MalformedURLException;
+import java.net.URL;
+
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
 
 /**
@@ -24,6 +33,16 @@
 
 	// The plug-in ID
 	public static final String PLUGIN_ID = "org.eclipse.wst.common.modulecore.ui"; //$NON-NLS-1$
+	
+	public static final String[] ICON_DIRS = new String[]{"icons/full/obj16", //$NON-NLS-1$
+		"icons/full/cview16", //$NON-NLS-1$
+		"icons/full/ctool16", //$NON-NLS-1$
+		"icons/full/clcl16", //$NON-NLS-1$
+		"icons/full/ovr16", //$NON-NLS-1$
+		"icons/full/extra", //$NON-NLS-1$
+		"icons/full/wizban", //$NON-NLS-1$
+		"icons", //$NON-NLS-1$
+		""}; //$NON-NLS-1$
 
 	// The shared instance
 	private static ModuleCoreUIPlugin plugin;
@@ -64,6 +83,53 @@
 	}
 
 	/**
+	 * Get a .gif from the image registry.
+	 */
+	public Image getImage(String key) {
+		ImageRegistry imageRegistry = getImageRegistry();
+		Image image = imageRegistry.get(key);
+		if (image == null || image.isDisposed()) {
+			ImageDescriptor descriptor = getImageDescriptor(key);
+			if (descriptor != null) {
+				image = descriptor.createImage();
+				imageRegistry.put(key, image);
+			}
+		}
+		return image;
+	}
+
+	/**
+	 * This gets a .gif from the icons folder.
+	 */
+	public ImageDescriptor getImageDescriptor(String key) {
+		ImageDescriptor imageDescriptor = null;
+		URL gifImageURL = getImageURL(key,getBundle());
+		if (gifImageURL != null)
+			imageDescriptor = ImageDescriptor.createFromURL(gifImageURL);
+		return imageDescriptor;
+	}
+
+	/**
+	 * This gets a .gif from the icons folder.
+	 */
+	public URL getImageURL(String key, Bundle bundle) {
+		String gif = "/" + key + ".gif"; //$NON-NLS-1$ //$NON-NLS-2$
+		IPath path = null;
+		for (int i = 0; i < ICON_DIRS.length; i++) {
+			path = new Path(ICON_DIRS[i]).append(gif);
+			if (Platform.find(bundle,path) == null)
+				continue;
+			try {
+				return new URL( bundle.getEntry("/"), path.toString()); //$NON-NLS-1$ 
+			} catch (MalformedURLException exception) {
+				logError(exception);
+				continue;
+			}
+		}
+		return null;
+	}
+
+	/**
 	 * Returns the shared instance
 	 *
 	 * @return the shared instance
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 eefcd27..4db50c0 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
@@ -24,6 +24,7 @@
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
 
 
@@ -64,6 +65,15 @@
 	}
 	
 	public Image getColumnImage(Object element, int columnIndex) {
+		if( element instanceof ComponentResourceProxy) {
+			return ModuleCoreUIPlugin.getInstance().getImage("folder");
+		}
+		if (element instanceof IVirtualComponent) {
+			return ModuleCoreUIPlugin.getInstance().getImage("jar_obj");
+		} 
+		if (element instanceof IProject){
+			return ModuleCoreUIPlugin.getInstance().getImage("prj_obj");
+		}
 		return null;
 	}
 
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 1933797..210883d 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
@@ -142,13 +142,17 @@
 		composite.setLayout(layout);
 		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
 		ModuleAssemblyRootPage.createDescriptionComposite(composite,
-				Messages.ModuleAssemblyRootPageDescription);
+				getModuleAssemblyRootPageDescription());
 		createListGroup(composite);
 		refresh();
 		Dialog.applyDialogFont(parent);
 		return composite;
 	}
 
+	protected String getModuleAssemblyRootPageDescription() {
+		return Messages.ModuleAssemblyRootPageDescription;
+	}
+
 	protected void createListGroup(Composite parent) {
 		Composite listGroup = new Composite(parent, SWT.NONE);
 		GridLayout layout = new GridLayout();
@@ -193,10 +197,26 @@
 	}
 
 	protected void createPushButtons() {
-		addMappingButton = createPushButton(Messages.AddFolderElipses);
-		addReferenceButton = createPushButton(Messages.AddReference);
-		editReferenceButton = createPushButton(Messages.EditReference);
-		removeButton = createPushButton(Messages.RemoveSelected);
+		addMappingButton = createPushButton(getAddFolderLabel());
+		addReferenceButton = createPushButton(getAddReferenceLabel());
+		editReferenceButton = createPushButton(getEditReferenceLabel());
+		removeButton = createPushButton(getRemoveSelectedLabel());
+	}
+
+	protected String getRemoveSelectedLabel() {
+		return Messages.RemoveSelected;
+	}
+
+	protected String getEditReferenceLabel() {
+		return Messages.EditReference;
+	}
+
+	protected String getAddReferenceLabel() {
+		return Messages.AddReference;
+	}
+
+	protected String getAddFolderLabel() {
+		return Messages.AddFolderElipses;
 	}
 
 	protected Button createPushButton(String label) {
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 d4bc70b..725c4c8 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
@@ -50,4 +50,10 @@
 	 * @return
 	 */
 	public Composite createRootControl(IFacetedProject project, IModuleDependenciesControl[] pages, Composite parent);
+
+	/**
+	 * 
+	 * @return String - page title string or null if default title is desired
+	 */
+	public String getPageTitle();
 }
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 20ca63c..4dd3123 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
@@ -158,6 +158,8 @@
 				if( provider != null ) {
 					controls = provider.createPages(facetedProject, this);
 					controls = controls == null ? new IModuleDependenciesControl[]{} : controls;
+					if (provider.getPageTitle() != null)
+						setTitle(provider.getPageTitle());
 					return provider.createRootControl(facetedProject, controls, parent);
 				}
 				
