diff --git a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java
index 78f7cb3..ed63eff 100644
--- a/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java
+++ b/apps/segmentrouting/app/src/main/java/org/onosproject/segmentrouting/mcast/McastUtils.java
@@ -41,7 +41,6 @@
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.criteria.VlanIdCriterion;
 import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.flowobjective.DefaultFilteringObjective;
 import org.onosproject.net.flowobjective.DefaultForwardingObjective;
@@ -63,8 +62,6 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import static org.onosproject.net.flow.criteria.Criterion.Type.VLAN_VID;
-
 /**
  * Utility class for Multicast Handler.
  */
@@ -196,16 +193,6 @@
     }
 
     /**
-     * Gets assigned VLAN according to the value in the meta.
-     *
-     * @param nextObjective nextObjective to analyze
-     * @return assigned VLAN ID
-     */
-    VlanId assignedVlanFromNext(NextObjective nextObjective) {
-        return ((VlanIdCriterion) nextObjective.meta().getCriterion(VLAN_VID)).vlanId();
-    }
-
-    /**
      * Gets ingress VLAN from McastConfig.
      *
      * @return ingress VLAN or VlanId.NONE if not configured
@@ -502,6 +489,8 @@
                                  Map<ConnectPoint, List<ConnectPoint>> mcastPaths,
                                  List<ConnectPoint> currentPath, IpAddress mcastIp,
                                  ConnectPoint source) {
+        log.debug("Building Multicast paths recursively for {} - next device to visit is {}",
+                  mcastIp, toVisit);
         // If we have visited the node to visit there is a loop
         if (visited.contains(toVisit)) {
             return;
