diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIpFib.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIpFib.java
index d26d9de..aa646ba 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIpFib.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIpFib.java
@@ -166,17 +166,16 @@
         Set<FilteredConnectPoint> ingressFilteredCPs = Sets.newHashSet();
 
         // TODO this should be only peering interfaces
-        interfaceService.getInterfaces().stream()
-                .forEach(intf -> {
-                    // Get ony ingress interfaces with IPs configured
-                    if (validIngressIntf(intf, egressInterface)) {
-                        TrafficSelector.Builder selector =
-                                buildIngressTrafficSelector(intf, prefix);
-                        FilteredConnectPoint ingressFilteredCP =
-                                new FilteredConnectPoint(intf.connectPoint(), selector.build());
-                        ingressFilteredCPs.add(ingressFilteredCP);
-                    }
-                });
+        interfaceService.getInterfaces().forEach(intf -> {
+            // Get ony ingress interfaces with IPs configured
+            if (validIngressIntf(intf, egressInterface)) {
+                TrafficSelector.Builder selector =
+                        buildIngressTrafficSelector(intf, prefix);
+                FilteredConnectPoint ingressFilteredCP =
+                        new FilteredConnectPoint(intf.connectPoint(), selector.build());
+                ingressFilteredCPs.add(ingressFilteredCP);
+            }
+        });
 
         // Build treatment: rewrite the destination MAC address
         TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder()
