 
     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

    null

  root.mixer.define = (name, definition) ->
    return unless name? or definition?
    return if mixinList[name]?


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
