diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
index 629cb2a..7650649 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostJoinCommand.java
@@ -21,13 +21,8 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
 import org.onosproject.mcast.api.MulticastRouteService;
-import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.HostId;
 
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 /**
  * Installs a source, multicast group flow.
  */
@@ -52,8 +47,8 @@
     String gAddr = null;
 
     @Option(name = "-srcs", aliases = "--sources",
-            description = "Ingress port of:XXXXXXXXXX/XX",
-            valueToShowInHelp = "of:0000000000000001/1",
+            description = "Host sink format: MAC/VLAN",
+            valueToShowInHelp = "00:00:00:00:00:00/None",
             multiValued = true)
     String[] sources = null;
 
@@ -62,7 +57,7 @@
             description = "Host sink format: MAC/VLAN",
             valueToShowInHelp = "00:00:00:00:00:00/None",
             multiValued = true)
-    String[] hosts = null;
+    String[] sinks = null;
 
     @Override
     protected void execute() {
@@ -78,16 +73,14 @@
         mcastRouteManager.add(mRoute);
 
         if (sources != null) {
-            Set<ConnectPoint> sourcesSet = Arrays.stream(sources)
-                    .map(ConnectPoint::deviceConnectPoint)
-                    .collect(Collectors.toSet());
-            mcastRouteManager.addSources(mRoute, sourcesSet);
+            for (String hostId : sources) {
+                mcastRouteManager.addSource(mRoute, HostId.hostId(hostId));
+            }
         }
 
-        if (hosts != null) {
-            for (String hostId : hosts) {
+        if (sinks != null) {
+            for (String hostId : sinks) {
                 mcastRouteManager.addSink(mRoute, HostId.hostId(hostId));
-
             }
         }
         printMcastRoute(mRoute);
@@ -96,7 +89,7 @@
     private void printMcastRoute(McastRoute mcastRoute) {
         // If the source is present let's use it, otherwise we need to print *
         print(FORMAT_MAPPING, mcastRoute.type(), mcastRoute.group(),
-              mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
+                mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
     }
 
 }
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
index 24ee11b..dbf2ca6 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastShowHostCommand.java
@@ -89,7 +89,7 @@
 
     private void printRoute(MulticastRouteService mcastService, McastRoute route) {
         Map<HostId, Set<ConnectPoint>> sinks = mcastService.routeData(route).sinks();
-        Set<ConnectPoint> sources = mcastService.sources(route);
+        Map<HostId, Set<ConnectPoint>> sources = mcastService.routeData(route).sources();
         String srcIp = "*";
         if (route.source().isPresent()) {
             srcIp = route.source().get().toString();
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostDeleteCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
similarity index 89%
rename from apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostDeleteCommand.java
rename to apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
index ca5959d..524fcb2 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastHostDeleteCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSinkDeleteCommand.java
@@ -26,9 +26,9 @@
 /**
  * Deletes a multicast route.
  */
-@Command(scope = "onos", name = "mcast-host-delete",
-        description = "Delete a multicast route flow")
-public class McastHostDeleteCommand extends AbstractShellCommand {
+@Command(scope = "onos", name = "mcast-sink-delete",
+        description = "Delete a sink from multicast route flow. If no sin is specified removes the whole route.")
+public class McastSinkDeleteCommand extends AbstractShellCommand {
 
     // Delete format for group line
     private static final String D_FORMAT_MAPPING = "Deleted the mcast route: " +
@@ -50,7 +50,7 @@
             required = true, multiValued = false)
     String gAddr = null;
 
-    @Option(name = "-h", aliases = "--host",
+    @Option(name = "-s", aliases = "--sinks",
             description = "Host sink format: MAC/VLAN",
             valueToShowInHelp = "00:00:00:00:00:00/None")
     String host = null;
@@ -70,7 +70,7 @@
             sAddrIp = IpAddress.valueOf(sAddr);
         }
         McastRoute mRoute = new McastRoute(sAddrIp, IpAddress.valueOf(gAddr),
-                                           McastRoute.Type.STATIC);
+                McastRoute.Type.STATIC);
         // If the user provides only sAddr and gAddr, we have to remove the route
         if (host == null || host.isEmpty()) {
             mcastRouteManager.remove(mRoute);
@@ -93,6 +93,6 @@
     private void printMcastRoute(String format, McastRoute mcastRoute) {
         // If the source is present let's use it, otherwise we need to print *
         print(format, mcastRoute.type(), mcastRoute.group(),
-              mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
+                mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
     }
 }
diff --git a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
index 0a6080c..d1f646f 100644
--- a/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
+++ b/apps/mcast/cli/src/main/java/org/onosproject/mcast/cli/McastSourceDeleteCommand.java
@@ -21,11 +21,7 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.mcast.api.McastRoute;
 import org.onosproject.mcast.api.MulticastRouteService;
-import org.onosproject.net.ConnectPoint;
-
-import java.util.Arrays;
-import java.util.Set;
-import java.util.stream.Collectors;
+import org.onosproject.net.HostId;
 
 /**
  * Deletes a multicast route.
@@ -55,8 +51,8 @@
     String gAddr = null;
 
     @Option(name = "-src", aliases = "--connectPoint",
-            description = "Source port of:XXXXXXXXXX/XX",
-            valueToShowInHelp = "of:0000000000000001/1",
+            description = "Host sink format: MAC/VLAN",
+            valueToShowInHelp = "00:00:00:00:00:00/None",
             multiValued = true)
     String[] sourceList = null;
 
@@ -76,7 +72,7 @@
             sAddrIp = IpAddress.valueOf(sAddr);
         }
         McastRoute mRoute = new McastRoute(sAddrIp, IpAddress.valueOf(gAddr),
-                                           McastRoute.Type.STATIC);
+                McastRoute.Type.STATIC);
         // No specific connect points, we have to remove everything
         if (sourceList == null) {
             mcastRouteManager.remove(mRoute);
@@ -88,16 +84,16 @@
             print("Route is not present, store it first");
             return;
         }
-        Set<ConnectPoint> sourcesSet = Arrays.stream(sourceList)
-                .map(ConnectPoint::deviceConnectPoint)
-                .collect(Collectors.toSet());
-        mcastRouteManager.removeSources(mRoute, sourcesSet);
+        for (String hostId : sourceList) {
+            mcastRouteManager.removeSource(mRoute, HostId.hostId(hostId));
+
+        }
         printMcastRoute(U_FORMAT_MAPPING, mRoute);
     }
 
     private void printMcastRoute(String format, McastRoute mcastRoute) {
         // If the source is present let's use it, otherwise we need to print *
         print(format, mcastRoute.type(), mcastRoute.group(),
-              mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
+                mcastRoute.source().isPresent() ? mcastRoute.source().get() : "*");
     }
 }
diff --git a/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 1525938..7bf0fcb 100644
--- a/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/apps/mcast/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -21,7 +21,7 @@
             <action class="org.onosproject.mcast.cli.McastHostJoinCommand"/>
             <optional-completers>
                 <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
-                <entry key="-srcs" value-ref="connectpointCompleter"/>
+                <entry key="-srcs" value-ref="hostIdCompleter"/>
                 <entry key="-sinks" value-ref="hostIdCompleter"/>
             </optional-completers>
         </command>
@@ -32,18 +32,18 @@
             </optional-completers>
         </command>
         <command>
-            <action class="org.onosproject.mcast.cli.McastHostDeleteCommand"/>
+            <action class="org.onosproject.mcast.cli.McastSinkDeleteCommand"/>
             <optional-completers>
                 <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
                 <entry key="-cps" value-ref="connectpointCompleter"/>
-                <entry key="-h" value-ref="hostIdCompleter"/>
+                <entry key="-s" value-ref="hostIdCompleter"/>
             </optional-completers>
         </command>
         <command>
             <action class="org.onosproject.mcast.cli.McastSourceDeleteCommand"/>
             <optional-completers>
                 <entry key="-gAddr" value-ref="mcastGroupCompleter"/>
-                <entry key="-src" value-ref="connectpointCompleter"/>
+                <entry key="-src" value-ref="hostIdCompleter"/>
             </optional-completers>
         </command>
         <command>
