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 183703c..53a2b5d 100644
--- a/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/apps/proxyarp/ProxyArpManager.java
@@ -28,7 +28,7 @@
 import net.onrc.onos.core.packet.ARP;
 import net.onrc.onos.core.packet.Ethernet;
 import net.onrc.onos.core.packet.IPv4;
-import net.onrc.onos.core.topology.Device;
+import net.onrc.onos.core.topology.Host;
 import net.onrc.onos.core.topology.ITopologyService;
 import net.onrc.onos.core.topology.Port;
 import net.onrc.onos.core.topology.Switch;
@@ -433,11 +433,11 @@
                 new HostArpRequester(arp, dpid, inPort), false));
 
         topology.acquireReadLock();
-        Device targetDevice = topology.getDeviceByMac(
+        Host targetHost = topology.getHostByMac(
                 MACAddress.valueOf(arp.getTargetHardwareAddress()));
         topology.releaseReadLock();
 
-        if (targetDevice == null) {
+        if (targetHost == null) {
             if (log.isTraceEnabled()) {
                 log.trace("No device info found for {} - broadcasting",
                         target.getHostAddress());
@@ -452,7 +452,7 @@
             MACAddress macAddress = MACAddress.valueOf(arp.getTargetHardwareAddress());
 
             if (log.isTraceEnabled()) {
-                log.trace("The target Device Record in DB is: {} => {} " +
+                log.trace("The target Host Record in DB is: {} => {} " +
                         "from ARP request host at {}/{}", new Object[]{
                                 inetAddressToString(arp.getTargetProtocolAddress()),
                                 macAddress, HexString.toHexString(dpid), inPort});
@@ -460,11 +460,11 @@
 
             // sendArpReply(arp, sw.getId(), pi.getInPort(), macAddress);
 
-            Iterable<Port> outPorts = targetDevice.getAttachmentPoints();
+            Iterable<Port> outPorts = targetHost.getAttachmentPoints();
 
             if (!outPorts.iterator().hasNext()) {
                 if (log.isTraceEnabled()) {
-                    log.trace("Device {} exists but is not connected to any ports" +
+                    log.trace("Host {} exists but is not connected to any ports" +
                             " - broadcasting", macAddress);
                 }
 
