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");
