diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
index e45d61b..220f7fc 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
@@ -20,14 +20,11 @@
 import org.onlab.osgi.DefaultServiceDirectory;
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
-import org.onosproject.core.GroupId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.behaviour.ControllerInfo;
 import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.group.DefaultGroupKey;
-import org.onosproject.net.group.GroupKey;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -171,11 +168,6 @@
     }
 
     @Override
-    public GroupKey gatewayGroupKey(NetworkMode mode) {
-        return new DefaultGroupKey(intgBridge.toString().concat(mode.name()).getBytes());
-    }
-
-    @Override
     public PortNumber uplinkPortNum() {
         if (uplinkPort == null) {
             return null;
@@ -242,11 +234,6 @@
     }
 
     @Override
-    public GroupId gatewayGroupId(NetworkMode mode) {
-        return new GroupId(intgBridge.toString().concat(mode.name()).hashCode());
-    }
-
-    @Override
     public boolean equals(Object obj) {
         if (this == obj) {
             return true;
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
index 9760286..a935e08 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
@@ -17,11 +17,9 @@
 
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
-import org.onosproject.core.GroupId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.behaviour.ControllerInfo;
-import org.onosproject.net.group.GroupKey;
 
 import java.util.Collection;
 
@@ -114,22 +112,6 @@
     NodeState state();
 
     /**
-     * Returns the gateway group ID of this node.
-     *
-     * @param mode network mode of the group
-     * @return gateway group identifier
-     */
-    GroupId gatewayGroupId(NetworkMode mode);
-
-    /**
-     * Returns the group key of this node.
-     *
-     * @param mode network mode of the group
-     * @return gateway group key
-     */
-    GroupKey gatewayGroupKey(NetworkMode mode);
-
-    /**
      * Returns the tunnel port number.
      *
      * @return port number; null if tunnel port does not exist
diff --git a/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java b/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
index dac6774..6b8afc3 100644
--- a/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
+++ b/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
@@ -17,11 +17,9 @@
 
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.MacAddress;
-import org.onosproject.core.GroupId;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.behaviour.ControllerInfo;
-import org.onosproject.net.group.GroupKey;
 
 import java.util.Collection;
 
@@ -70,16 +68,6 @@
     }
 
     @Override
-    public GroupId gatewayGroupId(OpenstackNode.NetworkMode mode) {
-        return null;
-    }
-
-    @Override
-    public GroupKey gatewayGroupKey(OpenstackNode.NetworkMode mode) {
-        return null;
-    }
-
-    @Override
     public PortNumber tunnelPortNum() {
         return null;
     }
diff --git a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackSshAuthCodec.java b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackSshAuthCodec.java
index 4dbe1d6..f64d664 100644
--- a/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackSshAuthCodec.java
+++ b/apps/openstacknode/app/src/main/java/org/onosproject/openstacknode/codec/OpenstackSshAuthCodec.java
@@ -45,11 +45,9 @@
     public ObjectNode encode(OpenstackSshAuth sshAuth, CodecContext context) {
         checkNotNull(sshAuth, ERROR_MSG_NOT_NULL);
 
-        ObjectNode result = context.mapper().createObjectNode()
+        return context.mapper().createObjectNode()
                 .put(ID, sshAuth.id())
                 .put(PASSWORD, sshAuth.password());
-
-        return result;
     }
 
     @Override
