diff --git a/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java b/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java
index d1fe612..2b8398f 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/MultiPointToSinglePointIntent.java
@@ -25,7 +25,6 @@
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -74,7 +73,7 @@
                                           int priority,
                                           Map<ConnectPoint, TrafficSelector> ingressSelectors
                                           ) {
-        super(appId, key, Collections.emptyList(), selector, treatment, constraints,
+        super(appId, key, ImmutableSet.of(), selector, treatment, constraints,
                 priority);
 
         checkNotNull(ingressPoints);
@@ -127,7 +126,7 @@
     public static final class Builder extends ConnectivityIntent.Builder {
         Set<ConnectPoint> ingressPoints;
         ConnectPoint egressPoint;
-        Map<ConnectPoint, TrafficSelector> ingressSelectors = Collections.emptyMap();
+        Map<ConnectPoint, TrafficSelector> ingressSelectors = ImmutableMap.of();
 
         private Builder() {
             // Hide constructor
