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 ee8570d..f28e656 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
@@ -19,6 +19,7 @@
 import org.onlab.onos.net.host.HostEvent;
 import org.onlab.onos.net.host.HostStore;
 import org.onlab.onos.net.host.HostStoreDelegate;
+import org.onlab.onos.net.host.InterfaceIpAddress;
 import org.onlab.onos.net.host.PortAddresses;
 import org.onlab.onos.net.provider.ProviderId;
 import org.onlab.onos.store.AbstractStore;
@@ -202,8 +203,9 @@
             if (existing == null) {
                 portAddresses.put(addresses.connectPoint(), addresses);
             } else {
-                Set<IpPrefix> union = Sets.union(existing.ips(), addresses.ips())
-                        .immutableCopy();
+                Set<InterfaceIpAddress> union =
+                    Sets.union(existing.ipAddresses(),
+                               addresses.ipAddresses()).immutableCopy();
 
                 MacAddress newMac = (addresses.mac() == null) ? existing.mac()
                         : addresses.mac();
@@ -221,8 +223,9 @@
         synchronized (portAddresses) {
             PortAddresses existing = portAddresses.get(addresses.connectPoint());
             if (existing != null) {
-                Set<IpPrefix> difference =
-                        Sets.difference(existing.ips(), addresses.ips()).immutableCopy();
+                Set<InterfaceIpAddress> difference =
+                        Sets.difference(existing.ipAddresses(),
+                                        addresses.ipAddresses()).immutableCopy();
 
                 // If they removed the existing mac, set the new mac to null.
                 // Otherwise, keep the existing mac.
