       module.exports = result if hasModule
       
       # Set dependency if it does not exist
-      unless Object.hasOwnProperty.call udefine[platform], name
-        udefine[platform][name] = result
+      unless Object.hasOwnProperty.call udefine.modules[platform], name
+        udefine.modules[platform][name] = result
         
         
     # Inject result into defined namespace

  
  udefine.inject.modules = {}
  
  udefine.inject.add = (name) -> 
    udefine.inject.modules[name] = undefined
    @

  udefine.inject.remove = (name) -> 
    delete udefine.inject.modules[name]
    @
    
  udefine.inject.clear = -> 
    udefine.inject.modules = {}
    @
  
  # TODO: Reflect if these two object could and should be merged together
  # Dependencies for browser (global object)
  # Different idea:
  #   Provide udefine.modules
  #     with functions .add .remove .get .set
  #     where you could define the type and it will also export the
  #     commonjs and globals objects
  #     .get and .set would only get and set the dependency for the
  #     current platform
  udefine.modules =
    globals: {}
    commonjs: {}
  
    add: (name, all) ->
      if all
        udefine.modules[p][name] for p in platforms
      else
        udefine.modules[platform][name]
        
      @
    remove: (name) -> 
      if Object.hasOwnProperty.call udefine.modules.globals, name
        delete udefine.modules['globals'][name]
        
      if Object.hasOwnProperty.call udefine.modules.commonjs, name
        delete udefine.modules['commonjs'][name]
        
      @
    
    get: ->
    set: ->
  
  udefine.globals or= {}
  
  # Dependencies for node.js or commonjs environments
  udefine.commonjs or= {}
  
  # Default settings for udefine environment
  udefine.env or=

  
  # Default configuration definition
  udefine.defaultConfig = ->
    udefine.modules.commonjs.root = root
  
    define('root', -> root) if root.define?
  
