diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index ec1dd169a38b1fbb38dc72298a98b765c124c942..938a48f4b341caa777a7de563b76021a1d6e5232 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -1191,7 +1191,7 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
             for (Long l : deleteQueue) {
                 Device dev = deviceMap.get(l);
                 this.deleteDevice(dev);
-                deviceMap.remove(l);
+                
 
                 // generate new device update
                 deviceUpdates =
@@ -1403,7 +1403,7 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
     	Iterator<Device> diter = deviceMap.values().iterator();
     	while (diter.hasNext()) {
             Device d = diter.next();
-            if (d.getEntityClass() != null && 
+            if (d.getEntityClass() == null ||
             		entityClassNames.contains(d.getEntityClass().getName()))
             	reclassifyDevice(d);
     	}
@@ -1673,7 +1673,7 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
     		}
     		if (entityClass != null && device.getEntityClass() != null) {
     			if (entityClass.getName().
-    					contentEquals(device.getEntityClass().getName())) {
+    					equals(device.getEntityClass().getName())) {
     				entitiesRetained.add(entity);
     			} else {
     				entitiesRemoved.add(entity);
@@ -1702,7 +1702,7 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
 
     	if (entitiesRetained.isEmpty()) {
     		this.deleteDevice(device);
-    		deviceMap.remove(device);
+    		
     		deviceUpdates.add(new DeviceUpdate(device, 
     				DeviceUpdate.Change.DELETE, null
     				));