diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
index afbbb57d4e822d25fb991ba11f5f24844ef54d7d..780e56f3efe539536d929bf9a31e5fe5842f0b8d 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Device.java
@@ -37,6 +37,7 @@ import net.floodlightcontroller.devicemanager.IDevice;
 import net.floodlightcontroller.devicemanager.IEntityClass;
 import net.floodlightcontroller.devicemanager.SwitchPort;
 import net.floodlightcontroller.packet.Ethernet;
+import net.floodlightcontroller.packet.IPv4;
 import net.floodlightcontroller.topology.ITopologyService;
 
 /**
@@ -486,7 +487,22 @@ public class Device implements IDevice {
 
     @Override
     public String toString() {
-        return "Device [entityClass=" + entityClass.getName() +
-                " entities=" + Arrays.toString(entities) + "]";
+        StringBuilder builder = new StringBuilder();
+        builder.append("Device [entityClass=");
+        builder.append(entityClass.getName());
+        builder.append(", MAC=");
+        builder.append(macAddressString);
+        builder.append(", IPs=[");
+        boolean isFirst = true;
+        for (Integer ip: getIPv4Addresses()) {
+            if (!isFirst)
+                builder.append(", ");
+            isFirst = false;
+            builder.append(IPv4.fromIPv4Address(ip));
+        }
+        builder.append("], APs=");
+        builder.append(Arrays.toString(getAttachmentPoints(true)));
+        builder.append("]");
+        return builder.toString();
     }
 }
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
index e1e19a6c997517d6eda26582755565b158a2f504..544e8b9bd63a08e0939a94f59aa2b0be4ac34c8d 100755
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java
@@ -228,6 +228,15 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
             this.change = change;
             this.fieldsChanged = fieldsChanged;
         }
+
+        @Override
+        public String toString() {
+            String devIdStr = device.getEntityClass().getName() + "::" +
+                    device.getMACAddressString();
+            return "DeviceUpdate [device=" + devIdStr + ", change=" + change
+                   + ", fieldsChanged=" + fieldsChanged + "]";
+        }
+        
     }
 
     /**
@@ -593,14 +602,18 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
             // Find the device matching the destination from the entity
             // classes of the source.
             Entity dstEntity = getEntityFromFlowMod(ofm.ofmWithSwDpid, false);
-            logger.trace("DeviceManager dstEntity {}", dstEntity);
+            Device dstDevice = null;
             if (dstEntity != null) {
-                Device dstDevice =
-                        findDestByEntity(srcDevice, dstEntity);
-                logger.trace("DeviceManager dstDevice {}", dstDevice);
+                dstDevice = findDestByEntity(srcDevice, dstEntity);
                 if (dstDevice != null)
                     fcStore.put(ofm.cntx, CONTEXT_DST_DEVICE, dstDevice);
             }
+            if (logger.isTraceEnabled()) {
+                logger.trace("Reconciling flow: match={}, srcDev={}, " 
+                		     + "dstEntity={}, dstDev={}",
+                		     new Object[] { ofm.ofmWithSwDpid, srcDevice, 
+                		                    dstEntity, dstDevice } );
+            }
         }
         return Command.CONTINUE;
     }
@@ -1221,6 +1234,9 @@ IFlowReconcileListener, IInfoProvider, IHAListener {
         if (updates == null) return;
         DeviceUpdate update = null;
         while (null != (update = updates.poll())) {
+            if (logger.isTraceEnabled()) {
+                logger.trace("Dispatching device update: {}", update);
+            }
             for (IDeviceListener listener : deviceListeners) {
                 switch (update.change) {
                     case ADD:
diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java
index 8496f0a8e4f9a5e4b670969599e98f04adacb218..5904a6108fde23831647e0ea10d7cc0065fe51c1 100644
--- a/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java
+++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/Entity.java
@@ -211,12 +211,28 @@ public class Entity implements Comparable<Entity> {
         return true;
     }
 
+    
+    
     @Override
     public String toString() {
-        return "Entity [macAddress=" + HexString.toHexString(macAddress, 6)
-               + ", ipv4Address="
-               + IPv4.fromIPv4Address(ipv4Address==null ? 0 : ipv4Address.intValue()) + ", vlan=" + vlan + ", switchDPID="
-               + switchDPID + ", switchPort=" + switchPort + "]";
+        StringBuilder builder = new StringBuilder();
+        builder.append("Entity [macAddress=");
+        builder.append(HexString.toHexString(macAddress, 6));
+        builder.append(", ipv4Address=");
+        builder.append(IPv4.fromIPv4Address(ipv4Address==null ?
+                       0 : ipv4Address.intValue()));
+        builder.append(", vlan=");
+        builder.append(vlan);
+        builder.append(", switchDPID=");
+        builder.append(switchDPID);
+        builder.append(", switchPort=");
+        builder.append(switchPort);
+        builder.append(", lastSeenTimestamp=");
+        builder.append(lastSeenTimestamp.getTime());
+        builder.append(", activeSince=");
+        builder.append(activeSince.getTime());
+        builder.append("]");
+        return builder.toString();
     }
 
     @Override