diff --git a/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceDescriptions.java b/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceDescriptions.java
index 301767d..f14b062 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceDescriptions.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/device/impl/DeviceDescriptions.java
@@ -97,7 +97,9 @@
             SparseAnnotations merged = union(oldOne.value().annotations(),
                                              newDesc.value().annotations());
             newOne = new Timestamped<>(
-                            new DefaultPortDescription(newDesc.value(), merged),
+                            DefaultPortDescription.builder(newDesc.value())
+                                .annotations(merged)
+                                .build(),
                             newDesc.timestamp());
         }
         portDescs.put(newOne.value().portNumber(), newOne);
diff --git a/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java b/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
index 370c1d5..8a31446 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/device/impl/GossipDeviceStoreTest.java
@@ -522,8 +522,8 @@
     public final void testUpdatePorts() {
         putDevice(DID1, SW1);
         List<PortDescription> pds = Arrays.asList(
-                new DefaultPortDescription(P1, true),
-                new DefaultPortDescription(P2, true)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).build(),
+                DefaultPortDescription.builder().withPortNumber(P2).isEnabled(true).build()
                 );
         Capture<InternalDeviceEvent> message = new Capture<>();
         Capture<MessageSubject> subject = new Capture<>();
@@ -547,9 +547,9 @@
 
 
         List<PortDescription> pds2 = Arrays.asList(
-                new DefaultPortDescription(P1, false),
-                new DefaultPortDescription(P2, true),
-                new DefaultPortDescription(P3, true)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(false).build(),
+                DefaultPortDescription.builder().withPortNumber(P2).isEnabled(true).build(),
+                DefaultPortDescription.builder().withPortNumber(P3).isEnabled(true).build()
                 );
 
         resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
@@ -577,8 +577,8 @@
         }
 
         List<PortDescription> pds3 = Arrays.asList(
-                new DefaultPortDescription(P1, false),
-                new DefaultPortDescription(P2, true)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(false).build(),
+                DefaultPortDescription.builder().withPortNumber(P2).isEnabled(true).build()
                 );
         resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
         events = deviceStore.updatePorts(PID, DID1, pds3);
@@ -607,7 +607,7 @@
     public final void testUpdatePortStatus() {
         putDevice(DID1, SW1);
         List<PortDescription> pds = Arrays.asList(
-                new DefaultPortDescription(P1, true)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).build()
                 );
         deviceStore.updatePorts(PID, DID1, pds);
 
@@ -616,7 +616,8 @@
         Capture<Function<InternalPortStatusEvent, byte[]>> encoder = new Capture<>();
 
         resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
-        final DefaultPortDescription desc = new DefaultPortDescription(P1, false);
+        final DefaultPortDescription desc = DefaultPortDescription.builder().withPortNumber(P1)
+                .isEnabled(false).build();
         DeviceEvent event = deviceStore.updatePortStatus(PID, DID1, desc);
         assertEquals(PORT_UPDATED, event.type());
         assertDevice(DID1, SW1, event.subject());
@@ -632,7 +633,7 @@
         putDeviceAncillary(DID1, SW1);
         putDevice(DID1, SW1);
         List<PortDescription> pds = Arrays.asList(
-                new DefaultPortDescription(P1, true, A1)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).annotations(A1).build()
                 );
         deviceStore.updatePorts(PID, DID1, pds);
 
@@ -643,7 +644,9 @@
         // update port from primary
         resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
 
-        final DefaultPortDescription desc1 = new DefaultPortDescription(P1, false, A1_2);
+        final DefaultPortDescription desc1 = DefaultPortDescription.builder().withPortNumber(P1).isEnabled(false)
+                .annotations(A1_2).build();
+
         DeviceEvent event = deviceStore.updatePortStatus(PID, DID1, desc1);
         assertEquals(PORT_UPDATED, event.type());
         assertDevice(DID1, SW1, event.subject());
@@ -656,7 +659,8 @@
 
         // update port from ancillary with no attributes
         resetCommunicatorExpectingNoBroadcast(message, subject, encoder);
-        final DefaultPortDescription desc2 = new DefaultPortDescription(P1, true);
+        final DefaultPortDescription desc2 = DefaultPortDescription.builder()
+                .withPortNumber(P1).isEnabled(true).build();
         DeviceEvent event2 = deviceStore.updatePortStatus(PIDA, DID1, desc2);
         assertNull("Ancillary is ignored if primary exists", event2);
         verify(clusterCommunicator);
@@ -664,7 +668,8 @@
 
         // but, Ancillary annotation update will be notified
         resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
-        final DefaultPortDescription desc3 = new DefaultPortDescription(P1, true, A2);
+        final DefaultPortDescription desc3 = DefaultPortDescription.builder().withPortNumber(P1)
+                .isEnabled(true).annotations(A2).build();
         DeviceEvent event3 = deviceStore.updatePortStatus(PIDA, DID1, desc3);
         assertEquals(PORT_UPDATED, event3.type());
         assertDevice(DID1, SW1, event3.subject());
@@ -677,7 +682,8 @@
 
         // port only reported from Ancillary will be notified as down
         resetCommunicatorExpectingSingleBroadcast(message, subject, encoder);
-        final DefaultPortDescription desc4 = new DefaultPortDescription(P2, true);
+        final DefaultPortDescription desc4 = DefaultPortDescription.builder()
+                .withPortNumber(P2).isEnabled(true).build();
         DeviceEvent event4 = deviceStore.updatePortStatus(PIDA, DID1, desc4);
         assertEquals(PORT_ADDED, event4.type());
         assertDevice(DID1, SW1, event4.subject());
@@ -757,8 +763,8 @@
         putDevice(DID1, SW1);
         putDevice(DID2, SW1);
         List<PortDescription> pds = Arrays.asList(
-                new DefaultPortDescription(P1, true),
-                new DefaultPortDescription(P2, true)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).build(),
+                DefaultPortDescription.builder().withPortNumber(P2).isEnabled(true).build()
                 );
         deviceStore.updatePorts(PID, DID1, pds);
 
@@ -780,8 +786,8 @@
         putDevice(DID1, SW1);
         putDevice(DID2, SW1);
         List<PortDescription> pds = Arrays.asList(
-                new DefaultPortDescription(P1, true),
-                new DefaultPortDescription(P2, false)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).build(),
+                DefaultPortDescription.builder().withPortNumber(P2).isEnabled(false).build()
                 );
         deviceStore.updatePorts(PID, DID1, pds);
 
@@ -801,7 +807,7 @@
     public final void testRemoveDevice() {
         putDevice(DID1, SW1, A1);
         List<PortDescription> pds = Arrays.asList(
-                new DefaultPortDescription(P1, true, A2)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).annotations(A2).build()
                 );
         deviceStore.updatePorts(PID, DID1, pds);
         putDevice(DID2, SW1);
@@ -830,7 +836,7 @@
         // putBack Device, Port w/o annotation
         putDevice(DID1, SW1);
         List<PortDescription> pds2 = Arrays.asList(
-                new DefaultPortDescription(P1, true)
+                DefaultPortDescription.builder().withPortNumber(P1).isEnabled(true).build()
                 );
         deviceStore.updatePorts(PID, DID1, pds2);
 
