// subset of Object.assign
export function assign(object, ...hashes) {
  for (let i = 0; i < hashes.length; i++) {
    let hash = hashes[i];
    for (let key in hash) {
      object[key] = hash[key];
    }
  }
  return object;
}

// Array.prototype.some
export function some(array, ...rest) {
  return array.filter.apply(array, rest).length > 0;
}

export function every(array, ...rest) {
  return array.filter.apply(array, rest).length === array.length;
}

@@ -142,31 +142,107 @@
     
-for (let key in hash) %7B
+let keys = Object.keys(hash);%0A%0A    for (let i = 0; i %3C keys.length; i++) %7B%0A      let key = keys%5Bi%5D;
 %0A   
@@ -355,70 +355,188 @@
 ay, 
-...rest) %7B%0A  return array.filter.apply(array, rest).length %3E 0
+callback, thisArg=array) %7B%0A  for (let i = 0; i %3C array.length; i++) %7B%0A    let thing = array%5Bi%5D;%0A    if (callback.call(thisArg, thing)) %7B%0A      return true;%0A    %7D%0A  %7D%0A  return false
 ;%0A%7D%0A

use early return / Object.keys