Replaced IpPrefix and IpAddress in the following methods
and cleanup related code:

 - Host.ipAddresses()
 - DefaultHost.ipAddresses()
 - HostDescription.ipAddress()
 - DefaultHostDescription.ipAddress()
 - HostService.getHostsByIp()
 - HostManager.getHostsByIp()
 - HostStore.getHosts()
 - GossipHostStore.getHosts()
 - SimpleHostStore.getHosts()
 - ProxyArpService.known()
 - ProxyArpManager.known()

As a result of the above cleanup, the "hosts" CLI command outputs
the IP addresses as "1.2.3.4" instead of "1.2.3.4/32".

Also, the following REST calls might be affected as well with
the above format replacement:
  - REST POST: config/topology
  - REST GET: topology/graph
diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
index 0907cd6..4e3415b 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/Router.java
@@ -520,8 +520,7 @@
 
         // See if we know the MAC address of the next hop
         MacAddress nextHopMacAddress = null;
-        Set<Host> hosts = hostService.getHostsByIp(
-                routeEntry.nextHop().toPrefix());
+        Set<Host> hosts = hostService.getHostsByIp(routeEntry.nextHop());
         if (!hosts.isEmpty()) {
             // TODO how to handle if multiple hosts are returned?
             nextHopMacAddress = hosts.iterator().next().mac();
@@ -773,8 +772,8 @@
             if (event.type() == HostEvent.Type.HOST_ADDED ||
                     event.type() == HostEvent.Type.HOST_UPDATED) {
                 Host host = event.subject();
-                for (IpPrefix ip : host.ipAddresses()) {
-                    updateMac(ip.toIpAddress(), host.mac());
+                for (IpAddress ip : host.ipAddresses()) {
+                    updateMac(ip, host.mac());
                 }
             }
         }
diff --git a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTest.java b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTest.java
index 13547ae..7bc9473 100644
--- a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTest.java
+++ b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTest.java
@@ -197,27 +197,27 @@
         hostService.addListener(anyObject(HostListener.class));
         expectLastCall().anyTimes();
 
-        IpPrefix host1Address = IpPrefix.valueOf("192.168.10.1/32");
+        IpAddress host1Address = IpAddress.valueOf("192.168.10.1");
         Host host1 = new DefaultHost(ProviderId.NONE, HostId.NONE,
                 MacAddress.valueOf("00:00:00:00:00:01"), VlanId.NONE,
                 new HostLocation(SW1_ETH1, 1),
-                        Sets.newHashSet(host1Address));
+                Sets.newHashSet(host1Address));
 
         expect(hostService.getHostsByIp(host1Address))
                 .andReturn(Sets.newHashSet(host1)).anyTimes();
-        hostService.startMonitoringIp(host1Address.toIpAddress());
+        hostService.startMonitoringIp(host1Address);
         expectLastCall().anyTimes();
 
 
-        IpPrefix host2Address = IpPrefix.valueOf("192.168.20.1/32");
+        IpAddress host2Address = IpAddress.valueOf("192.168.20.1");
         Host host2 = new DefaultHost(ProviderId.NONE, HostId.NONE,
                 MacAddress.valueOf("00:00:00:00:00:02"), VlanId.NONE,
                 new HostLocation(SW2_ETH1, 1),
-                        Sets.newHashSet(host2Address));
+                Sets.newHashSet(host2Address));
 
         expect(hostService.getHostsByIp(host2Address))
                 .andReturn(Sets.newHashSet(host2)).anyTimes();
-        hostService.startMonitoringIp(host2Address.toIpAddress());
+        hostService.startMonitoringIp(host2Address);
         expectLastCall().anyTimes();
 
 
diff --git a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTestWithAsyncArp.java b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTestWithAsyncArp.java
index c2e2019..d1c8b2a 100644
--- a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTestWithAsyncArp.java
+++ b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/RouterTestWithAsyncArp.java
@@ -184,7 +184,7 @@
 
         // Set up test expectation
         reset(hostService);
-        expect(hostService.getHostsByIp(anyObject(IpPrefix.class))).andReturn(
+        expect(hostService.getHostsByIp(anyObject(IpAddress.class))).andReturn(
                 new HashSet<Host>()).anyTimes();
         hostService.startMonitoringIp(IpAddress.valueOf("192.168.10.1"));
         replay(hostService);
@@ -203,7 +203,7 @@
                 new HostLocation(
                         SW1_ETH1.deviceId(),
                         SW1_ETH1.port(), 1),
-                        Sets.newHashSet(IpPrefix.valueOf("192.168.10.1/32")));
+                        Sets.newHashSet(IpAddress.valueOf("192.168.10.1")));
         internalHostListener.event(
                 new HostEvent(HostEvent.Type.HOST_ADDED, host));
 
@@ -266,7 +266,7 @@
 
         // Set up test expectation
         reset(hostService);
-        expect(hostService.getHostsByIp(anyObject(IpPrefix.class))).andReturn(
+        expect(hostService.getHostsByIp(anyObject(IpAddress.class))).andReturn(
                 new HashSet<Host>()).anyTimes();
         hostService.startMonitoringIp(IpAddress.valueOf("192.168.20.1"));
         replay(hostService);
@@ -286,7 +286,7 @@
                 new HostLocation(
                         SW2_ETH1.deviceId(),
                         SW2_ETH1.port(), 1),
-                        Sets.newHashSet(IpPrefix.valueOf("192.168.20.1/32")));
+                        Sets.newHashSet(IpAddress.valueOf("192.168.20.1")));
         internalHostListener.event(
                 new HostEvent(HostEvent.Type.HOST_ADDED, host));
 
