diff --git a/index.js b/index.js
index 827907d..37b7021 100644
--- a/index.js
+++ b/index.js
@@ -28,8 +28,8 @@ function generateShortName (name, filename, css) {
   Custom `generateScopedName` function for `postcss-modules-scope`.
   Appends a hash of the css source.
 */
-function generateLongName (name, filename) {
-  var sanitisedPath = filename.replace(/\.[^\.\/\\]+$/, '')
+function generateLongName (name, filename, css, context) {
+  var sanitisedPath = path.relative(context, filename).replace(/\.[^\.\/\\]+$/, '')
       .replace(/[\W_]+/g, '_')
       .replace(/^_|_$/g, '');
 
@@ -102,46 +102,7 @@ module.exports = function (browserify, options) {
   var cssOutFilename = options.output || options.o;
   var jsonOutFilename = options.json || options.jsonOutput;
 
-  // PostCSS plugins passed to FileSystemLoader
-  var plugins = options.use || options.u;
-  if (!plugins) {
-    plugins = getDefaultPlugins(options);
-  }
-  else {
-    if (typeof plugins === 'string') {
-      plugins = [plugins];
-    }
-  }
-
-  var postcssAfter = options.postcssAfter || options.after || [];
-  plugins = plugins.concat(postcssAfter);
-
-  // load plugins by name (if a string is used)
-  plugins = plugins.map(function requirePlugin (name) {
-    // assume functions are already required plugins
-    if (typeof name === 'function') {
-      return name;
-    }
-
-    var plugin = require(require.resolve(name));
-
-    // custom scoped name generation
-    if (name === 'postcss-modules-scope') {
-      options[name] = options[name] || {};
-      if (!options[name].generateScopedName) {
-        options[name].generateScopedName = generateLongName;
-      }
-    }
-
-    if (name in options) {
-      plugin = plugin(options[name]);
-    }
-    else {
-      plugin = plugin.postcss || plugin();
-    }
-
-    return plugin;
-  });
+  var processorOptions = {to: options.to};
 
   // the compiled CSS stream needs to be avalible to the transform,
   // but re-created on each bundle call.
@@ -156,11 +117,11 @@ module.exports = function (browserify, options) {
     // collect visited filenames
     filenames.push(filename);
 
-    var loader = new FileSystemLoader(rootDir, plugins);
+    var loader = new FileSystemLoader(options, processorOptions);
     return through(function noop () {}, function end () {
       var self = this;
 
-      loader.fetch(path.relative(rootDir, filename), '/').then(function (tokens) {
+      loader.fetch(filename, filename, null).then(function (tokens) {
         var output = 'module.exports = ' + JSON.stringify(tokens);
 
         assign(tokensByFile, loader.tokensByFile);
diff --git a/package.json b/package.json
index f59de1f..574e5ef 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,6 @@
   "description": "A browserify transform to load CSS Modules",
   "main": "index.js",
   "dependencies": {
-    "css-modules-loader-core": "^1.0.0",
     "object-assign": "^3.0.0",
     "promise-polyfill": "^2.1.0",
     "string-hash": "^1.1.0",
@@ -19,7 +18,9 @@
   },
   "scripts": {
     "test": "tape tests/*.js",
-    "lint": "eslint index.js tests/"
+    "lint": "eslint index.js tests/",
+    "preinstall": "rm -rf node_modules/css-modules-loader-core",
+    "postinstall": "git clone https://github.com/sullenor/css-modules-loader-core.git node_modules/css-modules-loader-core && cd node_modules/css-modules-loader-core && npm i && npm run build"
   },
   "author": "joshwnj",
   "license": "MIT",
diff --git a/tests/cases/compose-node-module/expected.css b/tests/cases/compose-node-module/expected.css
index ddd63b1..492da06 100644
--- a/tests/cases/compose-node-module/expected.css
+++ b/tests/cases/compose-node-module/expected.css
@@ -1,4 +1,4 @@
-._cool_styles_styles__foo {
+._node_modules_cool_styles_styles__foo {
   color: #F00;
 }
 ._styles__foo {