code: function mixin(target) {
    Array.prototype.slice.call(arguments, 1).forEach(function forEach(o) {
      Object.getOwnPropertyNames(o).forEach(function eachAttr(attr) {
        Object.defineProperty(target, attr, Object.getOwnPropertyDescriptor(o, attr));
      });
    });
  
    return target;
  }
docs: Mix multiple objects in to one single object that contains the properties of
  all given objects. This assumes objects that are not nested deeply and it
  correctly transfers objects that were created using `Object.defineProperty`.
  
  @returns {Object} target
  @api public