 
   _parse_mixinghooks: (mixin, mixinghooks) ->
     for own mixinghook_key, hook of mixinghooks
-      if hook? && !_.isFunction hook
-        throw new TypeError "Expected a function for #{mixinghook_key}"
+      if hook?
+        unless _.isFunction hook
+          throw new TypeError "Expected a function for #{mixinghook_key}"
+      else
+        mixinghooks[mixinghook_key] = null
 
-    {premix: mixinghooks.premixing_hook, postmix: mixinghooks.postmixing_hook}
+    {pre: mixinghooks.premixing_hook, post: mixinghooks.postmixing_hook}
 
   _parse_omits: (mixin, omits) ->
     if omits != undefined

      hooked_mixinfunc = _.compose mixtarget[hookname], mixinvalue
    mixtarget[mixinprop] = hooked_mixinfunc

  _without_hook: ({mixtarget, mixinprop, mixinvalue}) ->
    mixtarget[mixinprop] = mixinvalue

  mix: (mixtarget, mixin, options = {}) ->

      mixcontent = {mixtarget, mixinprop, mixinvalue}

      if not (mixinprop in _.union(methodhooks.before, methodhooks.after))
        @_mix_without_hook mixcontent
      else
        @_mix_with_hook mixcontent, (mixinprop in methodhooks.before)

    mixinghooks.post?.call(mixtarget, mixinghook_args)
    postmixing_hook?.call(mixtarget, mixinghook_args)

    mixtarget
