// like omit but with the ability to use an object
// array or strings.

var kindOf  = require('../lang/kindOf')
var clone   = require('../lang/clone')
var slice   = require('../array/slice')
var forEach = require('../array/forEach')
var keys    = require('../object/keys')

function without (obj, props) {
  switch (kindOf(props)) {
    case 'object' :
      props = keys(props)
      break
    case 'array' :
      props = props
      break
    case 'string' :
      props = slice(arguments, 1)
      break
  }

  var output = clone(obj)

  forEach(props, function (omit) {
    delete output[omit]
  })

  return output
}

module.exports = without

@@ -110,47 +110,8 @@
 f')%0A
-var clone   = require('../lang/clone')%0A
 var 
@@ -150,23 +150,23 @@
 e')%0Avar 
-forEach
+extend 
  = requi
@@ -176,21 +176,21 @@
 '../
-array/forEach
+object/extend
 ')%0Av
@@ -487,51 +487,81 @@
 t = 
-clone(obj)%0A%0A  forEach(props, function (omit
+extend(%7B%7D, obj)%0A  var i = -1%0A  var len = props.length%0A%0A  while (++i %3C len
 ) %7B%0A
@@ -582,18 +582,21 @@
 put%5B
-omit
+props%5Bi%5D
 %5D%0A  %7D
-)
 %0A%0A  

update object/without -- use object/extend