diff --git a/apps/mfwd/pom.xml b/apps/mfwd/pom.xml
index 835de83..2dc3a66 100644
--- a/apps/mfwd/pom.xml
+++ b/apps/mfwd/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.onosproject</groupId>
         <artifactId>onos-apps</artifactId>
-        <version>1.4.0-SNAPSHOT</version>
+        <version>1.5.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
diff --git a/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java b/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java
index f46d77b..60851d6 100644
--- a/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java
+++ b/apps/mfwd/src/main/java/org/onosproject/mfwd/impl/McastForwarding.java
@@ -15,20 +15,16 @@
  */
 package org.onosproject.mfwd.impl;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.slf4j.LoggerFactory.getLogger;
-
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
-
 import org.onlab.packet.Ethernet;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.Ip4Address;
 import org.onlab.packet.IPv4;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.net.ConnectPoint;
@@ -36,8 +32,8 @@
 import org.onosproject.net.flow.DefaultTrafficTreatment;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
-import org.onosproject.net.mcast.MulticastRouteService;
 import org.onosproject.net.mcast.McastRoute;
+import org.onosproject.net.mcast.MulticastRouteService;
 import org.onosproject.net.packet.DefaultOutboundPacket;
 import org.onosproject.net.packet.InboundPacket;
 import org.onosproject.net.packet.OutboundPacket;
@@ -49,6 +45,9 @@
 
 import java.util.ArrayList;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.slf4j.LoggerFactory.getLogger;
+
 /**
  * The multicast forwarding component.  This component is responsible for
  * handling live multicast traffic by modifying multicast state and forwarding
@@ -167,7 +166,7 @@
             IpPrefix gpfx = IpPrefix.valueOf(gaddr, 32);
 
             // TODO do we want to add a type for Mcast?
-            McastRoute mRoute = new McastRoute(spfx, gpfx, McastRoute.Type.STATIC);
+            McastRoute mRoute = new McastRoute(saddr, gaddr, McastRoute.Type.STATIC);
 
             ConnectPoint ingress = mcastRouteManager.fetchSource(mRoute);
 
@@ -216,12 +215,12 @@
     public static McastRoute createStaticRoute(String source, String group) {
         checkNotNull(source, "Must provide a source");
         checkNotNull(group, "Must provide a group");
-        IpPrefix ipSource = IpPrefix.valueOf(source);
-        IpPrefix ipGroup = IpPrefix.valueOf(group);
+        IpAddress ipSource = IpAddress.valueOf(source);
+        IpAddress ipGroup = IpAddress.valueOf(group);
         return createStaticcreateRoute(ipSource, ipGroup);
     }
 
-    public static McastRoute createStaticcreateRoute(IpPrefix source, IpPrefix group) {
+    public static McastRoute createStaticcreateRoute(IpAddress source, IpAddress group) {
         checkNotNull(source, "Must provide a source");
         checkNotNull(group, "Must provide a group");
         McastRoute.Type type = McastRoute.Type.STATIC;
