code: function mixin (target, MixinConstructor, ...args) {
    let source = new MixinConstructor(...args)
    let names = Object.getOwnPropertyNames(MixinConstructor.prototype)
    for (let name of names) {
      let val = source[name]
      if (_.isFunction(val) && name !== 'constructor') {
        target[name] = val.bind(source)
      }
    }
  }
docs: based on https://github.com/amercier/es6-mixin