   uninitializeEnvironment: ->
     @EnvironmentInitialized = false
     
-    delete Object.prototype.should
-    delete Object.prototype.shouldNot
+    for klass in @_extended
+      delete klass.should
+      delete klass.shouldNot
+      delete klass.shouldReceive
+      delete klass.shouldNotReceive
+      if klass.prototype
+        delete klass.prototype.should
+        delete klass.prototype.shouldNot
+        delete klass.prototype.shouldReceive
+        delete klass.prototype.shouldNotReceive
+
+    @_extended = []
+    
+    delete window.SpecObject
     delete window.expectation
-    delete Object.prototype.shouldReceive
-    delete Object.prototype.shouldNotReceive
     delete window.expect
     delete window.beforeEach
     delete window.describe

      s = "{"
      first = true
      for key of object
        if object.hasOwnProperty key
          if first
            first = false
          else

      Spec.expectations.push exp
      exp
    
    # Allows an assertion on a non-object value
    window.expect = (object) ->
      {
