diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
index 12ee18c..1f5cb12 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
@@ -2,6 +2,8 @@
 
 
 
+import static net.onrc.onos.core.topology.web.TopologyResource.eval;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -18,11 +20,9 @@
 import net.sf.json.JSONObject;
 
 import org.projectfloodlight.openflow.util.HexString;
-import org.restlet.resource.ServerResource;
 import org.restlet.representation.Representation;
 import org.restlet.resource.Get;
-
-import static net.onrc.onos.core.topology.web.TopologyResource.eval;
+import org.restlet.resource.ServerResource;
 /**
  * Base class for return router statistics
  *
@@ -62,7 +62,7 @@
                 if (sw.getAllStringAttributes().containsKey("subnets")){
                     subnets = sw.getAllStringAttributes().get("subnets");
                     JSONArray subnetArray = JSONArray.fromObject(subnets);
-                    Iterator pI = portList.iterator();
+                    Iterator<Port> pI = portList.iterator();
                     while(pI.hasNext()){
                         Port p = (Port) pI.next();
                         Iterator sI = subnetArray.iterator();
@@ -81,7 +81,7 @@
                     return eval(toRepresentation(result,null));
                 }
                 else{
-                    Iterator pI = portList.iterator();
+                    Iterator<Port> pI = portList.iterator();
                     while(pI.hasNext()){
                         Port p = (Port) pI.next();
                         String subnet = null;
