diff --git a/src/main/java/net/floodlightcontroller/core/web/ClearFlowTableResource.java b/src/main/java/net/floodlightcontroller/core/web/ClearFlowTableResource.java
deleted file mode 100644
index c2d2eb4..0000000
--- a/src/main/java/net/floodlightcontroller/core/web/ClearFlowTableResource.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package net.floodlightcontroller.core.web;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import net.floodlightcontroller.core.IFloodlightProviderService;
-import net.floodlightcontroller.core.IOFSwitch;
-
-import org.codehaus.jackson.map.ObjectMapper;
-import org.openflow.util.HexString;
-import org.restlet.resource.Post;
-import org.restlet.resource.ServerResource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ClearFlowTableResource extends ServerResource {
-	static Logger log = LoggerFactory.getLogger(ClearFlowTableResource.class);
-
-	@Post("json")
-	public List<String> ClearFlowTable(String jsonData){
-		IFloodlightProviderService floodlightProvider = 
-				(IFloodlightProviderService) getContext().getAttributes()
-				.get(IFloodlightProviderService.class.getCanonicalName());
-		
-		Map<Long, IOFSwitch> switches = floodlightProvider.getSwitches();
-		
-		List<String> response = new ArrayList<String>();
-		ObjectMapper mapper = new ObjectMapper();
-		String[] dpids = null;
-		try {
-			dpids = mapper.readValue(jsonData, String[].class);
-		} catch (IOException e) {
-			log.debug("Error parsing switch dpid array: {}", e.getMessage());
-			response.add("Error parsing input");
-			return response;
-		}
-		
-		
-		for (String dpid : dpids){
-			IOFSwitch sw = switches.get(HexString.toLong(dpid));
-			if (sw != null){
-				sw.clearAllFlowMods();
-				response.add(dpid + " cleared");
-			}
-			else {
-				response.add(dpid + " not found");
-			}
-		}
-		
-		return response;
-	}
-
-}
diff --git a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
index 00b692f..c97502b 100644
--- a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
+++ b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
@@ -21,6 +21,8 @@
 import net.floodlightcontroller.linkdiscovery.web.TopoLinksResource;
 import net.floodlightcontroller.devicemanager.web.TopoDevicesResource;
 import net.floodlightcontroller.restserver.RestletRoutable;
+import net.onrc.onos.ofcontroller.core.web.ClearFlowTableResource;
+import net.onrc.onos.ofcontroller.core.web.TopoSwitchesResource;
 
 import org.restlet.Context;
 import org.restlet.Restlet;
diff --git a/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java b/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
deleted file mode 100644
index a4e991f..0000000
--- a/src/main/java/net/floodlightcontroller/core/web/TopoSwitchesResource.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package net.floodlightcontroller.core.web;
-
-import java.util.Iterator;
-
-import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.core.internal.TopoSwitchServiceImpl;
-
-import org.restlet.resource.Get;
-import org.restlet.resource.ServerResource;
-
-public class TopoSwitchesResource extends ServerResource {
-	
-	@Get("json")
-	public Iterator<ISwitchObject> retrieve() {
-		TopoSwitchServiceImpl impl = new TopoSwitchServiceImpl();
-		
-		String filter = (String) getRequestAttributes().get("filter");
-		
-		if (filter.equals("active")) {
-			return (Iterator<ISwitchObject>) impl.getActiveSwitches().iterator();
-		}
-		if (filter.equals("inactive")) {
-			return (Iterator<ISwitchObject>) impl.getInactiveSwitches().iterator();
-		} else {
-		    return (Iterator<ISwitchObject>) impl.getAllSwitches().iterator();
-		}
-	}
-
-}
