diff --git a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
index 4624617..15aed60 100644
--- a/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/apps/forwarding/Forwarding.java
@@ -93,7 +93,7 @@
 
     private final Object lock = new Object();
 
-    private class PacketToPush {
+    private static class PacketToPush {
         public final OFPacketOut packet;
         public final long dpid;
 
@@ -103,7 +103,7 @@
         }
     }
 
-    private class PushedFlow {
+    private static class PushedFlow {
         public final String intentId;
         public boolean installed = false;
         public short firstOutPort;
@@ -113,7 +113,7 @@
         }
     }
 
-    private final class Path {
+    private static final class Path {
         public final MACAddress srcMac;
         public final MACAddress dstMac;
 
@@ -228,7 +228,7 @@
     public Command receive(
             IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
 
-        if (msg.getType() != OFType.PACKET_IN) {
+        if (msg.getType() != OFType.PACKET_IN || !(msg instanceof OFPacketIn)) {
             return Command.CONTINUE;
         }
 
diff --git a/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java b/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java
index c0b56a7..a3cbb28 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/PacketOutNotification.java
@@ -1,6 +1,7 @@
 package net.onrc.onos.apps.proxyarp;
 
 import java.io.Serializable;
+import java.util.Arrays;
 
 /**
  * A PacketOutNotification contains data sent between ONOS instances that
@@ -24,6 +25,6 @@
     }
 
     public PacketOutNotification(byte[] packet) {
-        this.packet = packet;
+        this.packet = Arrays.copyOf(packet, packet.length);
     }
 }
diff --git a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
index 4691149..017b260 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -434,6 +434,9 @@
 
     @Override
     public Command receive(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
+        if (!(msg instanceof OFPacketIn)) {
+            return Command.CONTINUE;
+        }
 
         OFPacketIn pi = (OFPacketIn) msg;
 
@@ -642,10 +645,17 @@
 
         byte[] senderIPAddress = zeroIpv4;
         Interface intf = configService.getOutgoingInterface(ipAddress);
-        if (intf != null) {
-            senderIPAddress = intf.getIpAddress().getAddress();
+        if (intf == null) {
+            // TODO handle the case where the controller needs to send an ARP
+            // request but there's not IP configuration. In this case the
+            // request should be broadcast out all edge ports in the network.
+            log.warn("Sending ARP requests with default configuration "
+                    + "not supported");
+            return;
         }
 
+        senderIPAddress = intf.getIpAddress().getAddress();
+
         arpRequest.setSenderProtocolAddress(senderIPAddress);
 
         Ethernet eth = new Ethernet();
