diff --git a/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java b/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
new file mode 100644
index 0000000000000000000000000000000000000000..94f4147d50417f101ff7a14558e9bf484d351606
--- /dev/null
+++ b/src/main/java/net/floodlightcontroller/core/module/ModuleLoaderResource.java
@@ -0,0 +1,74 @@
+package net.floodlightcontroller.core.module;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+
+import org.restlet.resource.Get;
+import org.restlet.resource.ServerResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ModuleLoaderResource extends ServerResource {
+    protected static Logger log = 
+            LoggerFactory.getLogger(ModuleLoaderResource.class);
+        
+        @Get("json")
+        public Map<String, Object> retrieve() {    
+            Map<String, Object> model = new HashMap<String, Object>();
+
+            Set<String> loadedModules = new HashSet<String>();
+            for (Object val : getContext().getAttributes().values()) {
+            	if ((val instanceof IFloodlightModule) || (val instanceof IFloodlightService)) {
+            		String serviceImpl = val.getClass().getCanonicalName();
+            		loadedModules.add(serviceImpl);
+            		// log.debug("Tracking serviceImpl " + serviceImpl);
+            	}
+            }
+
+            for (String moduleName : 
+            				FloodlightModuleLoader.moduleNameMap.keySet() ) {
+            	Map<String,Object> moduleInfo = new HashMap<String, Object>();
+
+            	IFloodlightModule module = 
+            				FloodlightModuleLoader.moduleNameMap.get(
+            						moduleName);
+            		
+            	Collection<Class<? extends IFloodlightService>> deps = 
+            			module.getModuleDependencies();
+            	if ( deps == null)
+                	deps = new HashSet<Class<? extends IFloodlightService>>();
+                moduleInfo.put("depends", deps);
+            	
+                Collection<Class<? extends IFloodlightService>> provides = 
+                		module.getModuleServices();
+            	if ( provides == null)
+                	provides = new HashSet<Class<? extends IFloodlightService>>();
+            	moduleInfo.put("provides", provides);            		
+
+        		moduleInfo.put("loaded", false);	// not loaded, by default
+
+            	// check if this module is loaded directly
+            	if (loadedModules.contains(module.getClass().getCanonicalName())) {
+            		moduleInfo.put("loaded", true);  			
+            	} else {
+            		// if not, then maybe one of the services it exports is loaded
+            		for (Class<? extends IFloodlightService> service : provides) {
+            			String modString = module.getServiceImpls().get(service).getClass().getCanonicalName();
+            			if (loadedModules.contains(modString))
+                    		moduleInfo.put("loaded", true);
+            			/* else 
+            				log.debug("ServiceImpl not loaded " + modString); */
+            		}
+            	}
+
+            	
+            	model.put(moduleName, moduleInfo);
+            }            
+            return model;
+        }      
+}
diff --git a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
index 8443c343c05faf1de14084dfbe37888066007741..ad168d66c950a1b19cecf567956e2e6cf5eea2b8 100644
--- a/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
+++ b/src/main/java/net/floodlightcontroller/core/web/CoreWebRoutable.java
@@ -17,6 +17,7 @@
 
 package net.floodlightcontroller.core.web;
 
+import net.floodlightcontroller.core.module.ModuleLoaderResource;
 import net.floodlightcontroller.restserver.RestletRoutable;
 
 import org.restlet.Context;
@@ -36,6 +37,7 @@ public class CoreWebRoutable implements RestletRoutable {
     @Override
     public Restlet getRestlet(Context context) {
         Router router = new Router(context);
+        router.attach("/module/list/json", ModuleLoaderResource.class);
         router.attach("/switch/all/{statType}/json", AllSwitchStatisticsResource.class);
         router.attach("/switch/{switchId}/{statType}/json", SwitchStatisticsResource.class);
         router.attach("/controller/switches/json", ControllerSwitchesResource.class);