         @callback1.calledWith('string', obj, arr).should.be.true
         @callback2.calledWith(fn, e, date).should.be.true
 
+      it 'should allow the same wrapper to be called more than once', ->
+        wrapped = varity 'so', @callback
+        wrapped 'string'
+        obj = {}
+        wrapped obj
+        @callback.getCall(0).args[0].should.equal('string')
+        should.equal(@callback.getCall(0).args[1], undefined)
+        should.equal(@callback.getCall(1).args[0], undefined)
+        @callback.getCall(1).args[1].should.equal(obj)
+
+      it 'should keep the same options when configure is used', ->
+        varity.configure populate: ['Object']
+        @callback2 = sinon.spy()
+        wrapped1 = varity 'o', @callback
+        wrapped2 = varity 'so', @callback2
+        wrapped1()
+        wrapped2 'string'
+        @callback.calledWith({}).should.be.true
+        @callback2.calledWith('string', {}).should.be.true
+
     context 'called with object expansion', ->
       it 'should convert s to \'\'', ->
         wrapped = varity 's+s', @callback

describe 'varity', ->
  beforeEach ->
    @callback = sinon.spy()

  it 'should return a functions', ->
    varity.should.be.a.Function

        @callback.calledWith('string', {}, obj).should.be.true

    context 'called with non-empty indicator', ->
      it 'should expand an empty object', ->
        varity.configure
          defaults:
