diff --git a/src/main/java/net/floodlightcontroller/core/web/OFPortStatsEntryMod.java b/src/main/java/net/floodlightcontroller/core/web/OFPortStatsEntryMod.java
new file mode 100644
index 0000000..222f279
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/core/web/OFPortStatsEntryMod.java
@@ -0,0 +1,23 @@
+package net.floodlightcontroller.core.web;
+
+import net.floodlightcontroller.core.web.serializers.OFPortStatsEntrySerializer;
+
+import org.codehaus.jackson.map.annotate.JsonSerialize;
+import org.projectfloodlight.openflow.protocol.OFPortStatsEntry;
+
+@JsonSerialize(using = OFPortStatsEntrySerializer.class)
+public class OFPortStatsEntryMod {
+	private OFPortStatsEntry portStatsEntry = null;
+
+	public OFPortStatsEntryMod() {
+	}
+
+	public OFPortStatsEntryMod(OFPortStatsEntry portStatsEntry) {
+		this.portStatsEntry = portStatsEntry;
+	}
+
+	public OFPortStatsEntry getPortStatsEntry() {
+		return portStatsEntry;
+	}
+}
+
diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
index 0c2188a..38b0d1e 100644
--- a/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
+++ b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
@@ -17,6 +17,7 @@
 
 package net.floodlightcontroller.core.web;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
@@ -28,6 +29,9 @@
 import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
 import org.projectfloodlight.openflow.protocol.OFMatchV3;
 import org.projectfloodlight.openflow.protocol.OFOxmList;
+import org.projectfloodlight.openflow.protocol.OFPortStatsEntry;
+import org.projectfloodlight.openflow.protocol.OFPortStatsReply;
+import org.projectfloodlight.openflow.protocol.OFPortStatsRequest;
 import org.projectfloodlight.openflow.protocol.OFStatsReply;
 import org.projectfloodlight.openflow.protocol.OFStatsRequest;
 import org.projectfloodlight.openflow.protocol.OFStatsType;
@@ -97,13 +101,6 @@
                 specificReq.setTableId((byte) 0xff);
                 req.setStatistics(Collections.singletonList((OFStatistics) specificReq));
                 requestLength += specificReq.getLength();
