     else
       udefine.modules[type][name]
   
-  # Main entry point
-  udefine = (name, deps, factory) ->
+  udefinable = (name, deps, factory, exportable) ->
     throw new Error 'A udefine module needs to have a name' unless name?
     
     unless name is name.toLowerCase()

  
    configFunc.apply context, [root, udefine]
  
  # Export udefine function on CommonJS environments
  if hasModule then module.exports = udefine else root.udefine = udefine
      udefine.inject(injectRoot, injectName, ignoreName)(result)
        
    result
  
  # Main entry point
  udefine = (name, deps, factory) -> udefinable name, deps, factory
  
  # Allow auto injection of modules in a browser environment
  udefine.autoInject = true
