           z: 'just a string!'
       @serialized = funcster.deepSerialize(@original)
       @deserialized = funcster.deepDeserialize(@serialized)
-      done()
 
     describe 'overloaded signature', () ->
 
-      it 'one arg: root', (done) ->
+      it 'one arg: root', () ->
         serialized = { __js_function: 'function() { return "hello" }' }
         deserialized = funcster.deepDeserialize(serialized)
         deserialized().should.eql 'hello'
-        done()
-
-      it 'two args: root, marker', (done) ->
+
+      it 'two args: root, marker', () ->
         serialized = { CUSTOM_MARKER: 'function() { return "hello" }' }
         deserialized = funcster.deepDeserialize(serialized, 'CUSTOM_MARKER')
         deserialized().should.eql 'hello'
-        done()
-
-      it 'two args: root, moduleOpts', (done) ->
+
+      it 'two args: root, moduleOpts', () ->
         serialized = { __js_function: 'function() { return foobar }' }
         deserialized = funcster.deepDeserialize(serialized, globals: { foobar: 'hello' })
         deserialized().should.eql 'hello'
-        done()
-
-      it 'three args: root, marker, moduleOpts', (done) ->
+
+      it 'three args: root, marker, moduleOpts', () ->
         serialized = { CUSTOM_MARKER: 'function() { return foobar }' }
         deserialized = funcster.deepDeserialize(serialized, 'CUSTOM_MARKER', globals: { foobar: 'hello' })
         deserialized().should.eql 'hello'
-        done()
-
-    it 'deserialized functions should work like unserialized versions', (done) ->
+
+    it 'deserialized functions should work like unserialized versions', () ->
       @deserialized.arr[0]('world').should.eql @original.arr[0]('world')
       @deserialized.arr[3]('world').should.eql @original.arr[3]('world')
       @deserialized.arr[4].foobar('world').should.eql @original.arr[4].foobar('world')
       @deserialized.obj.a[0].b.c('world').should.eql @original.obj.a[0].b.c('world')
-      done()
-
-    it 'deserialized functions should not be copies of the unserialized versions', (done) ->
+
+    it 'deserialized functions should not be copies of the unserialized versions', () ->
       # We use this slightly strange syntax because the functions in @deserialized
       # derive from an Object base class in a different context, so it has not
       # been extended by the should module.

      moduleObj.String(new String).should.eql true
      moduleObj.Function(() ->).should.eql true
      moduleObj.Date(new Date).should.eql true
      done()

  describe 'deepDeserialize()', () ->

    before (done) ->
      @original =
        arr: [
          (arg) -> "Hello #{arg}!"

      moduleObj.String(new String).should.eql false
      moduleObj.Function(() ->).should.eql false
      moduleObj.Date(new Date).should.eql false

    it 'instanceof operator succeeds with global injection', () ->
      objects = [ 'Object', 'Array', 'String', 'Date', 'Function' ]
      functions = {}
      functions[obj] = "function(arg) { return arg instanceof #{obj}; }" for obj in objects