diff --git a/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java b/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java
index 686455b..cc03459 100644
--- a/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java
+++ b/apps/tvue/src/main/java/org/onlab/onos/tvue/TopologyResource.java
@@ -34,7 +34,7 @@
 import org.onlab.onos.net.topology.TopologyGraph;
 import org.onlab.onos.net.topology.TopologyService;
 import org.onlab.onos.net.topology.TopologyVertex;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.rest.BaseResource;
 
 import javax.ws.rs.GET;
@@ -92,8 +92,8 @@
         // Merge the exterior and interior vertexes and inject host links as
         // the exterior edges.
         for (Host host : hostService.getHosts()) {
-            Set<IpPrefix> ipAddresses = host.ipAddresses();
-            IpPrefix ipAddress = ipAddresses.isEmpty() ? null : ipAddresses.iterator().next();
+            Set<IpAddress> ipAddresses = host.ipAddresses();
+            IpAddress ipAddress = ipAddresses.isEmpty() ? null : ipAddresses.iterator().next();
             String label = ipAddress != null ? ipAddress.toString() : host.mac().toString();
             vertexesNode.add(json(mapper, host.id(), 3, label, true));
             edgesNode.add(json(mapper, 1, host.location(), new ConnectPoint(host.id(), portNumber(-1))));
diff --git a/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java b/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java
index 0265116..ab7a1f3 100644
--- a/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java
+++ b/cli/src/main/java/org/onlab/onos/cli/net/HostsListCommand.java
@@ -27,7 +27,7 @@
 import org.onlab.onos.cli.Comparators;
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.host.HostService;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 
 import java.util.Collections;
 import java.util.List;
@@ -71,7 +71,7 @@
         ObjectNode loc = LinksListCommand.json(mapper, host.location())
                 .put("time", host.location().time());
         ArrayNode ips = mapper.createArrayNode();
-        for (IpPrefix ip : host.ipAddresses()) {
+        for (IpAddress ip : host.ipAddresses()) {
             ips.add(ip.toString());
         }
         ObjectNode result = mapper.createObjectNode()
diff --git a/core/api/src/main/java/org/onlab/onos/net/DefaultHost.java b/core/api/src/main/java/org/onlab/onos/net/DefaultHost.java
index cb2e292..d8d6c62 100644
--- a/core/api/src/main/java/org/onlab/onos/net/DefaultHost.java
+++ b/core/api/src/main/java/org/onlab/onos/net/DefaultHost.java
@@ -1,7 +1,7 @@
 package org.onlab.onos.net;
 
 import org.onlab.onos.net.provider.ProviderId;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -20,8 +20,7 @@
     private final MacAddress mac;
     private final VlanId vlan;
     private final HostLocation location;
-    // FIXME: should be IpAddress
-    private final Set<IpPrefix> ips;
+    private final Set<IpAddress> ips;
 
     /**
      * Creates an end-station host using the supplied information.
@@ -35,13 +34,13 @@
      * @param annotations optional key/value annotations
      */
     public DefaultHost(ProviderId providerId, HostId id, MacAddress mac,
-                       VlanId vlan, HostLocation location, Set<IpPrefix> ips,
+                       VlanId vlan, HostLocation location, Set<IpAddress> ips,
                        Annotations... annotations) {
         super(providerId, id, annotations);
         this.mac = mac;
         this.vlan = vlan;
         this.location = location;
-        this.ips = new HashSet<IpPrefix>(ips);
+        this.ips = new HashSet<>(ips);
     }
 
     @Override
@@ -55,7 +54,7 @@
     }
 
     @Override
-    public Set<IpPrefix> ipAddresses() {
+    public Set<IpAddress> ipAddresses() {
         return Collections.unmodifiableSet(ips);
     }
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/Host.java b/core/api/src/main/java/org/onlab/onos/net/Host.java
index 3a9bfa5..9d08591 100644
--- a/core/api/src/main/java/org/onlab/onos/net/Host.java
+++ b/core/api/src/main/java/org/onlab/onos/net/Host.java
@@ -1,6 +1,6 @@
 package org.onlab.onos.net;
 
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -38,8 +38,7 @@
      *
      * @return set of IP addresses; empty if no IP address is bound
      */
-    // FIXME: Switch to IpAddress
-    Set<IpPrefix> ipAddresses();
+    Set<IpAddress> ipAddresses();
 
     /**
      * Returns the most recent host location where the host attaches to the
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/DefaultHostDescription.java b/core/api/src/main/java/org/onlab/onos/net/host/DefaultHostDescription.java
index 71a952e..ae548e1 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/DefaultHostDescription.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/DefaultHostDescription.java
@@ -6,7 +6,7 @@
 import org.onlab.onos.net.AbstractDescription;
 import org.onlab.onos.net.HostLocation;
 import org.onlab.onos.net.SparseAnnotations;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -23,7 +23,7 @@
     private final MacAddress mac;
     private final VlanId vlan;
     private final HostLocation location;
-    private final Set<IpPrefix> ip;
+    private final Set<IpAddress> ip;
 
     /**
      * Creates a host description using the supplied information.
@@ -36,7 +36,8 @@
     public DefaultHostDescription(MacAddress mac, VlanId vlan,
                                   HostLocation location,
                                   SparseAnnotations... annotations) {
-        this(mac, vlan, location, Collections.<IpPrefix>emptySet(), annotations);
+        this(mac, vlan, location, Collections.<IpAddress>emptySet(),
+             annotations);
     }
 
     /**
@@ -49,7 +50,7 @@
      * @param annotations optional key/value annotations map
      */
     public DefaultHostDescription(MacAddress mac, VlanId vlan,
-                                  HostLocation location, IpPrefix ip,
+                                  HostLocation location, IpAddress ip,
                                   SparseAnnotations... annotations) {
         this(mac, vlan, location, ImmutableSet.of(ip), annotations);
     }
@@ -64,7 +65,7 @@
      * @param annotations optional key/value annotations map
      */
     public DefaultHostDescription(MacAddress mac, VlanId vlan,
-                                  HostLocation location, Set<IpPrefix> ip,
+                                  HostLocation location, Set<IpAddress> ip,
                                   SparseAnnotations... annotations) {
         super(annotations);
         this.mac = mac;
@@ -89,7 +90,7 @@
     }
 
     @Override
-    public Set<IpPrefix> ipAddress() {
+    public Set<IpAddress> ipAddress() {
         return ip;
     }
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/HostDescription.java b/core/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
index 258ce3d..c42dc03 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
@@ -4,7 +4,7 @@
 
 import org.onlab.onos.net.Description;
 import org.onlab.onos.net.HostLocation;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -39,7 +39,5 @@
      *
      * @return host IP address
      */
-    // FIXME: Switch to IpAddress
-    Set<IpPrefix> ipAddress();
-
+    Set<IpAddress> ipAddress();
 }
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/HostService.java b/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
index 09034eb..f18569f 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostService.java
@@ -7,7 +7,6 @@
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.HostId;
 import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -60,7 +59,7 @@
      * @param ip ip address
      * @return set of hosts with the given IP
      */
-    Set<Host> getHostsByIp(IpPrefix ip);
+    Set<Host> getHostsByIp(IpAddress ip);
 
     // TODO: consider adding Host getHostByIp(IpAddress ip, VlanId vlan);
 
diff --git a/core/api/src/main/java/org/onlab/onos/net/host/HostStore.java b/core/api/src/main/java/org/onlab/onos/net/host/HostStore.java
index b27b697..535479c8 100644
--- a/core/api/src/main/java/org/onlab/onos/net/host/HostStore.java
+++ b/core/api/src/main/java/org/onlab/onos/net/host/HostStore.java
@@ -6,7 +6,7 @@
 import org.onlab.onos.net.HostId;
 import org.onlab.onos.net.provider.ProviderId;
 import org.onlab.onos.store.Store;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -82,8 +82,7 @@
      * @param ip ip address
      * @return set of hosts with the given IP
      */
-    // FIXME: Switch to IpAddress
-    Set<Host> getHosts(IpPrefix ip);
+    Set<Host> getHosts(IpAddress ip);
 
     /**
      * Returns the set of hosts whose location falls on the given connection point.
diff --git a/core/api/src/main/java/org/onlab/onos/net/proxyarp/ProxyArpService.java b/core/api/src/main/java/org/onlab/onos/net/proxyarp/ProxyArpService.java
index 1e29a02..f49b5cf 100644
--- a/core/api/src/main/java/org/onlab/onos/net/proxyarp/ProxyArpService.java
+++ b/core/api/src/main/java/org/onlab/onos/net/proxyarp/ProxyArpService.java
@@ -3,7 +3,7 @@
 import org.onlab.onos.net.ConnectPoint;
 import org.onlab.onos.net.packet.PacketContext;
 import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 
 /**
  * Service for processing arp requests on behalf of applications.
@@ -17,7 +17,7 @@
      * @param addr a ip address
      * @return true if know, false otherwise
      */
-    boolean known(IpPrefix addr);
+    boolean known(IpAddress addr);
 
     /**
      * Sends a reply for a given request. If the host is not known then the arp
diff --git a/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java b/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java
index 6fc38e3..1d2e1af 100644
--- a/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java
+++ b/core/api/src/test/java/org/onlab/onos/net/NetTestTools.java
@@ -2,7 +2,7 @@
 
 import org.onlab.onos.net.provider.ProviderId;
 import org.onlab.packet.ChassisId;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -45,7 +45,7 @@
     public static Host host(String id, String did) {
         return new DefaultHost(PID, hid(id), valueOf(1234), vlanId((short) 2),
                                new HostLocation(did(did), portNumber(1), 321),
-                               new HashSet<IpPrefix>());
+                               new HashSet<IpAddress>());
     }
 
     // Short-hand for creating a connection point.
diff --git a/core/api/src/test/java/org/onlab/onos/net/TestDeviceParams.java b/core/api/src/test/java/org/onlab/onos/net/TestDeviceParams.java
index d24e1c8..7471a2d 100644
--- a/core/api/src/test/java/org/onlab/onos/net/TestDeviceParams.java
+++ b/core/api/src/test/java/org/onlab/onos/net/TestDeviceParams.java
@@ -5,7 +5,7 @@
 import java.util.Set;
 
 import org.onlab.onos.net.provider.ProviderId;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -24,9 +24,9 @@
     protected static final MacAddress MAC2 = MacAddress.valueOf("00:22:00:00:00:02");
     protected static final VlanId VLAN1 = VlanId.vlanId((short) 11);
     protected static final VlanId VLAN2 = VlanId.vlanId((short) 22);
-    protected static final IpPrefix IP1 = IpPrefix.valueOf("10.0.0.1");
-    protected static final IpPrefix IP2 = IpPrefix.valueOf("10.0.0.2");
-    protected static final IpPrefix IP3 = IpPrefix.valueOf("10.0.0.3");
+    protected static final IpAddress IP1 = IpAddress.valueOf("10.0.0.1");
+    protected static final IpAddress IP2 = IpAddress.valueOf("10.0.0.2");
+    protected static final IpAddress IP3 = IpAddress.valueOf("10.0.0.3");
 
     protected static final PortNumber P1 = PortNumber.portNumber(100);
     protected static final PortNumber P2 = PortNumber.portNumber(200);
@@ -34,7 +34,7 @@
     protected static final HostId HID2 = HostId.hostId(MAC2, VLAN2);
     protected static final HostLocation LOC1 = new HostLocation(DID1, P1, 123L);
     protected static final HostLocation LOC2 = new HostLocation(DID2, P2, 123L);
-    protected static final Set<IpPrefix> IPSET1 = Sets.newHashSet(IP1, IP2);
-    protected static final Set<IpPrefix> IPSET2 = Sets.newHashSet(IP1, IP3);
+    protected static final Set<IpAddress> IPSET1 = Sets.newHashSet(IP1, IP2);
+    protected static final Set<IpAddress> IPSET2 = Sets.newHashSet(IP1, IP3);
 
 }
diff --git a/core/api/src/test/java/org/onlab/onos/net/host/DefaultHostDecriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/host/DefaultHostDecriptionTest.java
index 2cd0edc..ec58b16 100644
--- a/core/api/src/test/java/org/onlab/onos/net/host/DefaultHostDecriptionTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/host/DefaultHostDecriptionTest.java
@@ -4,7 +4,7 @@
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.HostLocation;
 import org.onlab.onos.net.PortNumber;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -20,7 +20,7 @@
 
     private static final MacAddress MAC = MacAddress.valueOf("00:00:11:00:00:01");
     private static final VlanId VLAN = VlanId.vlanId((short) 10);
-    private static final IpPrefix IP = IpPrefix.valueOf("10.0.0.1");
+    private static final IpAddress IP = IpAddress.valueOf("10.0.0.1");
 
     private static final HostLocation LOC = new HostLocation(
             DeviceId.deviceId("of:foo"),
diff --git a/core/api/src/test/java/org/onlab/onos/net/host/HostEventTest.java b/core/api/src/test/java/org/onlab/onos/net/host/HostEventTest.java
index 92a5718..561b041 100644
--- a/core/api/src/test/java/org/onlab/onos/net/host/HostEventTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/host/HostEventTest.java
@@ -11,7 +11,7 @@
 import org.onlab.onos.net.HostLocation;
 import org.onlab.onos.net.PortNumber;
 import org.onlab.onos.net.provider.ProviderId;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -27,9 +27,9 @@
                     PortNumber.portNumber(100),
                     123L
                 );
-        Set<IpPrefix> ipset = Sets.newHashSet(
-                    IpPrefix.valueOf("10.0.0.1"),
-                    IpPrefix.valueOf("10.0.0.2")
+        Set<IpAddress> ipset = Sets.newHashSet(
+                    IpAddress.valueOf("10.0.0.1"),
+                    IpAddress.valueOf("10.0.0.2")
                 );
         HostId hid = HostId.hostId(mac, vlan);
 
diff --git a/core/api/src/test/java/org/onlab/onos/net/host/HostServiceAdapter.java b/core/api/src/test/java/org/onlab/onos/net/host/HostServiceAdapter.java
index 2394302..a8085eb 100644
--- a/core/api/src/test/java/org/onlab/onos/net/host/HostServiceAdapter.java
+++ b/core/api/src/test/java/org/onlab/onos/net/host/HostServiceAdapter.java
@@ -7,7 +7,6 @@
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.HostId;
 import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -41,7 +40,7 @@
     }
 
     @Override
-    public Set<Host> getHostsByIp(IpPrefix ip) {
+    public Set<Host> getHostsByIp(IpAddress ip) {
         return null;
     }
 
diff --git a/core/net/src/main/java/org/onlab/onos/net/host/impl/HostManager.java b/core/net/src/main/java/org/onlab/onos/net/host/impl/HostManager.java
index 4f9bcbb..e4d158d 100644
--- a/core/net/src/main/java/org/onlab/onos/net/host/impl/HostManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/host/impl/HostManager.java
@@ -33,7 +33,6 @@
 import org.onlab.onos.net.provider.AbstractProviderRegistry;
 import org.onlab.onos.net.provider.AbstractProviderService;
 import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.slf4j.Logger;
@@ -121,7 +120,7 @@
     }
 
     @Override
-    public Set<Host> getHostsByIp(IpPrefix ip) {
+    public Set<Host> getHostsByIp(IpAddress ip) {
         checkNotNull(ip, "IP address cannot be null");
         return store.getHosts(ip);
     }
diff --git a/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java b/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java
index a624c07..e92440f 100644
--- a/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java
+++ b/core/net/src/main/java/org/onlab/onos/net/host/impl/HostMonitor.java
@@ -129,10 +129,7 @@
     @Override
     public void run(Timeout timeout) throws Exception {
         for (IpAddress ip : monitoredAddresses) {
-            // TODO have to convert right now because the HostService API uses IpPrefix
-            IpPrefix prefix = IpPrefix.valueOf(ip.toOctets());
-
-            Set<Host> hosts = hostManager.getHostsByIp(prefix);
+            Set<Host> hosts = hostManager.getHostsByIp(ip);
 
             if (hosts.isEmpty()) {
                 sendArpRequest(ip);
diff --git a/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java b/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java
index 735c109..3ba1c8a 100644
--- a/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java
+++ b/core/net/src/main/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManager.java
@@ -99,7 +99,7 @@
     }
 
     @Override
-    public boolean known(IpPrefix addr) {
+    public boolean known(IpAddress addr) {
         checkNotNull(addr, MAC_ADDR_NULL);
         Set<Host> hosts = hostService.getHostsByIp(addr);
         return !hosts.isEmpty();
@@ -150,7 +150,7 @@
         // Continue with normal proxy ARP case
 
         VlanId vlan = VlanId.vlanId(eth.getVlanID());
-        Set<Host> hosts = hostService.getHostsByIp(IpPrefix.valueOf(arp
+        Set<Host> hosts = hostService.getHostsByIp(IpAddress.valueOf(arp
                 .getTargetProtocolAddress()));
 
         Host dst = null;
@@ -170,8 +170,7 @@
         }
 
         // TODO find the correct IP address
-        IpAddress ipAddress =
-            dst.ipAddresses().iterator().next().toIpAddress();
+        IpAddress ipAddress = dst.ipAddresses().iterator().next();
         Ethernet arpReply = buildArpReply(ipAddress, dst.mac(), eth);
         // TODO: check send status with host service.
         sendTo(arpReply, src.location());
diff --git a/core/net/src/test/java/org/onlab/onos/net/host/impl/HostManagerTest.java b/core/net/src/test/java/org/onlab/onos/net/host/impl/HostManagerTest.java
index c20da19..67e6cc4 100644
--- a/core/net/src/test/java/org/onlab/onos/net/host/impl/HostManagerTest.java
+++ b/core/net/src/test/java/org/onlab/onos/net/host/impl/HostManagerTest.java
@@ -58,8 +58,8 @@
     private static final HostId HID1 = HostId.hostId(MAC1, VLAN1);
     private static final HostId HID2 = HostId.hostId(MAC2, VLAN1);
 
-    private static final IpPrefix IP1 = IpPrefix.valueOf("10.0.0.1");
-    private static final IpPrefix IP2 = IpPrefix.valueOf("10.0.0.2");
+    private static final IpAddress IP1 = IpAddress.valueOf("10.0.0.1");
+    private static final IpAddress IP2 = IpAddress.valueOf("10.0.0.2");
 
     private static final DeviceId DID1 = DeviceId.deviceId("of:001");
     private static final DeviceId DID2 = DeviceId.deviceId("of:002");
@@ -115,7 +115,7 @@
     }
 
     private void detect(HostId hid, MacAddress mac, VlanId vlan,
-                        HostLocation loc, IpPrefix ip) {
+                        HostLocation loc, IpAddress ip) {
         HostDescription descr = new DefaultHostDescription(mac, vlan, loc, ip);
         providerService.hostDetected(hid, descr);
         assertNotNull("host should be found", mgr.getHost(hid));
diff --git a/core/net/src/test/java/org/onlab/onos/net/host/impl/HostMonitorTest.java b/core/net/src/test/java/org/onlab/onos/net/host/impl/HostMonitorTest.java
index 4b9d214..df211fb 100644
--- a/core/net/src/test/java/org/onlab/onos/net/host/impl/HostMonitorTest.java
+++ b/core/net/src/test/java/org/onlab/onos/net/host/impl/HostMonitorTest.java
@@ -46,9 +46,8 @@
 
 public class HostMonitorTest {
 
-    private IpAddress targetIpAddress = IpAddress.valueOf("10.0.0.1");
-    private IpPrefix targetIpPrefix = IpPrefix.valueOf(targetIpAddress.toOctets());
-
+    private static final IpAddress TARGET_IP_ADDR =
+        IpAddress.valueOf("10.0.0.1");
     private static final IpAddress SOURCE_ADDR =
         IpAddress.valueOf("10.0.0.99");
     private static final InterfaceIpAddress IA1 =
@@ -71,7 +70,7 @@
         replay(host);
 
         HostManager hostManager = createMock(HostManager.class);
-        expect(hostManager.getHostsByIp(targetIpPrefix))
+        expect(hostManager.getHostsByIp(TARGET_IP_ADDR))
                 .andReturn(Collections.singleton(host));
         replay(hostManager);
 
@@ -84,7 +83,7 @@
         hostMonitor = new HostMonitor(null, null, hostManager);
 
         hostMonitor.registerHostProvider(hostProvider);
-        hostMonitor.addMonitoringFor(targetIpAddress);
+        hostMonitor.addMonitoringFor(TARGET_IP_ADDR);
 
         hostMonitor.run(null);
 
@@ -115,7 +114,7 @@
         PortAddresses pa =
             new PortAddresses(cp, Collections.singleton(IA1), sourceMac);
 
-        expect(hostManager.getHostsByIp(targetIpPrefix))
+        expect(hostManager.getHostsByIp(TARGET_IP_ADDR))
                 .andReturn(Collections.<Host>emptySet()).anyTimes();
         expect(hostManager.getAddressBindingsForPort(cp))
                 .andReturn(pa).anyTimes();
@@ -127,7 +126,7 @@
         // Run the test
         hostMonitor = new HostMonitor(deviceService, packetService, hostManager);
 
-        hostMonitor.addMonitoringFor(targetIpAddress);
+        hostMonitor.addMonitoringFor(TARGET_IP_ADDR);
         hostMonitor.run(null);
 
 
@@ -150,7 +149,8 @@
         assertTrue(Arrays.equals(arp.getSenderProtocolAddress(),
                                  SOURCE_ADDR.toOctets()));
         assertTrue(Arrays.equals(arp.getSenderHardwareAddress(), sourceMac.toBytes()));
-        assertTrue(Arrays.equals(arp.getTargetProtocolAddress(), targetIpPrefix.toOctets()));
+        assertTrue(Arrays.equals(arp.getTargetProtocolAddress(),
+                                 TARGET_IP_ADDR.toOctets()));
     }
 
     class TestPacketService implements PacketService {
diff --git a/core/net/src/test/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManagerTest.java b/core/net/src/test/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManagerTest.java
index 76bf021..60fdb69 100644
--- a/core/net/src/test/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManagerTest.java
+++ b/core/net/src/test/java/org/onlab/onos/net/proxyarp/impl/ProxyArpManagerTest.java
@@ -59,8 +59,8 @@
     private static final int NUM_ADDRESS_PORTS = NUM_DEVICES / 2;
     private static final int NUM_FLOOD_PORTS = 3;
 
-    private static final IpPrefix IP1 = IpPrefix.valueOf("192.168.1.1/24");
-    private static final IpPrefix IP2 = IpPrefix.valueOf("192.168.1.2/24");
+    private static final IpAddress IP1 = IpAddress.valueOf("192.168.1.1");
+    private static final IpAddress IP2 = IpAddress.valueOf("192.168.1.2");
 
     private static final ProviderId PID = new ProviderId("of", "foo");
 
@@ -214,7 +214,7 @@
     }
 
     /**
-     * Tests {@link ProxyArpManager#known(IpPrefix)} in the case where the
+     * Tests {@link ProxyArpManager#known(IpAddress)} in the case where the
      * IP address is not known.
      * Verifies the method returns false.
      */
@@ -227,7 +227,7 @@
     }
 
     /**
-     * Tests {@link ProxyArpManager#known(IpPrefix)} in the case where the
+     * Tests {@link ProxyArpManager#known(IpAddress)} in the case where the
      * IP address is known.
      * Verifies the method returns true.
      */
@@ -256,8 +256,8 @@
         Host requestor = new DefaultHost(PID, HID2, MAC2, VLAN1, getLocation(5),
                 Collections.singleton(IP2));
 
-        expect(hostService.getHostsByIp(IpPrefix.valueOf(IP1.toOctets())))
-                .andReturn(Collections.singleton(replyer));
+        expect(hostService.getHostsByIp(IP1))
+            .andReturn(Collections.singleton(replyer));
         expect(hostService.getHost(HID2)).andReturn(requestor);
 
         replay(hostService);
@@ -281,7 +281,7 @@
         Host requestor = new DefaultHost(PID, HID2, MAC2, VLAN1, getLocation(5),
                 Collections.singleton(IP2));
 
-        expect(hostService.getHostsByIp(IpPrefix.valueOf(IP1.toOctets())))
+        expect(hostService.getHostsByIp(IP1))
                 .andReturn(Collections.<Host>emptySet());
         expect(hostService.getHost(HID2)).andReturn(requestor);
 
@@ -308,7 +308,7 @@
         Host requestor = new DefaultHost(PID, HID2, MAC2, VLAN1, getLocation(5),
                 Collections.singleton(IP2));
 
-        expect(hostService.getHostsByIp(IpPrefix.valueOf(IP1.toOctets())))
+        expect(hostService.getHostsByIp(IP1))
                 .andReturn(Collections.singleton(replyer));
         expect(hostService.getHost(HID2)).andReturn(requestor);
 
@@ -323,9 +323,9 @@
 
     @Test
     public void testReplyToRequestForUs() {
-        IpPrefix theirIp = IpPrefix.valueOf("10.0.1.254/24");
-        IpPrefix ourFirstIp = IpPrefix.valueOf("10.0.1.1/24");
-        IpPrefix ourSecondIp = IpPrefix.valueOf("10.0.2.1/24");
+        IpAddress theirIp = IpAddress.valueOf("10.0.1.254");
+        IpAddress ourFirstIp = IpAddress.valueOf("10.0.1.1");
+        IpAddress ourSecondIp = IpAddress.valueOf("10.0.2.1");
         MacAddress ourMac = MacAddress.valueOf(1L);
 
         Host requestor = new DefaultHost(PID, HID2, MAC2, VLAN1, LOC1,
@@ -357,11 +357,11 @@
     public void testReplyExternalPortBadRequest() {
         replay(hostService); // no further host service expectations
 
-        IpPrefix theirIp = IpPrefix.valueOf("10.0.1.254/24");
+        IpAddress theirIp = IpAddress.valueOf("10.0.1.254");
 
         // Request for a valid external IP address but coming in the wrong port
         Ethernet arpRequest = buildArp(ARP.OP_REQUEST, MAC1, null, theirIp,
-                IpPrefix.valueOf("10.0.3.1"));
+                IpAddress.valueOf("10.0.3.1"));
         proxyArp.reply(arpRequest, LOC1);
         assertEquals(0, packetService.packets.size());
 
@@ -376,9 +376,9 @@
     public void testReplyToRequestFromUs() {
         replay(hostService); // no further host service expectations
 
-        IpPrefix ourIp = IpPrefix.valueOf("10.0.1.1/24");
+        IpAddress ourIp = IpAddress.valueOf("10.0.1.1");
         MacAddress ourMac = MacAddress.valueOf(1L);
-        IpPrefix theirIp = IpPrefix.valueOf("10.0.1.100/24");
+        IpAddress theirIp = IpAddress.valueOf("10.0.1.100");
 
         // This is a request from something inside our network (like a BGP
         // daemon) to an external host.
@@ -501,7 +501,7 @@
      * @return the ARP packet
      */
     private Ethernet buildArp(short opcode, MacAddress srcMac, MacAddress dstMac,
-            IpPrefix srcIp, IpPrefix dstIp) {
+            IpAddress srcIp, IpAddress dstIp) {
         Ethernet eth = new Ethernet();
 
         if (dstMac == null) {
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/host/impl/GossipHostStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/host/impl/GossipHostStore.java
index e3e35bc..25ca29e 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/host/impl/GossipHostStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/host/impl/GossipHostStore.java
@@ -42,7 +42,7 @@
 import org.onlab.onos.store.impl.Timestamped;
 import org.onlab.onos.store.serializers.DistributedStoreSerializers;
 import org.onlab.onos.store.serializers.KryoSerializer;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.onlab.util.KryoNamespace;
@@ -221,7 +221,7 @@
             return null;
         }
 
-        Set<IpPrefix> addresses = new HashSet<>(host.ipAddresses());
+        Set<IpAddress> addresses = new HashSet<>(host.ipAddresses());
         addresses.addAll(descr.ipAddress());
         StoredHost updated = new StoredHost(providerId, host.id(),
                                             host.mac(), host.vlan(),
@@ -300,7 +300,7 @@
     }
 
     @Override
-    public Set<Host> getHosts(IpPrefix ip) {
+    public Set<Host> getHosts(IpAddress ip) {
         Set<Host> ipset = new HashSet<>();
         for (Host h : hosts.values()) {
             if (h.ipAddresses().contains(ip)) {
@@ -418,7 +418,7 @@
          */
         public StoredHost(ProviderId providerId, HostId id,
                           MacAddress mac, VlanId vlan, Timestamped<HostLocation> location,
-                          Set<IpPrefix> ips, Annotations... annotations) {
+                          Set<IpAddress> ips, Annotations... annotations) {
             super(providerId, id, mac, vlan, location.value(), ips, annotations);
             this.location = location;
         }
diff --git a/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleHostStore.java b/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleHostStore.java
index f28e656..d01862c 100644
--- a/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleHostStore.java
+++ b/core/store/trivial/src/main/java/org/onlab/onos/store/trivial/impl/SimpleHostStore.java
@@ -23,7 +23,7 @@
 import org.onlab.onos.net.host.PortAddresses;
 import org.onlab.onos.net.provider.ProviderId;
 import org.onlab.onos.store.AbstractStore;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 import org.slf4j.Logger;
@@ -106,7 +106,7 @@
             return null;
         }
 
-        Set<IpPrefix> addresses = new HashSet<>(host.ipAddresses());
+        Set<IpAddress> addresses = new HashSet<>(host.ipAddresses());
         addresses.addAll(descr.ipAddress());
         StoredHost updated = new StoredHost(providerId, host.id(),
                                             host.mac(), host.vlan(),
@@ -170,7 +170,7 @@
     }
 
     @Override
-    public Set<Host> getHosts(IpPrefix ip) {
+    public Set<Host> getHosts(IpAddress ip) {
         Set<Host> ipset = new HashSet<>();
         for (Host h : hosts.values()) {
             if (h.ipAddresses().contains(ip)) {
@@ -288,7 +288,7 @@
          */
         public StoredHost(ProviderId providerId, HostId id,
                           MacAddress mac, VlanId vlan, HostLocation location,
-                          Set<IpPrefix> ips, Annotations... annotations) {
+                          Set<IpAddress> ips, Annotations... annotations) {
             super(providerId, id, mac, vlan, location, ips, annotations);
             this.location = location;
         }
diff --git a/providers/host/src/main/java/org/onlab/onos/provider/host/impl/HostLocationProvider.java b/providers/host/src/main/java/org/onlab/onos/provider/host/impl/HostLocationProvider.java
index ea91bbf..2cc4b7c 100644
--- a/providers/host/src/main/java/org/onlab/onos/provider/host/impl/HostLocationProvider.java
+++ b/providers/host/src/main/java/org/onlab/onos/provider/host/impl/HostLocationProvider.java
@@ -43,7 +43,7 @@
 import org.onlab.onos.net.topology.TopologyService;
 import org.onlab.packet.ARP;
 import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.VlanId;
 import org.slf4j.Logger;
 
@@ -122,8 +122,8 @@
             // Potentially a new or moved host
             if (eth.getEtherType() == Ethernet.TYPE_ARP) {
                 ARP arp = (ARP) eth.getPayload();
-                IpPrefix ip = IpPrefix.valueOf(arp.getSenderProtocolAddress(),
-                        IpPrefix.MAX_INET_MASK);
+                IpAddress ip =
+                    IpAddress.valueOf(arp.getSenderProtocolAddress());
                 HostDescription hdescr =
                         new DefaultHostDescription(eth.getSourceMAC(), vlan, hloc, ip);
                 providerService.hostDetected(hid, hdescr);
diff --git a/providers/openflow/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java b/providers/openflow/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java
index 0427b6a..dec0503 100644
--- a/providers/openflow/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java
+++ b/providers/openflow/host/src/main/java/org/onlab/onos/provider/of/host/impl/OpenFlowHostProvider.java
@@ -47,7 +47,7 @@
 import org.onlab.packet.ARP;
 import org.onlab.packet.Ethernet;
 import org.onlab.packet.IPv4;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.VlanId;
 import org.slf4j.Logger;
 
@@ -128,16 +128,16 @@
             // Potentially a new or moved host
             if (eth.getEtherType() == Ethernet.TYPE_ARP) {
                 ARP arp = (ARP) eth.getPayload();
-                IpPrefix ip = IpPrefix.valueOf(arp.getSenderProtocolAddress(),
-                        IpPrefix.MAX_INET_MASK);
+                IpAddress ip =
+                    IpAddress.valueOf(arp.getSenderProtocolAddress());
                 HostDescription hdescr =
                         new DefaultHostDescription(eth.getSourceMAC(), vlan, hloc, ip);
                 providerService.hostDetected(hid, hdescr);
 
             } else if (ipLearn && eth.getEtherType() == Ethernet.TYPE_IPV4) {
                 IPv4 pip = (IPv4) eth.getPayload();
-                IpPrefix ip = IpPrefix.valueOf(pip.getSourceAddress(),
-                        IpPrefix.MAX_INET_MASK);
+                IpAddress ip =
+                    IpAddress.valueOf(pip.getSourceAddress());
                 HostDescription hdescr =
                         new DefaultHostDescription(eth.getSourceMAC(), vlan, hloc, ip);
                 providerService.hostDetected(hid, hdescr);
diff --git a/web/api/src/main/java/org/onlab/onos/rest/ConfigProvider.java b/web/api/src/main/java/org/onlab/onos/rest/ConfigProvider.java
index 3120511..04d9149 100644
--- a/web/api/src/main/java/org/onlab/onos/rest/ConfigProvider.java
+++ b/web/api/src/main/java/org/onlab/onos/rest/ConfigProvider.java
@@ -43,7 +43,7 @@
 import org.onlab.onos.net.link.LinkProviderService;
 import org.onlab.onos.net.provider.ProviderId;
 import org.onlab.packet.ChassisId;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.packet.VlanId;
 
@@ -179,7 +179,7 @@
         HostId hostId = HostId.hostId(mac, vlanId);
         SparseAnnotations annotations = annotations(node.get("annotations"));
         HostLocation location = new HostLocation(connectPoint(get(node, "location")), 0);
-        IpPrefix ip = IpPrefix.valueOf(get(node, "ip"));
+        IpAddress ip = IpAddress.valueOf(get(node, "ip"));
 
         DefaultHostDescription desc =
                 new DefaultHostDescription(mac, vlanId, location, ip, annotations);
diff --git a/web/gui/src/main/java/org/onlab/onos/gui/TopologyResource.java b/web/gui/src/main/java/org/onlab/onos/gui/TopologyResource.java
index 1a97a56..77ce061 100644
--- a/web/gui/src/main/java/org/onlab/onos/gui/TopologyResource.java
+++ b/web/gui/src/main/java/org/onlab/onos/gui/TopologyResource.java
@@ -33,7 +33,7 @@
 import org.onlab.onos.net.topology.TopologyGraph;
 import org.onlab.onos.net.topology.TopologyService;
 import org.onlab.onos.net.topology.TopologyVertex;
-import org.onlab.packet.IpPrefix;
+import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
 import org.onlab.rest.BaseResource;
 
@@ -102,8 +102,8 @@
     private ArrayNode getHosts(ObjectMapper mapper, HostService hostService) {
         ArrayNode hosts = mapper.createArrayNode();
         for (Host host : hostService.getHosts()) {
-            Set<IpPrefix> ipAddresses = host.ipAddresses();
-            IpPrefix ipAddress = ipAddresses.isEmpty() ? null : ipAddresses.iterator().next();
+            Set<IpAddress> ipAddresses = host.ipAddresses();
+            IpAddress ipAddress = ipAddresses.isEmpty() ? null : ipAddresses.iterator().next();
             String label = ipAddress != null ? ipAddress.toString() : host.mac().toString();
             hosts.add(json(mapper, host));
         }
@@ -160,8 +160,8 @@
         return json;
     }
 
-    private String ip(Set<IpPrefix> ipPrefixes) {
-        Iterator<IpPrefix> it = ipPrefixes.iterator();
+    private String ip(Set<IpAddress> ipAddresses) {
+        Iterator<IpAddress> it = ipAddresses.iterator();
         return it.hasNext() ? it.next().toString() : "unknown";
     }