 
     null
     
-  root.mixer.remove = (name) ->
+  mixer.remove = (name) ->
     delete mixinList[name] if name? and mixinList[name]?
 
     null
 
-  root.mixer.exists = (name) -> ownProp.call mixinList, name
+  mixer.exists = (name) -> ownProp.call mixinList, name
   
-  # Provide AMD module as well, global property still needs to be available
-  # though
-  root.define? 'mixer', -> root.mixer
+  mixer
      
    mixFunction = (target, func, params) -> func.apply target, params
    
    root.mixer(target, n, params) for n in name if Array.isArray name

    if typeof name is 'string' and ownProp.call mixinList, name
      if typeof mixinList[name] is 'function'

ownProp = Object.hasOwnProperty

udefine 'mixer', ->
  mixinList = {}

  mixer = (target, name, params...) ->
    mixObject = (target, obj) ->
      for key, value of obj when not ownProp.call target, key
        target[key] = value
