diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java b/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java
index e0e0691..45753f9 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java
@@ -2091,7 +2091,7 @@
                     + getSwitchInfoString()
                     + "state " + this.state, e.getCause());
             counters.switchDisconnectOtherException.updateCounterWithFlush();
-            ctx.getChannel().close();
+            ctx.getChannel().close(); // NPE's land here.
         }
     }
 
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
index 094eef0..236ed06 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImplBase.java
@@ -67,6 +67,8 @@
 import org.projectfloodlight.openflow.protocol.OFFactory;
 import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
 import org.projectfloodlight.openflow.protocol.OFFlowDelete.Builder;
+import org.projectfloodlight.openflow.protocol.OFFlowStatsEntry;
+import org.projectfloodlight.openflow.protocol.OFFlowStatsReply;
 import org.projectfloodlight.openflow.protocol.OFMessage;
 import org.projectfloodlight.openflow.protocol.OFPortConfig;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
@@ -76,8 +78,10 @@
 import org.projectfloodlight.openflow.protocol.OFPortStatus;
 import org.projectfloodlight.openflow.protocol.OFStatsReply;
 import org.projectfloodlight.openflow.protocol.OFStatsRequest;
+import org.projectfloodlight.openflow.protocol.OFStatsType;
 import org.projectfloodlight.openflow.protocol.OFType;
 import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.protocol.match.MatchField;
 import org.projectfloodlight.openflow.types.DatapathId;
 import org.projectfloodlight.openflow.types.OFAuxId;
 import org.projectfloodlight.openflow.types.OFGroup;
@@ -1081,6 +1085,29 @@
         return future;
     }
 
+    @SuppressWarnings("unused")
+    private void analyzeStatsReply(OFMessage reply) {
+        log.info("recieved stats reply (xid = {} type: {}) from sw {} ",
+                reply.getXid(), reply.getType(), getStringId());
+        if (reply.getType() == OFType.STATS_REPLY) {
+            OFStatsReply sr = (OFStatsReply) reply;
+            if (sr.getStatsType() == OFStatsType.FLOW) {
+                OFFlowStatsReply fsr = (OFFlowStatsReply) sr;
+                log.info("received flow stats sw {} --> {}", getStringId(), fsr);
+                // fsr.getEntries().get(0).getMatch().getMatchFields()
+                for (OFFlowStatsEntry e : fsr.getEntries()) {
+                    for (MatchField<?> mf : e.getMatch().getMatchFields()) {
+                        log.info("mf is exact: {} for {}: {}",
+                                e.getMatch().isExact(mf),
+                                mf.id,
+                                e.getMatch().get(mf));
+                    }
+                }
+
+            }
+        }
+    }
+
     @Override
     public void deliverStatisticsReply(OFMessage reply) {
         OFStatisticsFuture future = this.statsFutureMap.get((int) reply.getXid());
