diff --git a/core/api/src/test/java/org/onlab/onos/net/HostIdTest.java b/core/api/src/test/java/org/onlab/onos/net/HostIdTest.java
index d79f616..712f6b2 100644
--- a/core/api/src/test/java/org/onlab/onos/net/HostIdTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/HostIdTest.java
@@ -3,8 +3,8 @@
 import com.google.common.testing.EqualsTester;
 
 import org.junit.Test;
-import org.onlab.packet.MACAddress;
-import org.onlab.packet.VLANID;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 
 import static org.onlab.onos.net.HostId.hostId;
 
@@ -13,10 +13,10 @@
  */
 public class HostIdTest extends ElementIdTest {
 
-    private static final MACAddress MAC1 = MACAddress.valueOf("00:11:00:00:00:01");
-    private static final MACAddress MAC2 = MACAddress.valueOf("00:22:00:00:00:02");
-    private static final VLANID VLAN1 = VLANID.vlanId((short) 11);
-    private static final VLANID VLAN2 = VLANID.vlanId((short) 22);
+    private static final MacAddress MAC1 = MacAddress.valueOf("00:11:00:00:00:01");
+    private static final MacAddress MAC2 = MacAddress.valueOf("00:22:00:00:00:02");
+    private static final VlanId VLAN1 = VlanId.vlanId((short) 11);
+    private static final VlanId VLAN2 = VlanId.vlanId((short) 22);
 
     @Override
     @Test
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 930cb3b..afaf23e 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,9 +5,9 @@
 import java.util.Set;
 
 import org.onlab.onos.net.provider.ProviderId;
-import org.onlab.packet.IPAddress;
-import org.onlab.packet.MACAddress;
-import org.onlab.packet.VLANID;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 
 import com.google.common.collect.Sets;
 
@@ -20,13 +20,13 @@
     protected static final ProviderId PID = new ProviderId("foo");
     protected static final DeviceId DID1 = deviceId("of:foo");
     protected static final DeviceId DID2 = deviceId("of:bar");
-    protected static final MACAddress MAC1 = MACAddress.valueOf("00:11:00:00:00:01");
-    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 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 MacAddress MAC1 = MacAddress.valueOf("00:11:00:00:00:01");
+    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 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<IPAddress> IPSET1 = Sets.newHashSet(IP1, IP2);
-    protected static final Set<IPAddress> 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/DefualtHostDecriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/host/DefualtHostDecriptionTest.java
index 5ef9bf8..6ce39f5 100644
--- a/core/api/src/test/java/org/onlab/onos/net/host/DefualtHostDecriptionTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/host/DefualtHostDecriptionTest.java
@@ -9,9 +9,9 @@
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.HostLocation;
 import org.onlab.onos.net.PortNumber;
-import org.onlab.packet.IPAddress;
-import org.onlab.packet.MACAddress;
-import org.onlab.packet.VLANID;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 
 import com.google.common.collect.Sets;
 
@@ -20,16 +20,16 @@
  */
 public class DefualtHostDecriptionTest {
 
-    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 MacAddress MAC = MacAddress.valueOf("00:00:11:00:00:01");
+    private static final VlanId VLAN = VlanId.vlanId((short) 10);
     private static final HostLocation LOC = new HostLocation(
                 DeviceId.deviceId("of:foo"),
                 PortNumber.portNumber(100),
                 123L
             );
-    private static final Set<IPAddress> IPS = Sets.newHashSet(
-                IPAddress.valueOf("10.0.0.1"),
-                IPAddress.valueOf("10.0.0.2")
+    private static final Set<IpAddress> IPS = Sets.newHashSet(
+                IpAddress.valueOf("10.0.0.1"),
+                IpAddress.valueOf("10.0.0.2")
             );
 
     @Test
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 633928e..a0d6848 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,25 +11,25 @@
 import org.onlab.onos.net.HostLocation;
 import org.onlab.onos.net.PortNumber;
 import org.onlab.onos.net.provider.ProviderId;
-import org.onlab.packet.IPAddress;
-import org.onlab.packet.MACAddress;
-import org.onlab.packet.VLANID;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 
 import com.google.common.collect.Sets;
 
 public class HostEventTest extends AbstractEventTest {
 
     private Host createHost() {
-        MACAddress mac = MACAddress.valueOf("00:00:11:00:00:01");
-        VLANID vlan = VLANID.vlanId((short) 10);
+        MacAddress mac = MacAddress.valueOf("00:00:11:00:00:01");
+        VlanId vlan = VlanId.vlanId((short) 10);
         HostLocation loc = new HostLocation(
                     DeviceId.deviceId("of:foo"),
                     PortNumber.portNumber(100),
                     123L
                 );
-        Set<IPAddress> ipset = Sets.newHashSet(
-                    IPAddress.valueOf("10.0.0.1"),
-                    IPAddress.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 54a630e..a8ec8bd 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
@@ -4,9 +4,9 @@
 import org.onlab.onos.net.DeviceId;
 import org.onlab.onos.net.Host;
 import org.onlab.onos.net.HostId;
-import org.onlab.packet.IPAddress;
-import org.onlab.packet.MACAddress;
-import org.onlab.packet.VLANID;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.VlanId;
 
 import java.util.Set;
 
@@ -30,17 +30,17 @@
     }
 
     @Override
-    public Set<Host> getHostsByVlan(VLANID vlanId) {
+    public Set<Host> getHostsByVlan(VlanId vlanId) {
         return null;
     }
 
     @Override
-    public Set<Host> getHostsByMac(MACAddress mac) {
+    public Set<Host> getHostsByMac(MacAddress mac) {
         return null;
     }
 
     @Override
-    public Set<Host> getHostsByIp(IPAddress ip) {
+    public Set<Host> getHostsByIp(IpAddress ip) {
         return null;
     }
 
