code: function mixin(src, dest, skipEmpty) {
      // TODO: refactor into common module
      var dest = dest || {}, src = src || {},
          keys = Object.keys(src), len = keys.length, key;
  
      for (var i = 0; i < len; i++) {
          key = keys[i];
          if (!exists(dest[key]) && (skipEmpty && exists(src[key]))) {
              dest[key] = src[key];
          }
      }
      return dest;
  }
docs: Perform a top level mixing between and source
  and destination object optionally skipping
  undefined/null properties.
  
  Examples:
  
  mixin({a: 'A'}, {b: 'B});
  // => {a: 'A', b: 'B'}
  
  mixin({'a': null}, {b: 'B}, true);
  // => {b: 'B'}
  
  @param {Object} src
  @param {Object} dest
  @param {Boolean} skipEmpty
  @returns {Object}
  @api private