[104008]commited for NA
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java
index 1892075..1fe13ef 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/builder/DependencyGraphManager.java
@@ -123,6 +123,7 @@
 	 * singleton manager method.
 	 */ 
 	public DependencyGraph getDependencyGraph() {
+		constructIfNecessary();
 		return DependencyGraph.getInstance();
 	}
 }
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java
index 57e3b28..4f8a679 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/operation/RemoveReferenceComponentOperation.java
@@ -62,9 +62,14 @@
     
 		for (int i = 0; i < modList.size(); i++) {
 			ComponentHandle handle = (ComponentHandle) modList.get(i);
-			IVirtualComponent comp = ComponentCore.createComponent(handle.getProject(), handle.getName());
-			if (Arrays.asList(comp.getReferencingComponents()).contains(sourceComp)) {
-				removeRefereneceInComponent(sourceComp,sourceComp.getReference(comp.getName()));
+			IVirtualReference ref = sourceComp.getReference(handle.getName());
+			if( ref != null && ref.getReferencedComponent() != null && ref.getReferencedComponent().isBinary()){
+				removeRefereneceInComponent(sourceComp, ref);
+			}else{
+				IVirtualComponent comp = ComponentCore.createComponent(handle.getProject(), handle.getName());
+				if (Arrays.asList(comp.getReferencingComponents()).contains(sourceComp)) {
+					removeRefereneceInComponent(sourceComp,sourceComp.getReference(comp.getName()));
+				}					
 			}
 		}
 		
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java
index a043e29..fcb6c3a 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/resources/VirtualArchiveComponent.java
@@ -180,4 +180,11 @@
 	public String getArchiveType(){
 		return archiveType;
 	}
+	public boolean equals(Object anOther) { 
+		if(anOther instanceof VirtualArchiveComponent) {
+			VirtualArchiveComponent otherComponent = (VirtualArchiveComponent) anOther;
+			return getProject().equals(otherComponent.getProject()) && getName().equals(otherComponent.getName());
+		}
+		return false;
+	}	
 }