diff --git a/cli/cli/c_actions.py b/cli/cli/c_actions.py
index 0ccdc9c..9c4176f 100755
--- a/cli/cli/c_actions.py
+++ b/cli/cli/c_actions.py
@@ -2226,11 +2226,12 @@
             policyId = policy.get("policyId")
             policyType = policy.get("policyType")
             priority = policy.get("priority")
+            tunnelId = policy.get('tunnelId')
             match = policy.get("match")
             dstIpAddress = match.get('dstIpAddress')['value'] if match.get('dstIpAddress') else '*'
             dstMacAddress = match.get('dstMacAddress')['value'] if match.get('dstMacAddress') else '*'
             dstTcpPortNumber = match.get('dstTcpPortNumber') if match.get('dstTcpPortNumber') else '*'
-            etherType = match.get('etherType') if match.get('etherType') else '*'
+            etherType = ('0x'+ str(match.get('etherType'))) if match.get('etherType') else '*'
             ipProtocolNumber = match.get('ipProtocolNumber') if match.get('ipProtocolNumber') else '*'
             srcIpAddress = match.get('srcIpAddress')['value'] if match.get('srcIpAddress') else '*'
             srcMacAddress = match.get('srcMacAddress')['value'] if match.get('srcMacAddress') else '*'
@@ -2238,6 +2239,7 @@
             combResult.append({
                                'policyId'        : policyId,
                                'policyType'      : policyType,
+                               'tunnelId'        : tunnelId,
                                'priority'        : priority,
                                'dstIpAddress'    : dstIpAddress,
                                'dstMacAddress'   : dstMacAddress,
@@ -2262,7 +2264,6 @@
                     #raise error.ArgumentValidationError('\n\n\n %s' % json.tool(entries))
                 instructions = ipTableEntry['instructions']
                 actions = str(instructions[0]) if instructions[0] else None
-                print "actions: ", actions
                 if actions != None:
                     actions = remove_unicodes(actions)
                     actions = renameActions(actions)
@@ -2370,31 +2371,44 @@
                 if groupId == entry["groupId"]:
                     groupDescEntry = entry
                     break
-            if groupDescEntry is None:
+            if groupDescEntry is '':
                 print "command_display_rest: missing group desc for group id %s" % (groupId)
                 continue
             for bucketId in range(len(groupStatEntry['bucketStats'])):
-                setsrcmac = '*'
+                setsrcmac = ''
                 if 'SET_DL_SRC' in groupDescEntry['bucketsActions'][bucketId]:
                     setsrcmac = groupDescEntry['bucketsActions'][bucketId]['SET_DL_SRC']
-                setdstmac = '*'
+                setdstmac = ''
                 if 'SET_DL_DST' in groupDescEntry['bucketsActions'][bucketId]:
                     setdstmac = groupDescEntry['bucketsActions'][bucketId]['SET_DL_DST']
-                pushmpls = '*'
+                pushmpls = ''
                 if 'PUSH_MPLS_LABEL' in groupDescEntry['bucketsActions'][bucketId]:
                     pushmpls = groupDescEntry['bucketsActions'][bucketId]['PUSH_MPLS_LABEL']
-                popmpls = '*'
+                popmpls = ''
                 if 'POP_MPLS' in groupDescEntry['bucketsActions'][bucketId]:
                     popmpls = groupDescEntry['bucketsActions'][bucketId]['POP_MPLS']
-                outport = '*'
+                outport = ''
                 if 'OUTPPUT' in groupDescEntry['bucketsActions'][bucketId]:
                     outport = groupDescEntry['bucketsActions'][bucketId]['OUTPPUT']
-                goToGroup = '*'
+                goToGroup = ''
                 if 'goToGroup' in groupDescEntry['bucketsActions'][bucketId]:
                     goToGroup = groupDescEntry['bucketsActions'][bucketId]['goToGroup']
-                setBos= None
+                setBos= ''
                 if 'PUSH_MPLS_BOS' in groupDescEntry['bucketsActions'][bucketId]:
                     setBos = groupDescEntry['bucketsActions'][bucketId]['PUSH_MPLS_BOS']
+                COPY_TTL_IN= ''
+                if 'COPY_TTL_IN' in groupDescEntry['bucketsActions'][bucketId]:
+                    COPY_TTL_IN = groupDescEntry['bucketsActions'][bucketId]['COPY_TTL_IN']
+                COPY_TTL_OUT= ''
+                if 'COPY_TTL_OUT' in groupDescEntry['bucketsActions'][bucketId]:
+                    COPY_TTL_OUT = groupDescEntry['bucketsActions'][bucketId]['COPY_TTL_OUT']
+                DEC_MPLS_TTL= ''
+                if 'DEC_MPLS_TTL' in groupDescEntry['bucketsActions'][bucketId]:
+                    DEC_MPLS_TTL = groupDescEntry['bucketsActions'][bucketId]['DEC_MPLS_TTL']
+                DEC_NW_TTL= ''
+                if 'DEC_NW_TTL' in groupDescEntry['bucketsActions'][bucketId]:
+                    DEC_NW_TTL = groupDescEntry['bucketsActions'][bucketId]['DEC_NW_TTL']
+
                 combResult.append({
                        'groupid'       : groupId,
                        'grouptype'     : groupDescEntry['groupType'],
@@ -2404,11 +2418,15 @@
                        'bucketbytecnt' : groupStatEntry['bucketStats'][bucketId]['byteCount'],
                        'setsrcmac'     : setsrcmac,
                        'setdstmac'     : setdstmac,
-                       'pushMplsLabel'     : pushmpls,
-                       'popmpls'     : popmpls,
-                       'outport'     : outport,
+                       'pushMplsLabel' : pushmpls,
+                       'popmpls'       : popmpls,
+                       'outport'       : outport,
                        'goToGroup'     : goToGroup,
-                       'setBos'     : setBos,
+                       'setBos'        : setBos,
+                       'COPY_TTL_IN'   : COPY_TTL_IN,
+                       'COPY_TTL_OUT'  : COPY_TTL_OUT,
+                       'DEC_MPLS_TTL'  : DEC_MPLS_TTL,
+                       'DEC_NW_TTL'    : DEC_NW_TTL,
                     })
         entries = combResult
     #
diff --git a/cli/cli/desc/version200/core.py b/cli/cli/desc/version200/core.py
index f84d114..d9b949f 100755
--- a/cli/cli/desc/version200/core.py
+++ b/cli/cli/desc/version200/core.py
@@ -596,7 +596,7 @@
     }
 }
 
