diff --git a/src/y.js b/src/y.js
index ab93871d2b8e7a083489d8026a3864691e14adcd..798ad117534f8f864bca03ce8fc1dfab41b298ae 100644
--- a/src/y.js
+++ b/src/y.js
@@ -26,7 +26,8 @@ Y.extend = function (name, value) {
 }
 
 Y.requestModules = requestModules
-function requestModules (modules) {
+function requestModules (modules, sourceDir) {
+  sourceDir = sourceDir || '/bower_components'
   // determine if this module was compiled for es5 or es6 (y.js vs. y.es6)
   // if Insert.execute is a Function, then it isnt a generator..
   // then load the es5(.js) files..
@@ -40,7 +41,7 @@ function requestModules (modules) {
         // module does not exist
         if (typeof window !== 'undefined' && window.Y !== 'undefined') {
           var imported = document.createElement('script')
-          imported.src = Y.sourceDir + '/' + modulename + '/' + modulename + extention
+          imported.src = sourceDir + '/' + modulename + '/' + modulename + extention
           document.head.appendChild(imported)
 
           let requireModule = {}
@@ -96,10 +97,9 @@ function Y (opts/* :YOptions */) /* :Promise<YConfig> */ {
   for (var name in opts.share) {
     modules.push(opts.share[name])
   }
-  Y.sourceDir = opts.sourceDir
   return new Promise(function (resolve, reject) {
     setTimeout(function () {
-      Y.requestModules(modules).then(function () {
+      Y.requestModules(modules, opts.sourceDir).then(function () {
         if (opts == null) reject('An options object is expected! ')
         else if (opts.connector == null) reject('You must specify a connector! (missing connector property)')
         else if (opts.connector.name == null) reject('You must specify connector name! (missing connector.name property)')