diff --git a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
index 4d261a2..426a455 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
@@ -250,9 +250,10 @@
                 IFloodlightProviderService.CONTEXT_PI_PAYLOAD);
 		
 		if (eth.getEtherType() == Ethernet.TYPE_ARP){
-			ARP arp = (ARP) eth.getPayload();
-			log.debug("etharp {}", arp);	
+			log.debug("is arp");
+			ARP arp = (ARP) eth.getPayload();	
 			if (arp.getOpCode() == ARP.OP_REQUEST) {
+				log.debug("is request");
 				//TODO check what the DeviceManager does about propagating
 				//or swallowing ARPs. We want to go after DeviceManager in the
 				//chain but we really need it to CONTINUE ARP packets so we can
@@ -260,6 +261,7 @@
 				handleArpRequest(sw, pi, arp, eth);
 			}
 			else if (arp.getOpCode() == ARP.OP_REPLY) {
+				log.debug("is reply");
 				//handleArpReply(sw, pi, arp);
 			}
 		}
@@ -299,14 +301,6 @@
 		
 		//MACAddress macAddress = arpCache.lookup(target);
 		
-		//IDevice dstDevice = deviceService.fcStore.get(cntx, IDeviceService.CONTEXT_DST_DEVICE);
-		//Iterator<? extends IDevice> it = deviceService.queryDevices(
-				//null, null, InetAddresses.coerceToInteger(target), null, null);
-		
-		//IDevice targetDevice = null;
-		//if (it.hasNext()) {
-			//targetDevice = it.next();
-		//}
 		IDeviceObject targetDevice = 
 				deviceStorage.getDeviceByIP(InetAddresses.coerceToInteger(target));
 		
@@ -333,7 +327,7 @@
 			arpRequests.put(target, new ArpRequest(
 					new HostArpRequester(arp, sw.getId(), pi.getInPort()), false));
 			
-			sendArpRequestToEdge(eth, pi);
+			sendToOtherNodes(eth, pi);
 		}
 		
 		/*if (macAddress == null){
@@ -479,25 +473,13 @@
 		}
 	}
 	
-	private void sendArpRequestToEdge(Ethernet arpRequest, OFPacketIn pi) {
-		// Pull the topology from the network map and find edge ports
-		/*for (ISwitchObject swObject : topoSwitchService.getActiveSwitches()) {
-			//List<Link> linksOnSwitch = topoLinkService.getLinksOnSwitch(swObject.getDPID());
-			
-			Set<IPortObject> edgePorts = new HashSet<IPortObject>();
-			
-			for (IPortObject portObject : swObject.getPorts()) {
-				if (!portObject.getLinkedPorts().iterator().hasNext()) {
-					edgePorts.add(portObject);
-				}
-			}
-			
-			
-		}*/
-		//log.debug("Sending ARP request for {} to other ONOS instances",
-				//HexString.toHexString(arpRequest.getTargetProtocolAddress()));
-		//log.debug("Sent request bytes: {}", );
-		datagrid.sendArpRequest(arpRequest.serialize());
+	private void sendToOtherNodes(Ethernet eth, OFPacketIn pi) {
+		ARP arp = (ARP) eth.getPayload();
+		if (log.isTraceEnabled()) {
+			log.trace("Sending ARP request for {} to other ONOS instances",
+					HexString.toHexString(arp.getTargetProtocolAddress()));
+		}
+		datagrid.sendArpRequest(eth.serialize());
 	}
 	
 	private void broadcastArpRequestOutEdge(byte[] arpRequest, long inSwitch, short inPort) {