-
+"""
 CLEAR_COMMAND_DESCRIPTION = {
     'name'                : 'clearterm',
     'no-supported'        : False,
@@ -607,7 +607,7 @@
     'action'              : 'clearterm',
     'args'                : {}
 }
-
+"""
 
 COPY_COMMAND_DESCRIPTION = {
     'name'                : 'copy',
@@ -2332,21 +2332,23 @@
 REALTIME_GROUP_FORMAT = {
     'realtime_group' : {
         'field-orderings' : {
-            'default' : [ 'Idx', 'groupid', 'grouptype', 'totalpktcnt', 'totalbytecnt',
+            'default' : [ 'Idx', 'grouptype','groupid' , 'totalpktcnt', 'totalbytecnt',
                           'bucketpktcnt', 'bucketbytecnt', 
                           'setsrcmac', 'setdstmac',
                           'pushMplslabel', 'setBos',
-                          'outport','goToGroup'],
-            'scoped' : [ 'Idx', 'groupid', 'grouptype', 'totalpktcnt', 'totalbytecnt',
+                          'outport','goToGroup','COPY_TTL_IN','COPY_TTL_OUT','DEC_MPLS_TTL',
+                           'DEC_NW_TTL'],
+            'scoped' : [ 'Idx', 'grouptype','groupid','totalpktcnt', 'totalbytecnt',
                           'bucketpktcnt', 'bucketbytecnt', 
                           'setsrcmac', 'setdstmac',
                           'pushMplsLabel','setBos',
-                          'outport','goToGroup' ],
+                          'outport','goToGroup','COPY_TTL_IN','COPY_TTL_OUT','DEC_MPLS_TTL',
+                          'DEC_NW_TTL'],
             },
         'fields': {
             'groupid'               : { 'verbose-name' : 'Group Id',
                                      },
-            'grouptype'               : { 'verbose-name' : 'Group type',
+            'grouptype'               : { 'verbose-name' : 'Group Type',
                                      },
             'totalpktcnt'         : { 'verbose-name' : 'Pkts',
                                        'formatter' : fmtcnv.decode_port_counter
@@ -2370,7 +2372,7 @@
                                      },
             'outport'             : { 'verbose-name' : 'Outport',
                                      },
-            'goToGroup'           : { 'verbose-name' : 'Go To Group',
+            'goToGroup'           : { 'verbose-name' : 'Group',
                                     },
             }
         },
@@ -2431,7 +2433,7 @@
 SHOW_POLICY_FORMAT = {
     'show_policy' : {
         'field-orderings' : {
-            'default' : [ 'Idx', 'policyId', 'policyType','priority','dstMacAddress','srcMacAddress',
+            'default' : [ 'Idx', 'policyId', 'policyType','tunnelId','priority','dstMacAddress','srcMacAddress',
                         'dstIpAddress' ,'srcIpAddress', 'dstTcpPortNumber','srcTcpPortNumber',
                         'etherType', 'ipProtocolNumber',
                          ]
@@ -2458,6 +2460,9 @@
 
                        'ipProtocolNumber'         : { 'verbose-name': 'IP Protocol',
                                                },
+                       'tunnelId'                : { 'verbose-name': 'Tunnel Used',
+                                               },
+                       
                                                }
         },
 }
diff --git a/cli/cli/desc/version200/switch.py b/cli/cli/desc/version200/switch.py
index fa0be6f..13f3a69 100755
--- a/cli/cli/desc/version200/switch.py
+++ b/cli/cli/desc/version200/switch.py
@@ -211,13 +211,13 @@
                         'short-help' : 'Show requested item by querying switch',
                         'doc'        : 'switch|realtime-+',
                     },
-                    {
-                        'field'    : 'detail',
-                        'optional' : True,
-                        'type'     : 'enum',
-                        'values'   : ('details','brief'),
-                        'doc'      : 'format|+',
-                    },
+                    #{
+                    #    'field'    : 'detail',
+                    #    'optional' : True,
+                    #    'type'     : 'enum',
+                    #    'values'   : ('details','brief'),
+                    #    'doc'      : 'format|+',
+                    #},
                 ),
                 (
                     {
@@ -254,20 +254,24 @@
                                         'acl',
                                         'mpls'
                                         ),
-                        'doc'      : 'format|+',
-                    },
-                  {
-                        'field'    : 'tableflow',
-                        'type'     : 'enum',
-                        'values'     : ('flow',
-                                        ),
                         'action'     : 'display-rest',
-                        'url'        : 'realtimestats/%(realtimestats)s/%(tabletype)s/%(tableflow)s/%(dpid)s/',
+                        'url'        : 'realtimestats/%(realtimestats)s/%(tabletype)s/flow/%(dpid)s/',
                         'rest-type'  : 'dict-of-list-of-switch',
                         'format'     : 'realtime_%(realtimestats)s_%(tabletype)s_flow',
-                        'short-help' : 'Show requested item by querying switch',
-                        'doc'        : 'switch|realtime-+',
+                        'doc'      : 'format|+',
                     },
+                  #{
+                  #      'field'    : 'tableflow',
+                  #   'type'     : 'enum',
+                  #      'values'     : ('flow',
+                  #                      ),
+                  #      'action'     : 'display-rest',
+                  #      'url'        : 'realtimestats/%(realtimestats)s/%(tabletype)s/%(tableflow)s/%(dpid)s/',
+                  #      'rest-type'  : 'dict-of-list-of-switch',
+                  #      'format'     : 'realtime_%(realtimestats)s_%(tabletype)s_flow',
+                  #      'short-help' : 'Show requested item by querying switch',
+                  #      'doc'        : 'switch|realtime-+',
+                  #  },
                 ),
             )
         }
