diff --git a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
index 648e500..d1bae5b 100644
--- a/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
+++ b/providers/pcep/tunnel/src/main/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProvider.java
@@ -480,9 +480,12 @@
 
     // Short-hand for creating a link.
     private Link link(PcepDpid src, long sp, PcepDpid dst, long dp) {
-        return new DefaultLink(id(), connectPoint(src, sp), connectPoint(dst,
-                                                                         dp),
-                               Link.Type.TUNNEL);
+        return DefaultLink.builder()
+                .providerId(id())
+                .src(connectPoint(src, sp))
+                .dst(connectPoint(dst, dp))
+                .type(Link.Type.TUNNEL)
+                .build();
     }
 
     // Creates a path that leads through the given devices.
@@ -1132,7 +1135,12 @@
                     } else {
                         IpAddress dstIp = IpAddress.valueOf(ipv4SubObj.getIpAddress());
                         dst = new ConnectPoint(IpElementId.ipElement(dstIp), PortNumber.portNumber(0));
-                        Link link = new DefaultLink(providerId, src, dst, Link.Type.DIRECT, EMPTY);
+                        Link link = DefaultLink.builder()
+                                .providerId(providerId)
+                                .src(src)
+                                .dst(dst)
+                                .type(Link.Type.DIRECT)
+                                .build();
                         links.add(link);
                         src = dst;
                     }
