diff --git a/LICENSE b/LICENSE
index d645695..21d586b 100644
--- a/LICENSE
+++ b/LICENSE
@@ -200,3 +200,8 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
+
+
+This product bundles SLF4J 1.6.1(http://www.slf4j.org/) , which is available
+under a "MIT" license(http://www.slf4j.org/license.html).  For details,
+see POM.xml
diff --git a/NOTICE b/NOTICE
index bea83bd..8c33548 100644
--- a/NOTICE
+++ b/NOTICE
@@ -5,19 +5,3 @@
 The Apache Software Foundation (http://www.apache.org/).
 
 
--------------------
-
-Eclipse Icon
-
-website: http://tech.joelbecker.net/articles/resources/5-eclipseicons
-license: Eclipse Public License v 1.0 (www.eclipse.org/legal/epl-v10.html)
-
--------------------
-
-SLF4J
-
-website: http://www.slf4j.org/
-license: MIT (http://www.slf4j.org/license.html)
-
--------------------
-
diff --git a/org.apache.hdt.ui/icons/delete.gif b/org.apache.hdt.ui/icons/delete.gif
deleted file mode 100644
index 0ae6dec..0000000
--- a/org.apache.hdt.ui/icons/delete.gif
+++ /dev/null
Binary files differ
diff --git a/org.apache.hdt.ui/icons/download.png b/org.apache.hdt.ui/icons/download.png
deleted file mode 100644
index d9f1de8..0000000
--- a/org.apache.hdt.ui/icons/download.png
+++ /dev/null
Binary files differ
diff --git a/org.apache.hdt.ui/icons/ovr/read_only.gif b/org.apache.hdt.ui/icons/ovr/read_only.gif
deleted file mode 100644
index dde3cbd..0000000
--- a/org.apache.hdt.ui/icons/ovr/read_only.gif
+++ /dev/null
Binary files differ
diff --git a/org.apache.hdt.ui/icons/ovr/waiting_ovr.gif b/org.apache.hdt.ui/icons/ovr/waiting_ovr.gif
deleted file mode 100644
index 7fe2476..0000000
--- a/org.apache.hdt.ui/icons/ovr/waiting_ovr.gif
+++ /dev/null
Binary files differ
diff --git a/org.apache.hdt.ui/icons/ovr/zookeeper_ephermeral.gif b/org.apache.hdt.ui/icons/ovr/zookeeper_ephermeral.gif
deleted file mode 100644
index 7fe2476..0000000
--- a/org.apache.hdt.ui/icons/ovr/zookeeper_ephermeral.gif
+++ /dev/null
Binary files differ
diff --git a/org.apache.hdt.ui/icons/upload.png b/org.apache.hdt.ui/icons/upload.png
deleted file mode 100644
index 38cf1cc..0000000
--- a/org.apache.hdt.ui/icons/upload.png
+++ /dev/null
Binary files differ
diff --git a/org.apache.hdt.ui/plugin.xml b/org.apache.hdt.ui/plugin.xml
index 7bc1a36..aa8bf93 100644
--- a/org.apache.hdt.ui/plugin.xml
+++ b/org.apache.hdt.ui/plugin.xml
@@ -331,7 +331,7 @@
          </action>
          <action
                class="org.apache.hdt.ui.internal.zookeeper.DeleteAction"
-               icon="icons/delete.gif"
+               icon="IMG_TOOL_DELETE"
                id="org.apache.hdt.ui.team.zookeeper.node.DeleteContribution"
                label="Delete"
                menubarPath="additions">
@@ -355,7 +355,7 @@
          </action>
          <action
                class="org.apache.hdt.ui.internal.zookeeper.DeleteAction"
-               icon="icons/delete.gif"
+               icon="IMG_TOOL_DELETE"
                id="org.apache.hdt.ui.team.zookeeper.node.DeleteContribution"
                label="Delete"
                menubarPath="additions">
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/Activator.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/Activator.java
index 99d7105..1ba7a0a 100644
--- a/org.apache.hdt.ui/src/org/apache/hdt/ui/Activator.java
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/Activator.java
@@ -23,6 +23,8 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
@@ -104,32 +106,29 @@
 
 	private void loadImages() {
 		Bundle bundle = getDefault().getBundle();
-		URL remoteFileUrl = FileLocator.find(bundle, new Path("/icons/ovr/remote_resource.gif"), null);
 		URL localFileUrl = FileLocator.find(bundle, new Path("/icons/ovr/local_resource.gif"), null);
 		URL incomingUrl = FileLocator.find(bundle, new Path("/icons/ovr/overlay-incoming.gif"), null);
 		URL outgoingUrl = FileLocator.find(bundle, new Path("/icons/ovr/overlay-outgoing.gif"), null);
-		URL waitingUrl = FileLocator.find(bundle, new Path("/icons/ovr/waiting_ovr.gif"), null);
 		URL hdfsUrl = FileLocator.find(bundle, new Path("/icons/hadoop-hdfs-16x16.gif"), null);
 		URL zookeeperUrl = FileLocator.find(bundle, new Path("/icons/hadoop-zookeeper-16x16.png"), null);
 		URL zookeeperNodeUrl = FileLocator.find(bundle, new Path("/icons/zookeeper_node.png"), null);
 		URL hadoopUrl = FileLocator.find(bundle, new Path("/icons/hadoop-logo-16x16.png"), null);
-		URL readonlyUrl = FileLocator.find(bundle, new Path("/icons/ovr/read_only.gif"), null);
 		URL offlineUrl = FileLocator.find(bundle, new Path("/icons/ovr/offline.png"), null);
 		URL onlineUrl = FileLocator.find(bundle, new Path("/icons/ovr/online.png"), null);
-		URL zookeeperEphermeralUrl = FileLocator.find(bundle, new Path("/icons/ovr/zookeeper_ephermeral.gif"), null);
 		
-		IMAGE_REMOTE_OVR = ImageDescriptor.createFromURL(remoteFileUrl);
+		ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
+		IMAGE_REMOTE_OVR = sharedImages.getImageDescriptor(org.eclipse.team.ui.ISharedImages.IMG_CHECKEDIN_OVR);
 		IMAGE_LOCAL_OVR = ImageDescriptor.createFromURL(localFileUrl);
 		IMAGE_INCOMING_OVR = ImageDescriptor.createFromURL(incomingUrl);
 		IMAGE_OUTGOING_OVR = ImageDescriptor.createFromURL(outgoingUrl);
-		IMAGE_SYNC_OVR = ImageDescriptor.createFromURL(waitingUrl);
+		IMAGE_SYNC_OVR = sharedImages.getImageDescriptor(org.eclipse.team.ui.ISharedImages.IMG_HOURGLASS_OVR);
 		IMAGE_HDFS = ImageDescriptor.createFromURL(hdfsUrl).createImage();
 		IMAGE_HADOOP = ImageDescriptor.createFromURL(hadoopUrl);
-		IMAGE_READONLY_OVR = ImageDescriptor.createFromURL(readonlyUrl);
+		IMAGE_READONLY_OVR = sharedImages.getImageDescriptor(ISharedImages.IMG_ETOOL_SAVE_EDIT_DISABLED);
 		IMAGE_OFFLINE_OVR = ImageDescriptor.createFromURL(offlineUrl);
 		IMAGE_ONLINE_OVR = ImageDescriptor.createFromURL(onlineUrl);
 		IMAGE_ZOOKEEPER = ImageDescriptor.createFromURL(zookeeperUrl).createImage();
 		IMAGE_ZOOKEEPER_NODE = ImageDescriptor.createFromURL(zookeeperNodeUrl).createImage();
-		IMAGE_ZOOKEEPER_EPHERMERAL = ImageDescriptor.createFromURL(zookeeperEphermeralUrl);
+		IMAGE_ZOOKEEPER_EPHERMERAL =  sharedImages.getImageDescriptor(org.eclipse.team.ui.ISharedImages.IMG_HOURGLASS_OVR);
 	}
 }
diff --git a/org.apache.hdt.ui/src/org/apache/hdt/ui/ImageLibrary.java b/org.apache.hdt.ui/src/org/apache/hdt/ui/ImageLibrary.java
index b4017cd..b6d9a1a 100644
--- a/org.apache.hdt.ui/src/org/apache/hdt/ui/ImageLibrary.java
+++ b/org.apache.hdt.ui/src/org/apache/hdt/ui/ImageLibrary.java
@@ -116,9 +116,9 @@
 		newSharedImage("dfs.file.editor", ISharedImages.IMG_OBJ_FILE);
 		// Actions
 		newImage("dfs.browser.action.mkdir", "new-folder.png");
-		newImage("dfs.browser.action.download", "download.png");
-		newImage("dfs.browser.action.upload_files", "upload.png");
-		newImage("dfs.browser.action.upload_dir", "upload.png");
+		newImage("dfs.browser.action.download", "download.gif");
+		newImage("dfs.browser.action.upload_files", "upload.gif");
+		newImage("dfs.browser.action.upload_dir", "upload.gif");
 		newSharedImage("dfs.browser.action.delete", ISharedImages.IMG_TOOL_DELETE);
 		newImage("dfs.browser.action.refresh", "refresh.png");
 