-            } */else if (statType == OFStatsType.PORT) {
-            	log.debug("Switch Port Stats: req sent for all "
-            			+ "ports in switch {}", sw.getStringId());
-                req = sw.getFactory()
-        	 		.buildPortStatsRequest()
-        	 		.setPortNo(OFPort.ANY).setXid
-        	 		(sw.getNextTransactionId()).build();
             } /*else if (statType == OFStatisticsType.QUEUE) {
                 OFQueueStatisticsRequest specificReq = new OFQueueStatisticsRequest();
                 specificReq.setPortNumber(OFPort.OFPP_ALL.getValue());
@@ -127,7 +124,43 @@
         return values;
     }
 
-    protected List<OFStatsReply> getSwitchStatistics(String switchId, OFStatsType statType) {
+    protected List<OFPortStatsEntryMod> getSwitchPortStatistics(long switchId) {
+    	IFloodlightProviderService floodlightProvider =
+    				(IFloodlightProviderService) getContext().getAttributes().
+    				get(IFloodlightProviderService.class.getCanonicalName());
+
+    	IOFSwitch sw = floodlightProvider.getSwitches().get(switchId);
+    	Future<List<OFStatsReply>> future;
+    	List<OFStatsReply> values = null;
+    	List<OFPortStatsEntryMod> portStats = null;
+
+    	if (sw != null) {
+        	log.debug("Switch Port Stats: req sent for all "
+        			+ "ports in switch {}", sw.getStringId());
+       	    OFPortStatsRequest req = sw.getFactory()
+    	 		.buildPortStatsRequest()
+    	 		.setPortNo(OFPort.ANY).setXid
+    	 		(sw.getNextTransactionId()).build();
+
+            try {
+                future = sw.getStatistics(req);
+                values = future.get(10, TimeUnit.SECONDS);
+                portStats = new ArrayList<OFPortStatsEntryMod>();
+                for (OFPortStatsEntry entry : ((OFPortStatsReply)values.get(0)).getEntries()) {
+                    OFPortStatsEntryMod entryMod = new OFPortStatsEntryMod(entry);
+                    portStats.add(entryMod);
+                }
+            	log.debug("Switch Port Stats Entries from switch {} are {}",
+            			sw.getStringId(), portStats);
+            } catch (Exception e) {
+                log.error("Failure retrieving statistics from switch " + sw, e);
+            }
+    	}
+
+    	return portStats;
+    }
+
+    protected Object getSwitchStatistics(String switchId, OFStatsType statType) {
         return getSwitchStatistics(HexString.toLong(switchId), statType);
     }
 
diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java b/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
index e86bb61..8c794ab 100644
--- a/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/SwitchStatisticsResource.java
@@ -18,9 +18,9 @@
 package net.floodlightcontroller.core.web;
 
 import java.util.HashMap;
-import java.util.Map;
 
 import org.projectfloodlight.openflow.protocol.OFStatsType;
+import org.projectfloodlight.openflow.util.HexString;
 import org.restlet.resource.Get;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -36,7 +36,7 @@
             LoggerFactory.getLogger(SwitchStatisticsResource.class);
 
     @Get("json")
-    public Map<String, Object> retrieve() {
+    public HashMap<String, Object> retrieve() {
         HashMap<String, Object> result = new HashMap<String, Object>();
         Object values = null;
 
@@ -44,7 +44,7 @@
         String statType = (String) getRequestAttributes().get("statType");
 
         if (statType.equals("port")) {
-            values = getSwitchStatistics(switchId, OFStatsType.PORT);
+            values = getSwitchPortStatistics(HexString.toLong(switchId));
         } else if (statType.equals("queue")) {
             values = getSwitchStatistics(switchId, OFStatsType.QUEUE);
         } else if (statType.equals("flow")) {
@@ -61,5 +61,6 @@
 
         result.put(switchId, values);
         return result;
+        //return toRepresentation(result, null);
     }
 }
diff --git a/src/main/java/net/floodlightcontroller/core/web/serializers/OFPortStatsEntrySerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/OFPortStatsEntrySerializer.java
new file mode 100644
index 0000000..c9293f7
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFPortStatsEntrySerializer.java
@@ -0,0 +1,42 @@
+package net.floodlightcontroller.core.web.serializers;
+
+import java.io.IOException;
+
+import net.floodlightcontroller.core.web.OFPortStatsEntryMod;
+
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.map.SerializerProvider;
+import org.codehaus.jackson.map.ser.std.SerializerBase;
+import org.projectfloodlight.openflow.protocol.OFPortStatsEntry;
+
+public class OFPortStatsEntrySerializer extends SerializerBase<OFPortStatsEntryMod> {
+
+    protected OFPortStatsEntrySerializer() {
+        super(OFPortStatsEntryMod.class);
+    }
+
+    @Override
+    public void serialize(OFPortStatsEntryMod portStatModEntry, JsonGenerator jGen,
+    		SerializerProvider sp) throws IOException, JsonGenerationException {
+
+    	OFPortStatsEntry portStatEntry = portStatModEntry.getPortStatsEntry();
+        jGen.writeStartObject();
+        jGen.writeNumberField("portNumber", portStatEntry.getPortNo().getPortNumber());
+        jGen.writeNumberField("receivePackets", portStatEntry.getRxPackets().getValue());
+        jGen.writeNumberField("transmitPackets", portStatEntry.getTxPackets().getValue());
+        jGen.writeNumberField("receiveBytes", portStatEntry.getRxBytes().getValue());
+        jGen.writeNumberField("transmitBytes", portStatEntry.getTxBytes().getValue());
+        jGen.writeNumberField("receiveDropped", portStatEntry.getRxDropped().getValue());
+        jGen.writeNumberField("transmitDropped", portStatEntry.getTxDropped().getValue());
+        jGen.writeNumberField("receiveErrors", portStatEntry.getRxErrors().getValue());
+        jGen.writeNumberField("transmitErrors", portStatEntry.getTxErrors().getValue());
+        jGen.writeNumberField("receiveFrameErrors", portStatEntry.getRxFrameErr().getValue());
+        jGen.writeNumberField("receiveOverrunErrors", portStatEntry.getRxOverErr().getValue());
+        jGen.writeNumberField("receiveCRCErrors", portStatEntry.getRxCrcErr().getValue());
+        jGen.writeNumberField("collisions", portStatEntry.getCollisions().getValue());
+
+        jGen.writeEndObject();
+    }
+
+}
