diff --git a/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java b/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java
index e07c65e..d97289c 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/AbstractDriverLoader.java
@@ -23,31 +23,37 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.InputStream;
-
 /**
- * Bootstrap for built in drivers.
+ * Abstract boot-strapper for loading and registering driver definitions.
  */
 @Component
 public abstract class AbstractDriverLoader {
 
     private final Logger log = LoggerFactory.getLogger(getClass());
 
-    //private static final String DRIVERS_XML = "/onos-drivers.xml";
-
     private DriverProvider provider;
+    private final String path;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected DriverAdminService driverAdminService;
 
+    /**
+     * Creates a new loader for resource with the specified path.
+     *
+     * @param path drivers definition XML resource path
+     */
+    protected AbstractDriverLoader(String path) {
+        this.path = path;
+    }
+
     @Activate
     protected void activate() {
         try {
-            provider = new XmlDriverLoader(getClassLoaderInstance())
-                    .loadDrivers(loadXmlDriversStream(), driverAdminService);
+            provider = new XmlDriverLoader(getClass().getClassLoader())
+                    .loadDrivers(getClass().getResourceAsStream(path), driverAdminService);
             driverAdminService.registerProvider(provider);
         } catch (Exception e) {
-            log.error("Unable to load default drivers", e);
+            log.error("Unable to load {} driver definitions", path, e);
         }
         log.info("Started");
     }
@@ -58,8 +64,4 @@
         log.info("Stopped");
     }
 
-    protected abstract InputStream loadXmlDriversStream();
-
-    protected abstract ClassLoader getClassLoaderInstance();
-
 }
diff --git a/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java b/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java
index d7b8b03..1a19d19 100644
--- a/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java
+++ b/drivers/ciena/src/main/java/org/onosproject/drivers/ciena/CienaDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for Ciena device drivers from specific xml.
+ * Loader for Ciena device drivers.
  */
 @Component(immediate = true)
 public class CienaDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/ciena-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public CienaDriversLoader() {
+        super("/ciena-drivers.xml");
     }
 }
diff --git a/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java b/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
index d7d13f6..fcfd171 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/DefaultDriversLoader.java
@@ -21,24 +21,13 @@
 import org.onosproject.net.driver.AbstractDriverLoader;
 import org.onosproject.net.driver.DefaultDriverProviderService;
 
-import java.io.InputStream;
-
 /**
- * Loader for default device drivers from specific xml.
+ * Loader for default device drivers.
  */
 @Service
 @Component(immediate = true)
 public class DefaultDriversLoader extends AbstractDriverLoader implements DefaultDriverProviderService {
-
-    private static final String DRIVERS_XML = "/onos-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-       return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public DefaultDriversLoader() {
+        super("/onos-drivers.xml");
     }
 }
diff --git a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
index db7bae1..78d6fbd 100644
--- a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
+++ b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/FujitsuDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for Fujitsu device drivers from specific xml.
+ * Loader for Fujitsu device drivers.
  */
 @Component(immediate = true)
 public class FujitsuDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/fujitsu-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public FujitsuDriversLoader() {
+        super("/fujitsu-drivers.xml");
     }
 }
diff --git a/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java b/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
index daea8bb..1e6e903 100644
--- a/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
+++ b/drivers/netconf/src/main/java/org/onosproject/drivers/netconf/NetconfDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for NETCONF device drivers from specific xml.
+ * Loader for NETCONF device drivers.
  */
 @Component(immediate = true)
 public class NetconfDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/netconf-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public NetconfDriversLoader() {
+        super("/netconf-drivers.xml");
     }
 }
diff --git a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
index 960a4c3..32a8a52 100644
--- a/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
+++ b/drivers/ovsdb/src/main/java/org/onosproject/drivers/ovsdb/OvsdbDriversLoader.java
@@ -19,23 +19,12 @@
 import org.apache.felix.scr.annotations.Component;
 import org.onosproject.net.driver.AbstractDriverLoader;
 
-import java.io.InputStream;
-
 /**
- * Loader for OVSDB device drivers from specific xml.
+ * Loader for OVSDB device drivers.
  */
 @Component(immediate = true)
 public class OvsdbDriversLoader extends AbstractDriverLoader {
-
-    private static final String DRIVERS_XML = "/ovsdb-drivers.xml";
-
-    @Override
-    protected InputStream loadXmlDriversStream() {
-        return getClassLoaderInstance().getResourceAsStream(DRIVERS_XML);
-    }
-
-    @Override
-    protected ClassLoader getClassLoaderInstance() {
-        return getClass().getClassLoader();
+    public OvsdbDriversLoader() {
+        super("/ovsdb-drivers.xml");
     }
 }
