Stats Improvement
diff --git a/cli/cli/c_actions.py b/cli/cli/c_actions.py
index 637116d..675a8c5 100755
--- a/cli/cli/c_actions.py
+++ b/cli/cli/c_actions.py
@@ -42,7 +42,33 @@
 onos=1
 #
 # ACTION PROCS
-#
+#Format actions for stats per table
+def format_actions(actions):
+    if actions == '':
+        newActions = '*'
+    else:
+        #TODO: Check:- Why I have to remove last two character from string
+        #instead of 1 character to get rid of comma from last aciton
+        actions = actions[:-2]
+        a=''
+        b=''
+        newActions=''
+        isRemoved_u = False
+        for ch in actions:
+            if ch =='u':
+                a= 'u'
+            if ch =='\'':
+                b= '\''
+                if isRemoved_u:
+                    isRemoved_u=False
+                    continue
+                if (a+b) == 'u\'':
+                    newActions = newActions[:-1]
+                    a= ''
+                    isRemoved_u = True
+            else:
+                newActions += ch
+    return newActions
 
 def check_rest_result(result, message=None):
     if isinstance(result, collections.Mapping):
@@ -1982,36 +2008,47 @@
                 match = ipTableEntry['match']
                 if match :
                     networkDestination = match[0].get('networkDestination') if match[0].get('networkDestination') else '*'
-                    #raise error.ArgumentValidationError('\n\n\n %s' %match)
-                #else:
-                #     networkSource = None
-                #     networkDestination = None
+                    #raise error.ArgumentValidationError('\n\n\n %s' % json.tool(entries))
+                instructions = ipTableEntry['instructions']
+                actions = ''
+                for instruction in instructions:
+                    actions +=  str(instruction)
+                    actions += ", "
+                actions = format_actions(actions)
                 combResult.append({
                        'switch'        : ipTableEntry['switch'],
                        'byteCount'     : ipTableEntry['byteCount'],
                        'packetCount'   : ipTableEntry['packetCount'],
+                       'priority'      : ipTableEntry['priority'],
                        'cookie'        : ipTableEntry['cookie'],
                        'durationSeconds'         : ipTableEntry['durationSec'],
                        'networkDestination'      : networkDestination,
+                       'actions'                 : actions,
                     })
         elif data['tabletype'] == 'mpls':
+            import unicodedata
             for ipTableEntry in entries:
                 match = ipTableEntry['match']
                 if match :
-                    mplsTc = match[0].get('mplsTc')
-                    mplsLabel = match[0].get('mplsLabel')
-                    #raise error.ArgumentValidationError('\n\n\n %s' %match)
-                #else:
-                #     networkSource = None
-                #     networkDestination = None
+                    mplsTc = match[0].get('mplsTc') if match[0].get('mplsTc') else '*'
+                    mplsLabel = match[0].get('mplsLabel') if match[0].get('mplsLabel') else '*'
+                instructions = ipTableEntry['instructions']
+                actions = ''
+                #raise error.ArgumentValidationError('\n\n\n %s' %len(actions))
+                for instruction in instructions:
+                    actions +=  str(instruction).encode('ascii', 'ignore')
+                    actions += ", "
+                actions = format_actions(actions)
                 combResult.append({
                        'switch'        : ipTableEntry['switch'],
                        'byteCount'     : ipTableEntry['byteCount'],
                        'packetCount'   : ipTableEntry['packetCount'],
                        'cookie'        : ipTableEntry['cookie'],
+                       'priority'      : ipTableEntry['priority'],
                        'mplsTc'         : mplsTc,
                        'mplsLabel'      : mplsLabel,
-                       'durationSeconds'        : ipTableEntry['durationSec']
+                       'durationSeconds'        : ipTableEntry['durationSec'],
+                       'actions'        : actions
                     })
         elif data['tabletype'] == 'acl':
             for ipTableEntry in entries:
@@ -2029,11 +2066,19 @@
                     dataLayerSource = match[0].get('dataLayerSource') if match[0].get('dataLayerSource') else '*'
                     dataLayerDestination = match[0].get('dataLayerDestination') if match[0].get('dataLayerDestination') else '*'
                     dataLayerType= match[0].get('dataLayerType') if match[0].get('dataLayerType') else '*'