diff --git a/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
index 8756c05..02da751 100644
--- a/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
@@ -143,8 +143,7 @@
                         jGen.writeNumberField("output", ((OFActionOutput)action).getPort().getPortNumber());
                     }
                 }
-                else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0
-                        || action.getType().compareTo(OFActionType.COPY_TTL_IN) == 0
+                else if(action.getType().compareTo(OFActionType.COPY_TTL_IN) == 0
                         || action.getType().compareTo(OFActionType.COPY_TTL_OUT) == 0
                         || action.getType().compareTo(OFActionType.DEC_MPLS_TTL) == 0
                         || action.getType().compareTo(OFActionType.DEC_NW_TTL) == 0
@@ -152,9 +151,9 @@
                         || action.getType().compareTo(OFActionType.POP_VLAN) == 0){
                     jGen.writeStringField(action.getType().name(), "True");
                 }
-                /*else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0){
+                else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0){
                     jGen.writeStringField("POP_MPLS", ((OFActionPopMpls)action).getEthertype().toString());
-                }*/
+                }
                 else if (action.getType().equals(OFActionType.SET_FIELD)){
                     //TODO Support for more setFields
                     if (((OFActionSetField)action).getField().toString().contains("OFOxmEthSrcVer13")){
diff --git a/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
index ade65fa..46a01f7 100644
--- a/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
@@ -66,6 +66,14 @@
                 else if(action.getType().compareTo(OFActionType.GROUP) == 0){
                     jGen.writeNumberField("goToGroup", ((OFActionGroup)action).getGroup().getGroupNumber());
                 }
+                else if(action.getType().compareTo(OFActionType.COPY_TTL_IN) == 0
+                        || action.getType().compareTo(OFActionType.COPY_TTL_OUT) == 0
+                        || action.getType().compareTo(OFActionType.DEC_MPLS_TTL) == 0
+                        || action.getType().compareTo(OFActionType.DEC_NW_TTL) == 0
+                        || action.getType().compareTo(OFActionType.POP_PBB) == 0
+                        || action.getType().compareTo(OFActionType.POP_VLAN) == 0){
+                    jGen.writeStringField(action.getType().name(), "True");
+                }
             }
             jGen.writeEndObject();
         }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
