     {premixing_hook, postmixing_hook} = mixin
     [__, __, __, mixinghook_args] = arguments
 
-    mixinghooks.premix?.call(mixtarget, mixinghook_args)
+    mixinghooks.pre?.call(mixtarget, mixinghook_args)
     premixing_hook?.call(mixtarget, mixinghook_args)
 
     mixing_in = _.object(


    omits = @_parse_omits(mixin, omits)
    {before, after} = @_parse_methodhooks(mixin, {hook_before, hook_after})
    {premix, postmix} = @_parse_mixinghooks(mixin, {premixing_hook, postmixing_hook})

    {omits, methodhooks: {before, after}, mixinghooks: {premix, postmix}}


MIXER =

  _with_hook: ({mixtarget, mixinprop, mixinvalue}, before = false) ->
    hookname = (before && "before_#{mixinprop}") || "after_#{mixinprop}"

    unless _.isFunction(mixtarget[hookname])


  _parse_mixinghooks: (mixin, mixinghooks) ->
    for own mixinghook_key, hook of mixinghooks
      if hook?
        unless _.isFunction hook
          throw new TypeError "Expected a function for #{mixinghook_key}"
      else
        mixinghooks[mixinghook_key] = null

    {pre: mixinghooks.premixing_hook, post: mixinghooks.postmixing_hook}

  _parse_omits: (mixin, omits) ->
    if omits != undefined