+                instructions = ipTableEntry['instructions']
+                actions = ''
+                #raise error.ArgumentValidationError('\n\n\n %s' %len(actions))
+                for instruction in instructions:
+                    actions +=  str(instruction).encode('ascii', 'ignore')
+                    actions += ", "
+                actions = format_actions(actions)
                 combResult.append({
                        'switch'        : ipTableEntry['switch'],
                        'byteCount'     : ipTableEntry['byteCount'],
                        'packetCount'   : ipTableEntry['packetCount'],
                        'cookie'        : ipTableEntry['cookie'],
+                       'priority'      : ipTableEntry['priority'],
                        'inputPort'               : inputPort,
                        'durationSeconds'         : ipTableEntry['durationSec'],
                        'networkSource'           : networkSource,
@@ -2045,7 +2090,8 @@
                        'mplsTc'                  : mplsTc,
                        'mplsLabel'               : mplsLabel,
                        'transportDestination'    : transportDestination,
-                       'transportSource'         : transportSource
+                       'transportSource'         : transportSource,
+                       'actions'                 : actions
                     })
         entries = combResult
 
diff --git a/cli/cli/desc/version200/core.py b/cli/cli/desc/version200/core.py
index 8c56945..695d692 100755
--- a/cli/cli/desc/version200/core.py
+++ b/cli/cli/desc/version200/core.py
@@ -1821,31 +1821,31 @@
     'realtime_table_ip_flow' : {
         'field-orderings' : {
             'default' : [
-                          'Idx', 'switch', 'cookie', 
-                          'byteCount', 'packetCount',
-                          'actions', 'networkDestination',
-                          'flow-brief',
+                          'Idx',  'cookie', 
+                          'byteCount', 'packetCount','priority',
+                          'networkDestination',
+                          'flow-brief','actions'
                         ],
             'scoped'  : [
-                          'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'networkDestination', 
+                          'Idx',  'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'networkDestination', 'actions'
                         ],
-            'brief'   : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'networkDestination'
+            'brief'   : [ 'Idx',  'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'networkDestination', 'actions'
                           ],
-            'default' : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'networkDestination'
+            'default' : [ 'Idx', 'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'networkDestination', 'actions'
                           ],
-            'scoped'  : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'networkDestination'
+            'scoped'  : [ 'Idx', 'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'networkDestination', 'actions'
                           ],
-            'details' : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'networkDestination'
+            'details' : [ 'Idx', 'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority'
+                          'networkDestination', 'actions'
                           ],
             #'vns_flow': [ 'Idx', 'dataLayerSource', 'dataLayerDestination', 'dataLayerVirtualLan', 'dataLayerType'],
             #'summary' : [ 'Idx', 'vnsName', 'vnsFlowCnt', 'flowEntryCnt'],
@@ -1926,7 +1926,6 @@
                                        'formatter' : fmtcnv.decode_dst_port
                                  },
             'actions'          : { 'verbose-name' : 'Actions',
-                                    'formatter' : fmtcnv.decode_actions
                                  },
             'vnsName'          : { 'verbose-name' : 'VNS'
                                  },
@@ -1944,31 +1943,31 @@
     'realtime_table_mpls_flow' : {
         'field-orderings' : {
             'default' : [
-                          'Idx', 'switch', 'cookie', 
+                          'Idx', 'cookie', 'priority',
                           'byteCount', 'packetCount',
-                          'actions', 'mplsTc', 'mplsLabel',
-                          'flow-brief',
+                          'mplsTc', 'mplsLabel',
+                          'flow-brief', 'actions'
                         ],
             'scoped'  : [
-                          'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'mplsTc', 'mplsLabel'
+                          'Idx', 'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie', 'priority',
+                          'mplsTc', 'mplsLabel','actions'
                         ],
-            'brief'   : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'mplsTc', 'mplsLabel'
+            'brief'   : [ 'Idx', 'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'mplsTc', 'mplsLabel','actions'
                           ],
-            'default' : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'mplsTc', 'mplsLabel'
+            'default' : [ 'Idx',  'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'mplsTc', 'mplsLabel','actions'
                           ],
-            'scoped'  : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'mplsTc', 'mplsLabel'
+            'scoped'  : [ 'Idx',  'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'mplsTc', 'mplsLabel','actions'
                           ],
-            'details' : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie',
-                          'mplsTc', 'mplsLabel'
+            'details' : [ 'Idx', 'byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority',
+                          'mplsTc', 'mplsLabel','actions'
                           ],
             #'vns_flow': [ 'Idx', 'dataLayerSource', 'dataLayerDestination', 'dataLayerVirtualLan', 'dataLayerType'],
             #'summary' : [ 'Idx', 'vnsName', 'vnsFlowCnt', 'flowEntryCnt'],
@@ -2048,8 +2047,7 @@
             'transportDestination' : { 'verbose-name' : 'Dst Port',
                                        'formatter' : fmtcnv.decode_dst_port
                                  },
-            'actions'          : { 'verbose-name' : 'Actions',
-                                    'formatter' : fmtcnv.decode_actions
+            'actions'          : { 'verbose-name' : 'Actions'
                                  },
             'vnsName'          : { 'verbose-name' : 'VNS'
                                  },
@@ -2073,35 +2071,35 @@
     'realtime_table_acl_flow' : {
         'field-orderings' : {
             'default' : [
-                          'Idx', 'switch', 'cookie', 
+                          'Idx',  'cookie', 'priority'
                           'byteCount', 'packetCount',
-                          'actions', 'dataLayerSource', 'dataLayerDestination',
-                          'flow-brief','mplsTc','mplsLabel'
+                         'dataLayerSource', 'dataLayerDestination',
+                          'flow-brief','mplsTc','mplsLabel','actions'
                         ],
             'scoped'  : [
-                          'Idx', 'cookie', 
+                          'Idx', 'cookie', 'priority',
                           'byteCount', 'packetCount',
-                          'actions', 'dataLayerSource', 'dataLayerDestination','mplsTc','mplsLabel',
-                          'flow-brief',
+                          'dataLayerSource', 'dataLayerDestination','mplsTc','mplsLabel',
+                          'flow-brief','actions'
 
                         ],
-            'brief'   : [ 'Idx', 'switch', 'cookie', 'dataLayerSource', 'dataLayerDestination',
+            'brief'   : [ 'Idx', 'cookie','priority', 'dataLayerSource', 'dataLayerDestination',
                           'networkSource', 'networkDestination', 'networkProtocol',
-                          'transportSource', 'transportDestination','mplsTc','mplsLabel'],
-            'default' : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie', 'inputPort', 'dataLayerSource', 'dataLayerDestination',
+                          'transportSource', 'transportDestination','mplsTc','mplsLabel','actions'],
+            'default' : [ 'Idx','byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority', 'inputPort', 'dataLayerSource', 'dataLayerDestination',
                           'dataLayerType', 'networkSource', 'networkDestination', 'networkProtocol',
-                          'transportSource', 'transportDestination','mplsTc','mplsLabel'],
-            'scoped'  : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie', 'inputPort', 'dataLayerSource', 'dataLayerDestination',
+                          'transportSource', 'transportDestination','mplsTc','mplsLabel', 'actions'],
+            'scoped'  : [ 'Idx','byteCount', 'packetCount', 'durationSeconds',
+                          'cookie','priority', 'inputPort', 'dataLayerSource', 'dataLayerDestination',
                           'dataLayerType', 'networkSource', 'networkDestination', 'networkProtocol',
-                          'transportSource', 'transportDestination','mplsTc','mplsLabel'],
-            'details' : [ 'Idx', 'switch', 'byteCount', 'packetCount', 'durationSeconds',
-                          'cookie', 'hardTimeout', 'idleTimeout', 'priority', 'tableId', 'inputPort',
+                          'transportSource', 'transportDestination','mplsTc','mplsLabel','actions'],
+            'details' : [ 'Idx','byteCount', 'packetCount', 'durationSeconds',
+                          'cookie', 'priority','hardTimeout', 'idleTimeout', 'priority', 'tableId', 'inputPort',
                           'dataLayerSource', 'dataLayerDestination', 'dataLayerType', 'dataLayerVirtualLan',
                           'dataLayerVirtualLanPriorityCodePoint', 'networkSource', 'networkDestination',
                           'networkProtocol', 'transportSource', 'transportDestination',
-                          'networkTypeOfService', 'actions','mplsTc','mplsLabel'],
+                          'networkTypeOfService','mplsTc','mplsLabel', 'actions'],
             #'vns_flow': [ 'Idx', 'dataLayerSource', 'dataLayerDestination', 'dataLayerVirtualLan', 'dataLayerType'],
             #'summary' : [ 'Idx', 'vnsName', 'vnsFlowCnt', 'flowEntryCnt'],
             },
@@ -2180,8 +2178,7 @@
             'transportDestination' : { 'verbose-name' : 'Dst Port',
                                        'formatter' : fmtcnv.decode_dst_port
                                  },
-            'actions'          : { 'verbose-name' : 'Actions',
-                                    'formatter' : fmtcnv.decode_actions
+            'actions'          : { 'verbose-name' : 'Actions'
                                  },
             'vnsName'          : { 'verbose-name' : 'VNS'
                                  },
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 4f71dc9..4a83230 100644
--- a/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFFlowStatsEntryModSerializer.java
@@ -6,9 +6,9 @@
 import java.util.Set;
 
 import net.floodlightcontroller.core.web.OFFlowStatsEntryMod;
+import net.onrc.onos.core.packet.IPv4;
 
 import org.projectfloodlight.openflow.protocol.action.*;
-import org.apache.commons.codec.binary.Hex;
 import org.codehaus.jackson.JsonGenerationException;
 import org.codehaus.jackson.JsonGenerator;
 import org.codehaus.jackson.map.SerializerProvider;
@@ -23,7 +23,6 @@
 import org.projectfloodlight.openflow.protocol.instruction.*;
 import org.projectfloodlight.openflow.protocol.match.MatchFields;
 import org.projectfloodlight.openflow.protocol.oxm.OFOxm;
-import org.projectfloodlight.openflow.protocol.ver13.OFInstructionTypeSerializerVer13;
 
 public class OFFlowStatsEntryModSerializer extends SerializerBase<OFFlowStatsEntryMod> {
     
@@ -41,18 +40,14 @@
         List<OFInstruction> instructions = flowStatsEntry.getInstructions();
         Set<OFFlowModFlags> flags = flowStatsEntry.getFlags();
         jGen.writeStartObject();
-        
+        //System.out.println("flowstats:\n\n\n"+ flowStatsEntry);
         jGen.writeNumberField("byteCount", flowStatsEntry.getByteCount().getValue());
         jGen.writeNumberField("packetCount", flowStatsEntry.getPacketCount().getValue());
         jGen.writeNumberField("priority", flowStatsEntry.getPriority());
         jGen.writeNumberField("cookie", flowStatsEntry.getCookie().getValue());
         jGen.writeNumberField("durationNsec", flowStatsEntry.getDurationNsec());
         jGen.writeNumberField("durationSec", flowStatsEntry.getDurationSec());
-        jGen.writeArrayFieldStart("flags");
-        for (OFFlowModFlags flag: flags){
-            jGen.writeNullField(flag.name());;
-        }
-        jGen.writeEndArray();
+        jGen.writeObjectField("flags", flowStatsEntry.getFlags());
         jGen.writeNumberField("hardTimeout", flowStatsEntry.getHardTimeout());
         jGen.writeNumberField("idleTimeout", flowStatsEntry.getIdleTimeout());
         jGen.writeArrayFieldStart("match");
@@ -60,12 +55,21 @@
         Iterator<OFOxm<?>> match= matches.iterator();
         while(match.hasNext()){
             OFOxm<?> matchGeneric = match.next();
-            //jGen.writeObjectField(matchGeneric.getMatchField().id.toString(), matchGeneric.getValue().toString());
             if (matchGeneric.getMatchField().id == MatchFields.IPV4_DST){
-                jGen.writeStringField("networkDestination", matchGeneric.getValue().toString());
+                jGen.writeStringField("networkDestination", matchGeneric.getValue().toString()
+                        +"/"
+                        +(matchGeneric.isMasked() ?
+                                OFFlowStatsEntryModSerializer.covertToMask(
+                                        IPv4.toIPv4Address(
+                                                matchGeneric.getMask().toString())):"0"));
             }
             else if (matchGeneric.getMatchField().id == MatchFields.IPV4_SRC){
-                jGen.writeStringField("networkSource", matchGeneric.getValue().toString());
+                jGen.writeStringField("networkSource", matchGeneric.getValue().toString()
+                        +"/"
+                        +(matchGeneric.isMasked() ?
+                                OFFlowStatsEntryModSerializer.covertToMask(
+                                        IPv4.toIPv4Address(
+                                                matchGeneric.getMask().toString())):"0"));
             }
             else if (matchGeneric.getMatchField().id == MatchFields.ETH_DST){
                 jGen.writeStringField("dataLayerDestination", matchGeneric.getValue().toString());
@@ -74,80 +78,99 @@
                 jGen.writeStringField("dataLayerSource", matchGeneric.getValue().toString());
             }
             else if (matchGeneric.getMatchField().id == MatchFields.ETH_TYPE){
-                jGen.writeNumberField("dataLayerType", Integer.decode("0x"+matchGeneric.getValue().toString()));
+                jGen.writeNumberField("dataLayerType", Integer.decode(matchGeneric.getValue().toString()));
             }
             else if (matchGeneric.getMatchField().id == MatchFields.IN_PORT){
                 jGen.writeNumberField("inputPort", Integer.parseInt(matchGeneric.getValue().toString()));
             }
             else if (matchGeneric.getMatchField().id == MatchFields.MPLS_TC){
-                jGen.writeNumberField("mplsTc", Integer.parseInt(matchGeneric.getValue().toString()));
+                jGen.writeNumberField("mplsTc", Integer.decode(matchGeneric.getValue().toString()));
             }
             else if (matchGeneric.getMatchField().id == MatchFields.MPLS_LABEL){
-                jGen.writeNumberField("mplsLabel", Integer.parseInt(matchGeneric.getValue().toString()));
+                jGen.writeNumberField("mplsLabel", Integer.decode(matchGeneric.getValue().toString()));
             }
             else if (matchGeneric.getMatchField().id == MatchFields.IP_PROTO){
                 jGen.writeNumberField("networkProtocol", Integer.parseInt(matchGeneric.getValue().toString())); 
             }
             //TODO: Ask Saurav about the implementation of tcp and udp.
-            else if (matchGeneric.getMatchField().id == MatchFields.TCP_DST || matchGeneric.getMatchField().id == MatchFields.UDP_DST){
+            else if (matchGeneric.getMatchField().id == MatchFields.TCP_DST
+                    || matchGeneric.getMatchField().id == MatchFields.UDP_DST){
                 jGen.writeNumberField("transportDestination", Integer.parseInt(matchGeneric.getValue().toString()));
             }
-            else if (matchGeneric.getMatchField().id == MatchFields.TCP_SRC || matchGeneric.getMatchField().id == MatchFields.UDP_SRC){
+            else if (matchGeneric.getMatchField().id == MatchFields.TCP_SRC
+                    || matchGeneric.getMatchField().id == MatchFields.UDP_SRC){
                 jGen.writeNumberField("transportSource", Integer.parseInt(matchGeneric.getValue().toString()));
             }
         }
         jGen.writeEndObject();
         jGen.writeEndArray();
-
-        /*\jGen.writeArrayFieldStart("instructions");
-        jGen.writeStartObject();
+        jGen.writeFieldName("instructions");
+        jGen.writeStartArray();
+        List<OFAction> actions = null;
         for (OFInstruction instruction: instructions){
-            jGen.writeObjectField("instructionType", instruction.getType().name());
-            jGen.writeArrayFieldStart("actions");
-            jGen.writeStartObject();
-            //OFInstructionApplyActions newInstruction = instruction.getClass().cast(instruction);
-            //instruction = ;
-            //instruction.g
-            if (instruction.getType().equals(OFInstructionType.APPLY_ACTIONS)){
-                //import org.projectfloodlight.openflow.protocol.instruction.OFInstructionApplyActions
-                List<OFAction> actions = ((OFInstructionApplyActions) instruction).getActions();
-                for (OFAction action : actions){
-                    a
-                }
+            if(instruction.getType().equals(OFInstructionType.APPLY_ACTIONS)){
+                actions = ((OFInstructionApplyActions)instruction).getActions();
             }
-            else if (instruction.getType().equals(OFInstructionType.APPLY_ACTIONS)){
-                List<OFAction> actions = ((OFInstructionApplyActions) instruction).getActions();
+            else if(instruction.getType().equals(OFInstructionType.WRITE_ACTIONS)){
+                actions = ((OFInstructionWriteActions)instruction).getActions();
+            }
+            else{
+                continue;
+            }
+            jGen.writeStartObject();
+            jGen.writeFieldName(instruction.getType().name());
+            jGen.writeStartObject();
+            for (OFAction action : actions){
+                if (action.getType().equals(OFActionType.GROUP)){
+                    jGen.writeNumberField("group", ((OFActionGroup)action).getGroup().getGroupNumber());
+                }
+                else if (action.getType().equals(OFActionType.OUTPUT)){
+                    jGen.writeNumberField("group", ((OFActionOutput)action).getPort().getPortNumber());
+                }
+                else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0
+                        || 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");
+                }
+                else if(action.getType().compareTo(OFActionType.COPY_TTL_IN) == 0){
+                    jGen.writeStringField("POP_MPLS", "True");
+                }
+                else if (action.getType().equals(OFActionType.SET_FIELD)){
+                    //TODO Support for more setFields
+                    if (((OFActionSetField)action).getField().toString().contains("OFOxmEthSrcVer13")){
+                        jGen.writeStringField("SET_DL_SRC", ((OFActionSetField)action).getField().getValue().toString());
+                    }
+                    else if (((OFActionSetField)action).getField().toString().contains("OFOxmEthDstVer13")){
+                        jGen.writeStringField("SET_DL_DST", ((OFActionSetField)action).getField().getValue().toString());
+                    }
+                    else if (((OFActionSetField)action).getField().toString().contains("OFOxmNwDstVer13")){
+                        jGen.writeStringField("SET_NW_SRC", ((OFActionSetField)action).getField().getValue().toString());
+                    }
+                    else if (((OFActionSetField)action).getField().toString().contains("OFOxmNwDstVer13")){
+                        jGen.writeStringField("SET_NW_DST", ((OFActionSetField)action).getField().getValue().toString());
+                    }
+                    else if (((OFActionSetField)action).getField().toString().contains("OFOxmMplsLabelVer13")){
+                        jGen.writeStringField("PUSH_MPLS", ((OFActionSetField)action).getField().getValue().toString());
+                    }
+                }
             }
             jGen.writeEndObject();
-            jGen.writeEndArray();
         }
         jGen.writeEndObject();
-        jGen.writeEndArray();*/
+        jGen.writeEndArray();
         jGen.writeEndObject();
-
-        
-        //for (OFAction action : actions){
-            /*if(action.getType().compareTo(OFActionType.SET_FIELD) == 0){
-                /*
-                 * TODO: 1-Need better if condition.
-                 * TODO: 2-Complete REST response. (Right now we are only sending what 
-                 * SegmentRouter CLI needs).
-                 */
-                /*if (((OFActionSetField)action).getField().toString().contains("OFOxmEthSrcVer13")){
-                    jGen.writeStringField("SET_DL_SRC", ((OFActionSetField)action).getField().getValue().toString());
-                }
-                else if (((OFActionSetField)action).getField().toString().contains("OFOxmEthDstVer13")){
-                    jGen.writeStringField("SET_DL_DST", ((OFActionSetField)action).getField().getValue().toString());
-                }
-                System.out
-            }
-            else if(action.getType().compareTo(OFActionType.OUTPUT) == 0){
-                jGen.writeNumberField("OUTPPUT", ((OFActionOutput)action).getPort().getPortNumber());
-            }*/
-        //}
-        //jGen.writeEndObject();
-
     }
-    
+    public static int covertToMask(int x) {
+        x = x - ((x >>> 1) & 0x55555555); 
+        x = (x & 0x33333333) + ((x >>> 2) & 0x33333333); 
+        x = (x + (x >>> 4)) & 0x0F0F0F0F; 
+        x = x + (x >>> 8); 
+        x = x + (x >>> 16); 
+        return x & 0x0000003F; 
+    } 
 
 }
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 405679d..4033bc8 100644
--- a/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
@@ -36,8 +36,6 @@
             jGen.writeStartObject();
             List<OFAction> actions = bucket.getActions();
             for (OFAction action : actions ){
-                System.out.println("OFMessage: " + groupDescStatsEntryMod);
-                System.out.println("\naction.getType()\n"+ action.getType()+"\n"+ action.getClass());
                 if(action.getType().compareTo(OFActionType.SET_FIELD) == 0){
                     /*
                      * TODO: 1-Need better if condition.
@@ -63,7 +61,6 @@
                 //}
                 else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0){
                     jGen.writeStringField("POP_MPLS", "True");
-                    System.out.println("\n\n\nPOP:" + Integer.decode("0x"+((OFActionPopMpls)action).getEthertype().toString()));
                 }
                 
             }