index 4d95d24..90f7a8f 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -226,7 +226,7 @@
         });
 
         testMode = POLICY_ADD1;
-        //testTask.reschedule(20, TimeUnit.SECONDS);
+        testTask.reschedule(20, TimeUnit.SECONDS);
     }
 
     @Override
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyInfo.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyInfo.java
index 6b98dcd..3a27267 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyInfo.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyInfo.java
@@ -12,11 +12,13 @@
     private String policyId;
     private int policyType;
     private int priority;
+    private String tunnelId = null;
     private PacketMatch match;
     
-    public SegmentRouterPolicyInfo(String Id,int type, int ppriority,PacketMatch flowEntries){
+    public SegmentRouterPolicyInfo(String Id,int type,String tunnelUsed, int ppriority,PacketMatch flowEntries){
         this.policyId = Id;
         this.policyType = type;
+        this.tunnelId =tunnelUsed;
         this.priority = ppriority;
         this.match = flowEntries;
     }
@@ -26,6 +28,9 @@
     public int getPolicyType(){
         return this.policyType;
     }
+    public String getTunnelId(){
+        return this.tunnelId;
+    }
     public int getPriority(){
         return this.priority;
     }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java
index fc38eaa..8106173 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterPolicyResource.java
@@ -116,10 +116,12 @@
         while(piI.hasNext()){
             PolicyInfo policy = piI.next();
             String policyId = policy.getPolicyId();
+            String tunnelId = policy.getTunnelId();
             int priority = policy.getPriority();
             int policyType = policy.getType();
             PacketMatch flowEntries = policy.getMatch();
-            SegmentRouterPolicyInfo pInfo = new SegmentRouterPolicyInfo(policyId, policyType, priority, flowEntries);
+            SegmentRouterPolicyInfo pInfo = new SegmentRouterPolicyInfo(policyId, policyType, tunnelId,
+                    priority,  flowEntries);
             policyList.add(pInfo);
         }
         log.debug("getPolicy with params");
