     # Abort condition
     return unless Array.isArray name
     
+    # If no callback defined, single module and module in cache, return it directly
+    return cache[name] if name.length is 1 and not callback? and Object.hasOwnProperty.call(cache, name[0])
+    
     reqArgs = []
     reqArgIndex = 0
     

    
    # Walk through all requires
    for i, num in name
      do (i, num) ->
        if cache[i]
          reqArgs[num] = cache[i]
          reqArgIndex++
          executeCallback()
          return
        
        # Get the result of cached dependencies
        cacheDeps = []
                
        if queue[i]
          depIndex = 0
          depLength = queue[i].dependencies.length
          
          depsLoaded = ->
            if depIndex is depLength
              cache[i] = queue[i].factory.apply context, cacheDeps
              delete queue[i]
              
          updateDeps = (item) ->
            if item
              cacheDeps.push item
              depIndex++
              depsLoaded()
          
          for dep in queue[i].dependencies
            # Need to check for hasOwnProperty
            # Checking for cache[i] is not strict enough
            # because a module could have undefined, null, 0 or an empty string
            # as its export value
            if Object.hasOwnProperty.call cache, dep
              updateDeps cache[dep]
            else
              root.molo.require dep, updateDeps, context
        else
          loadScriptFile appendScriptPath(i), ->
            root.molo.require i
    
    # Resolve queue if possible    
    #console.log cache
    #console.log queue
     
    resolveDeps = []
    
    if Object.keys(queue).length > 0
      for key, value of queue
        depLength = value.dependencies.length
        for dep in value.dependencies
          if cache[dep]
            resolveDeps.push cache[dep]
            if depLength is resolveDeps.length
              cache[key] = value.factory.apply context, resolveDeps
              delete queue[key]
              root.molo.require key
              
    #console.log cache
    #console.log queue
        
        
  # Additional export functions
  

  # Cache and queue definition
  cache = {}
  queue = {}
  waitQueue = {}
  
  # Plugin object
  plugins = {}
