 'use strict'
 
 # ES 5 compability functions
-Object.keys or= (o) -> name for own name of o
-Array.isArray or= (a) -> a.push is Array.prototype.push and a.length?
+do ->
+  Object.keys ?= (o) -> name for own name of o
+  Array.isArray ?= (a) -> a.push is Array.prototype.push and a.length?
 
 # Check for potential server-side javascript
 hasModule = module?.exports?

    # Abort condition
    return unless Array.isArray name
    
    reqArgs = []
    reqArgIndex = 0
    

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