src/utils.js
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)
    }
  }
}
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)
    }
  }
}
based on https://github.com/amercier/es6-mixin