old_contents: function isArraylike(obj) {
      var length = obj.length,
          type = typeof obj;
  
      if (isFunction(type) || obj === win) {
          return false;
      }
  
      if (obj.nodeType === 1 && length) {
          return true;
      }
  
      return isArray(type) || length === 0 ||
          typeof length === "number" && length > 0 && (length - 1) in obj;
  }
  
  jBone.merge = function(first, second) {
      var l = second.length,
          i = first.length,
          j = 0;
  
      while (j < l) {
          first[i++] = second[j++];
      }
  
      first.length = i;
  
      return first;
  };
  
  jBone.contains = function(container, contained) {
      var result;
  
      container.reverse().some(function(el) {
          if (el.contains(contained)) {
              return result = el;
          }
      });
  
      return result;
  };
  
  jBone.extend = function(target) {
      var k, kl, i, tg;
  
      splice.call(arguments, 1).forEach(function(object) {
          if (!object) {
              return;
          }
  
          k = keys(object);
          kl = k.length;
          i = 0;
          tg = target; //caching target for perf improvement
  
          for (; i < kl; i++) {
              tg[k[i]] = object[k[i]];
          }
      });
  
      return target;
  };
  
  jBone.makeArray = function(arr, results) {
      var ret = results || [];
  
      if (arr !== null) {
          if (isArraylike(arr)) {
              jBone.merge(ret, isString(arr) ? [arr] : arr);
          } else {
              ret.push(arr);
          }
      }
  
      return ret;
  };
  
new_contents: function isArraylike(obj) {
      var length = obj.length,
          type = typeof obj;
  
      if (isFunction(type) || obj === win) {
          return false;
      }
  
      if (obj.nodeType === 1 && length) {
          return true;
      }
  
      return isArray(type) || length === 0 ||
          typeof length === "number" && length > 0 && (length - 1) in obj;
  }
  
  jBone.merge = function(first, second) {
      var l = second.length,
          i = first.length,
          j = 0;
  
      while (j < l) {
          first[i++] = second[j++];
      }
  
      first.length = i;
  
      return first;
  };
  
  jBone.contains = function(container, contained) {
      var result;
  
      container.reverse().some(function(el) {
          if (el.contains(contained)) {
              return result = el;
          }
      });
  
      return result;
  };
  
  jBone.extend = function(target) {
      var tg;
  
      splice.call(arguments, 1).forEach(function(source) {
          tg = target; //caching target for perf improvement
  
          if (source) {
              for (var prop in source) {
                  tg[prop] = source[prop];
              }
          }
      });
  
      return target;
  };
  
  jBone.makeArray = function(arr, results) {
      var ret = results || [];
  
      if (arr !== null) {
          if (isArraylike(arr)) {
              jBone.merge(ret, isString(arr) ? [arr] : arr);
          } else {
              ret.push(arr);
          }
      }
  
      return ret;
  };
  
subject: Improve extend method