diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
index cd6f9be..4c6457a 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
@@ -1,30 +1,28 @@
 package net.onrc.onos.apps.segmentrouting.web;
 
 import java.util.List;
-
 /**
  * This class contains tunnel info of ONOS Segement Routing App
  * Used for rest API
  */
 public class SegmentRouterTunnelInfo {
     private String tunnelId;
-    // private List<Dpid> nodes;
     private List<List<String>> labelStack;
-
-    public SegmentRouterTunnelInfo(String tId, /*List<Dpid> dpids,*/
-            List<List<String>> tunnelRoutes){
+    private List<String> dpidGroup;
+    
+    public SegmentRouterTunnelInfo (String tId,
+            List<List<String>> tunnelRoutes, List<String> dpidsWithGroup){
         this.tunnelId = tId;
-        // this.nodes = dpids;
         this.labelStack = tunnelRoutes;
+        this.dpidGroup = dpidsWithGroup;
     }
     public String getTunnelId (){
         return this.tunnelId;
     }
-
-    /*public List<Dpid> getnodes (){
-        return this.nodes;
-    }*/
     public List<List<String>> getLabelStack (){
         return this.labelStack;
     }
+    public List<String> getDpidGroup (){
+        return this.dpidGroup;
+    }
 }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
index bf3a084..d391082 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
@@ -73,7 +73,6 @@
 
     @Get("json")
     public Object getTunnel() {
-        System.out.println("Got into getTunnel");
         ISegmentRoutingService segmentRoutingService =
                 (ISegmentRoutingService) getContext().getAttributes().
                         get(ISegmentRoutingService.class.getCanonicalName());
@@ -83,19 +82,19 @@
            TunnelInfo tunnelInfo = ttI.next();
            Iterator<TunnelRouteInfo>trI = tunnelInfo.getRoutes().iterator();
            List<List<String>> labelStack = new ArrayList<List<String>>();
+           List<String> dpidGroup = new ArrayList<String>();
            while(trI.hasNext()){
                TunnelRouteInfo label = trI.next();
                labelStack.add(label.getRoute());
+               Integer gId = segmentRoutingService.getTunnelGroupId(tunnelInfo.getTunnelId(), 
+                       label.getSrcSwDpid());
+               dpidGroup.add(label.getSrcSwDpid() + "/"+ gId);
            }
            SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
-                    /*tunnelInfo.getDpids(),*/labelStack);
+                    labelStack, dpidGroup);
            infoList.add(info);
-           //TODO Add Group/DPID
-
         }
         log.debug("getTunnel with params");
-        Map <String,List<SegmentRouterTunnelInfo>>result = new HashMap<String,List<SegmentRouterTunnelInfo>>();
-        result.put("tunnels", infoList);
         return infoList;
     }
 }
