diff --git a/test/annexB/built-ins/escape/B.2.1.js b/test/annexB/built-ins/escape/B.2.1.js
index 2c0ee032628df201a7981e78a813c72509a208be..6c23ce7600a4412d94c5129f983735b8f66f4f1b 100644
--- a/test/annexB/built-ins/escape/B.2.1.js
+++ b/test/annexB/built-ins/escape/B.2.1.js
@@ -6,12 +6,10 @@ es5id: B.2.1
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.escape)
-includes:
-    - fnGlobalObject.js
-    - propertyHelper.js
+includes: [propertyHelper.js]
 ---*/
 
-var global = fnGlobalObject();
+var global = this;
 
 verifyWritable(global, "escape");
 verifyNotEnumerable(global, "escape");
diff --git a/test/annexB/built-ins/unescape/B.2.2.js b/test/annexB/built-ins/unescape/B.2.2.js
index 2b37c3a21d64dc2d67f885ed372288a221fbcce8..04e65cf55e49f95b71fd9e98caa75ebe5d1055ae 100644
--- a/test/annexB/built-ins/unescape/B.2.2.js
+++ b/test/annexB/built-ins/unescape/B.2.2.js
@@ -6,13 +6,9 @@ es5id: B.2.2
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.unescape)
-includes:
-    - fnGlobalObject.js
-    - propertyHelper.js
+includes: [propertyHelper.js]
 ---*/
 
-var global = fnGlobalObject();
-
-verifyWritable(global, "unescape");
-verifyNotEnumerable(global, "unescape");
-verifyConfigurable(global, "unescape");
+verifyWritable(this, "unescape");
+verifyNotEnumerable(this, "unescape");
+verifyConfigurable(this, "unescape");
diff --git a/test/built-ins/Array/isArray/15.4.3.2-1-15.js b/test/built-ins/Array/isArray/15.4.3.2-1-15.js
index 048859180c4d6beca1d264ea21216a1495c96cec..cb1f0e5c5c3cc7c28b64b43c1959c9b198bf13a8 100644
--- a/test/built-ins/Array/isArray/15.4.3.2-1-15.js
+++ b/test/built-ins/Array/isArray/15.4.3.2-1-15.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.4.3.2-1-15
 description: Array.isArray applied to the global object
-includes: [fnGlobalObject.js]
 ---*/
 
-assert.sameValue(Array.isArray(fnGlobalObject()), false, 'Array.isArray(fnGlobalObject())');
+assert.sameValue(Array.isArray(this), false, 'Array.isArray(this)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js b/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js
index e8e4f71116774e7a0ceb1f1949e3358b459fb2ee..af5eb35c4f0cf4cc12980e11b1d14b51966bfd25 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-2-15.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.4.4.16-2-15
 description: Array.prototype.every - 'length' is property of the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn1(val, idx, obj) {
@@ -15,11 +14,11 @@ includes: [fnGlobalObject.js]
             return val > 11;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 12;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 9;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[0] = 12;
+            this[1] = 11;
+            this[2] = 9;
+            this.length = 2;
 
-assert(Array.prototype.every.call(fnGlobalObject(), callbackfn1), 'Array.prototype.every.call(fnGlobalObject(), callbackfn1) !== true');
-assert.sameValue(Array.prototype.every.call(fnGlobalObject(), callbackfn2), false, 'Array.prototype.every.call(fnGlobalObject(), callbackfn2)');
+assert(Array.prototype.every.call(this, callbackfn1), 'Array.prototype.every.call(this, callbackfn1) !== true');
+assert.sameValue(Array.prototype.every.call(this, callbackfn2), false, 'Array.prototype.every.call(this, callbackfn2)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-5-1.js b/test/built-ins/Array/prototype/every/15.4.4.16-5-1.js
index 35a3031c8a2b6049cfdbd6ab9092974ba8f948d1..49814e8df6764a7634a6c9520971e551947e9b4b 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-5-1.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-5-1.js
@@ -5,12 +5,13 @@
 es5id: 15.4.4.16-5-1
 description: Array.prototype.every - thisArg not passed
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
   function callbackfn(val, idx, obj)
   {
-    return this === fnGlobalObject();
+    return this === global;
   }
 
   var arr = [1];
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-5-21.js b/test/built-ins/Array/prototype/every/15.4.4.16-5-21.js
index 816ddb5b86e0578ecbad5cf6301afc4cc78adc8b..20d55ddae46da836195c2de0b9374afdbb450931 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-5-21.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-5-21.js
@@ -4,15 +4,15 @@
 /*---
 es5id: 15.4.4.16-5-21
 description: Array.prototype.every - the global object can be used as thisArg
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
             accessed = true;
-            return this === fnGlobalObject();
+            return this === global;
         }
 
-assert([11].every(callbackfn, fnGlobalObject()), '[11].every(callbackfn, fnGlobalObject()) !== true');
+assert([11].every(callbackfn, global), '[11].every(callbackfn, global) !== true');
 assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js
index 5dcc93e3a3e903016a3796b17336ff2c30abf95c..a0dc517b84bcbe208e33bedf68bbc55afb276566 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-i-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.16-7-c-i-23
 description: >
     Array.prototype.every - This object is an global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn(val, idx, obj) {
@@ -17,8 +16,8 @@ includes: [fnGlobalObject.js]
             }
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 11;
-            fnGlobalObject().length = 1;
+            var oldLen = this.length;
+            this[0] = 11;
+            this.length = 1;
 
-assert.sameValue(Array.prototype.every.call(fnGlobalObject(), callbackfn), false, 'Array.prototype.every.call(fnGlobalObject(), callbackfn)');
+assert.sameValue(Array.prototype.every.call(this, callbackfn), false, 'Array.prototype.every.call(this, callbackfn)');
diff --git a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-27.js b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-27.js
index 148fdd1e85a1d316b2a9e3618d33225cac863112..c594820d7495bda5c2d4ca723c838589945e9d07 100644
--- a/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-27.js
+++ b/test/built-ins/Array/prototype/every/15.4.4.16-7-c-iii-27.js
@@ -6,14 +6,14 @@ es5id: 15.4.4.16-7-c-iii-27
 description: >
     Array.prototype.every - return value of callbackfn is the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
             accessed = true;
-            return fnGlobalObject();
+            return global;
         }
 
 assert([11].every(callbackfn), '[11].every(callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js b/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js
index 70ab8e9e4c134ab84ec563b9a7baee075aff81ae..f94697a841721dc913f01ef5874029b8d617f83d 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-2-15.js
@@ -4,18 +4,17 @@
 /*---
 es5id: 15.4.4.20-2-15
 description: Array.prototype.filter - 'length' is property of the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn(val, idx, obj) {
             return  obj.length === 2;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 12;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 9;
-            fnGlobalObject().length = 2;
-            var newArr = Array.prototype.filter.call(fnGlobalObject(), callbackfn);
+            var oldLen = this.length;
+            this[0] = 12;
+            this[1] = 11;
+            this[2] = 9;
+            this.length = 2;
+            var newArr = Array.prototype.filter.call(this, callbackfn);
 
 assert.sameValue(newArr.length, 2, 'newArr.length');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-5-21.js b/test/built-ins/Array/prototype/filter/15.4.4.20-5-21.js
index a181811efe92c8d59a52a3a5bdbfe2c94abc60b2..6a21b9fbf9a145f3300b7364a2c40aa0cfd5061b 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-5-21.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-5-21.js
@@ -4,17 +4,18 @@
 /*---
 es5id: 15.4.4.20-5-21
 description: Array.prototype.filter - the global object can be used as thisArg
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
         var accessed = false;
 
         function callbackfn(val, idx, obj) {
             accessed = true;
-            return this === fnGlobalObject();
+            return this === global;
         }
 
-        var newArr = [11].filter(callbackfn, fnGlobalObject());
+        var newArr = [11].filter(callbackfn, global);
 
 assert.sameValue(newArr[0], 11, 'newArr[0]');
 assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js
index a6a8070f5487cd0280c38609ffb4a3ad9619fc9d..4bce20357671c2fa5990a73580d5ea287c98c362 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-i-23.js
@@ -6,17 +6,16 @@ es5id: 15.4.4.20-9-c-i-23
 description: >
     Array.prototype.filter - This object is the global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn(val, idx, obj) {
             return idx === 0 && val === 11;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 11;
-            fnGlobalObject().length = 1;
-            var newArr = Array.prototype.filter.call(fnGlobalObject(), callbackfn);
+            var oldLen = this.length;
+            this[0] = 11;
+            this.length = 1;
+            var newArr = Array.prototype.filter.call(this, callbackfn);
 
 assert.sameValue(newArr.length, 1, 'newArr.length');
 assert.sameValue(newArr[0], 11, 'newArr[0]');
diff --git a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-28.js b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-28.js
index 4bd224f220ed27dfa5f1cd2eedefbaf11f677332..9b7f49628eda1f3cf55fffc0a466c72d085dd0b9 100644
--- a/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-28.js
+++ b/test/built-ins/Array/prototype/filter/15.4.4.20-9-c-iii-28.js
@@ -6,11 +6,11 @@ es5id: 15.4.4.20-9-c-iii-28
 description: >
     Array.prototype.filter - return value of callbackfn is the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         function callbackfn(val, idx, obj) {
-            return fnGlobalObject();
+            return global;
         }
 
         var newArr = [11].filter(callbackfn);
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js
index 4ffc305bd0ab4926c4ad15d9483003162e10d2f7..c5217d655bf17f2fa88fa99d97038b215823b70d 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-2-15.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.4.4.18-2-15
 description: Array.prototype.forEach - 'length' is property of the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         var result = false;
@@ -12,11 +11,11 @@ includes: [fnGlobalObject.js]
             result = (obj.length === 2);
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 12;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 9;
-            fnGlobalObject().length = 2;
-            Array.prototype.forEach.call(fnGlobalObject(), callbackfn);
+            var oldLen = this.length;
+            this[0] = 12;
+            this[1] = 11;
+            this[2] = 9;
+            this.length = 2;
+            Array.prototype.forEach.call(this, callbackfn);
 
 assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-5-21.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-5-21.js
index a333979072b25a2c551823c2a65354ecf93753f1..49fb6cdcd0ae6f430cb895083f7410f62f3865d8 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-5-21.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-5-21.js
@@ -4,14 +4,14 @@
 /*---
 es5id: 15.4.4.18-5-21
 description: Array.prototype.forEach - the global object can be used as thisArg
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var result = false;
         function callbackfn(val, idx, obj) {
-            result = (this === fnGlobalObject());
+            result = (this === global);
         }
 
-        [11].forEach(callbackfn, fnGlobalObject());
+        [11].forEach(callbackfn, this);
 
 assert(result, 'result !== true');
diff --git a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js
index 7818c59d7d1e02b92a4793b8cf1488f3623e6f26..3358cfde52c7d72b8c0da39ce3e19aad8d78b82a 100644
--- a/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js
+++ b/test/built-ins/Array/prototype/forEach/15.4.4.18-7-c-i-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.18-7-c-i-23
 description: >
     Array.prototype.forEach - This object is an global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         var testResult = false;
@@ -17,10 +16,10 @@ includes: [fnGlobalObject.js]
             }
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 11;
-            fnGlobalObject().length = 1;
+            var oldLen = this.length;
+            this[0] = 11;
+            this.length = 1;
 
-            Array.prototype.forEach.call(fnGlobalObject(), callbackfn);
+            Array.prototype.forEach.call(this, callbackfn);
 
 assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js
index 375445d10deeb3f6d8b82a899f8ce91cbd92f7ce..7333b2369b64649258bf337295654ab254a81abe 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-1-17.js
@@ -4,11 +4,10 @@
 /*---
 es5id: 15.4.4.14-1-17
 description: Array.prototype.indexOf applied to the global object
-includes: [fnGlobalObject.js]
 ---*/
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[1] = true;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[1] = true;
+            this.length = 2;
 
-assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), true), 1, 'Array.prototype.indexOf.call(fnGlobalObject(), true)');
+assert.sameValue(Array.prototype.indexOf.call(this, true), 1, 'Array.prototype.indexOf.call(this, true)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js
index 5ccbbf084a433a5504ca9192702663625234b3ce..61b0c69386a72607a954282b52ec53fb2d26b0a0 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-2-15.js
@@ -4,19 +4,18 @@
 /*---
 es5id: 15.4.4.14-2-15
 description: Array.prototype.indexOf - 'length' is property of the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         var targetObj = {};
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this.length = 2;
 
-            fnGlobalObject()[1] = targetObj;
+            this[1] = targetObj;
 
-assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), targetObj), 1, 'Array.prototype.indexOf.call(fnGlobalObject(), targetObj)');
+assert.sameValue(Array.prototype.indexOf.call(this, targetObj), 1, 'Array.prototype.indexOf.call(this, targetObj)');
 
-            fnGlobalObject()[1] = {};
-            fnGlobalObject()[2] = targetObj;
+            this[1] = {};
+            this[2] = targetObj;
 
-assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), targetObj), -1, 'Array.prototype.indexOf.call(fnGlobalObject(), targetObj)');
+assert.sameValue(Array.prototype.indexOf.call(this, targetObj), -1, 'Array.prototype.indexOf.call(this, targetObj)');
diff --git a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js
index 0b4a011aefd33045fa03396dbbb33b47105fd6ff..a9d706667eb5aec909e857f09ef01b02ad171756 100644
--- a/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js
+++ b/test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-i-23.js
@@ -4,17 +4,16 @@
 /*---
 es5id: 15.4.4.14-9-b-i-23
 description: Array.prototype.indexOf - This object is the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         var targetObj = {};
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = targetObj;
-            fnGlobalObject()[100] = "100";
-            fnGlobalObject()[200] = "200";
-            fnGlobalObject().length = 200;
+            var oldLen = this.length;
+            this[0] = targetObj;
+            this[100] = "100";
+            this[200] = "200";
+            this.length = 200;
 
-assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), targetObj), 0, 'Array.prototype.indexOf.call(fnGlobalObject(), targetObj)');
-assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), "100"), 100, 'Array.prototype.indexOf.call(fnGlobalObject(), "100")');
-assert.sameValue(Array.prototype.indexOf.call(fnGlobalObject(), "200"), -1, 'Array.prototype.indexOf.call(fnGlobalObject(), "200")');
+assert.sameValue(Array.prototype.indexOf.call(this, targetObj), 0, 'Array.prototype.indexOf.call(this, targetObj)');
+assert.sameValue(Array.prototype.indexOf.call(this, "100"), 100, 'Array.prototype.indexOf.call(this, "100")');
+assert.sameValue(Array.prototype.indexOf.call(this, "200"), -1, 'Array.prototype.indexOf.call(this, "200")');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js
index d3ce162508b82bda56555ff085f2f314fccaa60d..aeeba6c2cec887aaa61f87904c3faa4822c5f8b2 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-17.js
@@ -4,13 +4,12 @@
 /*---
 es5id: 15.4.4.15-1-17
 description: Array.prototype.lastIndexOf applied to the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         var targetObj = ["global"];
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[1] = targetObj;
-            fnGlobalObject().length = 3;
+            var oldLen = this.length;
+            this[1] = targetObj;
+            this.length = 3;
 
-assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), 1, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj)');
+assert.sameValue(Array.prototype.lastIndexOf.call(this, targetObj), 1, 'Array.prototype.lastIndexOf.call(this, targetObj)');
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js
index c6e5c55e525ee0e3ab201027eb0b9107f92268b4..2523f266f64e1b8af9ea760b0ada192d10153cd2 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-15.js
@@ -6,19 +6,18 @@ es5id: 15.4.4.15-2-15
 description: >
     Array.prototype.lastIndexOf - 'length' is property of the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
         var targetObj = {};
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this.length = 2;
 
-            fnGlobalObject()[1] = targetObj;
+            this[1] = targetObj;
 
-assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), 1);
+assert.sameValue(Array.prototype.lastIndexOf.call(this, targetObj), 1);
 
-            fnGlobalObject()[1] = {};
-            fnGlobalObject()[2] = targetObj;
+            this[1] = {};
+            this[2] = targetObj;
 
-assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), -1);
+assert.sameValue(Array.prototype.lastIndexOf.call(this, targetObj), -1);
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-19.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-19.js
index 9999575a4ff562d61112403e29d6b52a85b716b3..ee41b8cdd78616e304dd8540d6fb54797123d37f 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-19.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-19.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.15-3-19
 description: >
     Array.prototype.lastIndexOf - value of 'length' is an Object which
     has an own toString method
-includes: [fnGlobalObject.js]
 ---*/
 
         // objects inherit the default valueOf() method from Object
@@ -15,7 +14,7 @@ includes: [fnGlobalObject.js]
         // to a number by calling its toString() method and converting the
         // resulting string to a number.
 
-        var targetObj = fnGlobalObject();
+        var targetObj = this;
         var obj = {
             1: targetObj,
             2: 2,
diff --git a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js
index 1cae882267b942b4e9ed9864e043bbf51739ab03..e94974c9b9cde41bfac2dee8ddfaba30ce207364 100644
--- a/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js
+++ b/test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-i-23.js
@@ -4,17 +4,16 @@
 /*---
 es5id: 15.4.4.15-8-b-i-23
 description: Array.prototype.lastIndexOf - This object is the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         var targetObj = {};
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = targetObj;
-            fnGlobalObject()[100] = "100";
-            fnGlobalObject()[200] = "200";
-            fnGlobalObject().length = 200;
+            var oldLen = this.length;
+            this[0] = targetObj;
+            this[100] = "100";
+            this[200] = "200";
+            this.length = 200;
 
-assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj), 0, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), targetObj)');
-assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), "100"), 100, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), "100")');
-assert.sameValue(Array.prototype.lastIndexOf.call(fnGlobalObject(), "200"), -1, 'Array.prototype.lastIndexOf.call(fnGlobalObject(), "200")');
+assert.sameValue(Array.prototype.lastIndexOf.call(this, targetObj), 0, 'Array.prototype.lastIndexOf.call(this, targetObj)');
+assert.sameValue(Array.prototype.lastIndexOf.call(this, "100"), 100, 'Array.prototype.lastIndexOf.call(this, "100")');
+assert.sameValue(Array.prototype.lastIndexOf.call(this, "200"), -1, 'Array.prototype.lastIndexOf.call(this, "200")');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js b/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js
index 96ad9dc0d879e59301c51dbc181f54c4937782e8..b1ea68d41adba1cb862e36953aff5b22a286199c 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-2-15.js
@@ -6,18 +6,17 @@ es5id: 15.4.4.19-2-15
 description: >
     Array.prototype.map - when 'length' is property of the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn(val, idx, obj) {
             return val > 10;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 12;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 9;
-            fnGlobalObject().length = 2;
-            var testResult = Array.prototype.map.call(fnGlobalObject(), callbackfn);
+            var oldLen = this.length;
+            this[0] = 12;
+            this[1] = 11;
+            this[2] = 9;
+            this.length = 2;
+            var testResult = Array.prototype.map.call(this, callbackfn);
 
 assert.sameValue(testResult.length, 2, 'testResult.length');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js b/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js
index 8ecad2ed006fd56646655786658c47022c4eb281..b660cb768f4b6e68c1ebbbe4fbc6aa9e2452dc60 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-5-1.js
@@ -5,10 +5,9 @@
 es5id: 15.4.4.19-5-1
 description: Array.prototype.map - thisArg not passed
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-    fnGlobalObject()._15_4_4_19_5_1 = true;
+    this._15_4_4_19_5_1 = true;
 
 (function() {
     var _15_4_4_19_5_1 = false;
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-5-21.js b/test/built-ins/Array/prototype/map/15.4.4.19-5-21.js
index 099adba0f617c5a611cb7e0ed69267715b9b25b0..6da74b00a81d767ac36ad450dfae3260f286f15e 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-5-21.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-5-21.js
@@ -4,13 +4,13 @@
 /*---
 es5id: 15.4.4.19-5-21
 description: Array.prototype.map - the global object can be used as thisArg
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         function callbackfn(val, idx, obj) {
-            return this === fnGlobalObject();
+            return this === global;
         }
 
-        var testResult = [11].map(callbackfn, fnGlobalObject());
+        var testResult = [11].map(callbackfn, this);
 
 assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js
index d3cb8edddf06ecea6cf6d0afe71145236cab4a7b..3127fa521cea826a471da98c66938a78655ad0e4 100644
--- a/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js
+++ b/test/built-ins/Array/prototype/map/15.4.4.19-8-c-i-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.19-8-c-i-23
 description: >
     Array.prototype.map - This object is the global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         var kValue = "abc";
@@ -18,10 +17,10 @@ includes: [fnGlobalObject.js]
             return false;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = kValue;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[0] = kValue;
+            this.length = 2;
 
-            var testResult = Array.prototype.map.call(fnGlobalObject(), callbackfn);
+            var testResult = Array.prototype.map.call(this, callbackfn);
 
 assert.sameValue(testResult[0], true, 'testResult[0]');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js
index 136c455d5b2dccff91a4b1cbb9c869abcfbf9880..215377cc44ec25f77b02a3654e3f7dd77b70ead0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-2-15.js
@@ -4,17 +4,16 @@
 /*---
 es5id: 15.4.4.21-2-15
 description: Array.prototype.reduce - 'length' is property of the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn(prevVal, curVal, idx, obj) {
             return (obj.length === 2);
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 12;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 9;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[0] = 12;
+            this[1] = 11;
+            this[2] = 9;
+            this.length = 2;
 
-assert.sameValue(Array.prototype.reduce.call(fnGlobalObject(), callbackfn, 1), true, 'Array.prototype.reduce.call(fnGlobalObject(), callbackfn, 1)');
+assert.sameValue(Array.prototype.reduce.call(this, callbackfn, 1), true, 'Array.prototype.reduce.call(this, callbackfn, 1)');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js
index bd3aee02e113eca2056a29cae1267e304cdb085c..eaecf13eaeeea4ad3f2e62d27225eeafc01401e0 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-8-b-iii-1-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.21-8-b-iii-1-23
 description: >
     Array.prototype.reduce - This object is the global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         var testResult = false;
@@ -16,12 +15,12 @@ includes: [fnGlobalObject.js]
             }
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 0;
-            fnGlobalObject()[1] = 1;
-            fnGlobalObject()[2] = 2;
-            fnGlobalObject().length = 3;
+            var oldLen = this.length;
+            this[0] = 0;
+            this[1] = 1;
+            this[2] = 2;
+            this.length = 3;
 
-            Array.prototype.reduce.call(fnGlobalObject(), callbackfn);
+            Array.prototype.reduce.call(this, callbackfn);
 
 assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js
index 7d8ad83f1c64bc030f1c333a1a49fc0044b87e74..92f3f4a9d8f642f1370d693a0f0ef37f2f205af2 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-i-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.21-9-c-i-23
 description: >
     Array.prototype.reduce - This object is the global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         var testResult = false;
@@ -17,11 +16,11 @@ includes: [fnGlobalObject.js]
             }
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 0;
-            fnGlobalObject()[1] = 1;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[0] = 0;
+            this[1] = 1;
+            this.length = 2;
 
-            Array.prototype.reduce.call(fnGlobalObject(), callbackfn, initialValue);
+            Array.prototype.reduce.call(this, callbackfn, initialValue);
 
 assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js
index b2a78818707d774283ea6bdc8a86f897f3828284..82f1cd87da1acb322662d0bc346ce94c62e0ab81 100644
--- a/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js
+++ b/test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-37.js
@@ -6,16 +6,16 @@ es5id: 15.4.4.21-9-c-ii-37
 description: >
     Array.prototype.reduce - the global object can be used as
     accumulator
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
-            return prevVal === fnGlobalObject();
+            return prevVal === global;
         }
 
         var obj = { 0: 11, length: 1 };
 
-assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, fnGlobalObject()), true, 'Array.prototype.reduce.call(obj, callbackfn, fnGlobalObject())');
+assert.sameValue(Array.prototype.reduce.call(obj, callbackfn, this), true, 'Array.prototype.reduce.call(obj, callbackfn, this)');
 assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js
index 78a7ee7e9fc2041df83e06aee36fb4e17eed97bf..1bf0a1311f331103b9620ad9a982c31a7116ff5c 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-2-15.js
@@ -6,21 +6,21 @@ es5id: 15.4.4.22-2-15
 description: >
     Array.prototype.reduceRight - 'length' is property of the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var accessed = false;
 
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
-            return obj.length === fnGlobalObject().length;
+            return obj.length === global.length;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 12;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 9;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[0] = 12;
+            this[1] = 11;
+            this[2] = 9;
+            this.length = 2;
 
-assert(Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, 111), 'Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, 111) !== true');
+assert(Array.prototype.reduceRight.call(this, callbackfn, 111), 'Array.prototype.reduceRight.call(this, callbackfn, 111) !== true');
 assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js
index bbe19f73dc66e5838bb58a1cb966f875b9e7e539..9d376d448a18f4ecb89a35bcee8792c7bdbb9524 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-8-b-iii-1-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.22-8-b-iii-1-23
 description: >
     Array.prototype.reduceRight - This object is the global object
     which contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         var testResult = false;
@@ -16,12 +15,12 @@ includes: [fnGlobalObject.js]
             }
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 0;
-            fnGlobalObject()[1] = 1;
-            fnGlobalObject()[2] = 2;
-            fnGlobalObject().length = 3;
+            var oldLen = this.length;
+            this[0] = 0;
+            this[1] = 1;
+            this[2] = 2;
+            this.length = 3;
 
-            Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn);
+            Array.prototype.reduceRight.call(this, callbackfn);
 
 assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js
index 854466ce7ed084ddad05a65f3eb77e14ae167e5b..6726078429a18040009b325f9faf041e880c47f4 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-i-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.22-9-c-i-23
 description: >
     Array.prototype.reduceRight - This object is an global object
     which contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         var testResult = false;
@@ -16,12 +15,12 @@ includes: [fnGlobalObject.js]
             }
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 0;
-            fnGlobalObject()[1] = 1;
-            fnGlobalObject()[2] = 2;
-            fnGlobalObject().length = 3;
+            var oldLen = this.length;
+            this[0] = 0;
+            this[1] = 1;
+            this[2] = 2;
+            this.length = 3;
 
-            Array.prototype.reduceRight.call(fnGlobalObject(), callbackfn, "initialValue");
+            Array.prototype.reduceRight.call(this, callbackfn, "initialValue");
 
 assert(testResult, 'testResult !== true');
diff --git a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-37.js b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-37.js
index 6eecc246ba90a140191f7dd2650d35781e974817..d932c446b446aec5c0c7320bc7799916fcea45a1 100644
--- a/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-37.js
+++ b/test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-37.js
@@ -6,16 +6,16 @@ es5id: 15.4.4.22-9-c-ii-37
 description: >
     Array.prototype.reduceRight - the global object can be used as
     accumulator
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var accessed = false;
         function callbackfn(prevVal, curVal, idx, obj) {
             accessed = true;
-            return prevVal === fnGlobalObject();
+            return prevVal === global;
         }
 
         var obj = { 0: 11, length: 1 };
 
-assert.sameValue(Array.prototype.reduceRight.call(obj, callbackfn, fnGlobalObject()), true, 'Array.prototype.reduceRight.call(obj, callbackfn, fnGlobalObject())');
+assert.sameValue(Array.prototype.reduceRight.call(obj, callbackfn, this), true, 'Array.prototype.reduceRight.call(obj, callbackfn, this)');
 assert(accessed, 'accessed !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js b/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js
index ea05feca4f7731e5ca9ee9e3890e89512ee942c0..f4fbdf646cb88b0ebb0a05b608e09dd637fef163 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-2-15.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.4.4.17-2-15
 description: Array.prototype.some - 'length' is property of the global object
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn1(val, idx, obj) {
@@ -15,11 +14,11 @@ includes: [fnGlobalObject.js]
             return val > 11;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 9;
-            fnGlobalObject()[1] = 11;
-            fnGlobalObject()[2] = 12;
-            fnGlobalObject().length = 2;
+            var oldLen = this.length;
+            this[0] = 9;
+            this[1] = 11;
+            this[2] = 12;
+            this.length = 2;
 
-assert(Array.prototype.some.call(fnGlobalObject(), callbackfn1), 'Array.prototype.some.call(fnGlobalObject(), callbackfn1) !== true');
-assert.sameValue(Array.prototype.some.call(fnGlobalObject(), callbackfn2), false, 'Array.prototype.some.call(fnGlobalObject(), callbackfn2)');
+assert(Array.prototype.some.call(this, callbackfn1), 'Array.prototype.some.call(this, callbackfn1) !== true');
+assert.sameValue(Array.prototype.some.call(this, callbackfn2), false, 'Array.prototype.some.call(this, callbackfn2)');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-5-21.js b/test/built-ins/Array/prototype/some/15.4.4.17-5-21.js
index c6bda3120e21235808f94c05b773db71bfa3a817..1e88de56cff881a66da543810dd1b9c6fe0e4f01 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-5-21.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-5-21.js
@@ -4,11 +4,11 @@
 /*---
 es5id: 15.4.4.17-5-21
 description: Array.prototype.some - the global object can be used as thisArg
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         function callbackfn(val, idx, obj) {
-            return this === fnGlobalObject();
+            return this === global;
         }
 
-assert([11].some(callbackfn, fnGlobalObject()), '[11].some(callbackfn, fnGlobalObject()) !== true');
+assert([11].some(callbackfn, this), '[11].some(callbackfn, global) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js
index 4c4ec2ab5bded0edb100e1ad943041cb18726295..1332401f9d8bd73b9f84d6d5b87e598faaa40e21 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-i-23.js
@@ -6,7 +6,6 @@ es5id: 15.4.4.17-7-c-i-23
 description: >
     Array.prototype.some - This object is an global object which
     contains index property
-includes: [fnGlobalObject.js]
 ---*/
 
         function callbackfn(val, idx, obj) {
@@ -16,8 +15,8 @@ includes: [fnGlobalObject.js]
             return false;
         }
 
-            var oldLen = fnGlobalObject().length;
-            fnGlobalObject()[0] = 11;
-            fnGlobalObject().length = 1;
+            var oldLen = this.length;
+            this[0] = 11;
+            this.length = 1;
 
-assert(Array.prototype.some.call(fnGlobalObject(), callbackfn), 'Array.prototype.some.call(fnGlobalObject(), callbackfn) !== true');
+assert(Array.prototype.some.call(this, callbackfn), 'Array.prototype.some.call(this, callbackfn) !== true');
diff --git a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-26.js b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-26.js
index 7f03efbbb653976d168eaa0f04ed63c4891d1e82..44f8298cc98f61c4000c28a5603a93cfa0870ee8 100644
--- a/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-26.js
+++ b/test/built-ins/Array/prototype/some/15.4.4.17-7-c-iii-26.js
@@ -6,11 +6,11 @@ es5id: 15.4.4.17-7-c-iii-26
 description: >
     Array.prototype.some - return value of callbackfn is the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         function callbackfn(val, idx, obj) {
-            return fnGlobalObject();
+            return global;
         }
 
 assert([11].some(callbackfn), '[11].some(callbackfn) !== true');
diff --git a/test/built-ins/Function/15.3.5.4_2-64gs.js b/test/built-ins/Function/15.3.5.4_2-64gs.js
index 4120f086f93658cc28e248fdc77d2e2031126410..a95d82a416d115ceb2696338e884c250f79bf06f 100644
--- a/test/built-ins/Function/15.3.5.4_2-64gs.js
+++ b/test/built-ins/Function/15.3.5.4_2-64gs.js
@@ -8,13 +8,13 @@ description: >
     non-strict function (strict function declaration called by
     Function.prototype.apply(globalObject))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { "use strict"; gNonStrict();};
 
 assert.throws(TypeError, function() {
-    f.apply(fnGlobalObject());
+    f.apply(global);
 });
 
 function gNonStrict() {
diff --git a/test/built-ins/Function/15.3.5.4_2-69gs.js b/test/built-ins/Function/15.3.5.4_2-69gs.js
index 537af2945b5eeb923948c205dcb19ce85fed6f0c..0572d8603c9f5d8ef54fbf5c164ada9dc08b8459 100644
--- a/test/built-ins/Function/15.3.5.4_2-69gs.js
+++ b/test/built-ins/Function/15.3.5.4_2-69gs.js
@@ -8,13 +8,13 @@ description: >
     non-strict function (strict function declaration called by
     Function.prototype.call(globalObject))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { "use strict"; gNonStrict();};
 
 assert.throws(TypeError, function() {
-    f.call(fnGlobalObject());
+    f.call(this);
 });
 
 function gNonStrict() {
diff --git a/test/built-ins/Function/15.3.5.4_2-74gs.js b/test/built-ins/Function/15.3.5.4_2-74gs.js
index 3256040c769a2e6007bea1d94284e36dd38224ca..e1c730c23d8be48ac9645ae74f28b37296473f45 100644
--- a/test/built-ins/Function/15.3.5.4_2-74gs.js
+++ b/test/built-ins/Function/15.3.5.4_2-74gs.js
@@ -8,13 +8,13 @@ description: >
     non-strict function (strict function declaration called by
     Function.prototype.bind(globalObject)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { "use strict"; gNonStrict();};
 
 assert.throws(TypeError, function() {
-    f.bind(fnGlobalObject())();
+    f.bind(global)();
 });
 
 function gNonStrict() {
diff --git a/test/built-ins/Function/15.3.5.4_2-83gs.js b/test/built-ins/Function/15.3.5.4_2-83gs.js
index 99d68c861acb7a7a7ecbf0e8a3f63f0ca71c37fb..940e7d7e42cad51cde24bb6321804c720d255e93 100644
--- a/test/built-ins/Function/15.3.5.4_2-83gs.js
+++ b/test/built-ins/Function/15.3.5.4_2-83gs.js
@@ -9,11 +9,11 @@ description: >
     strict Function.prototype.apply(globalObject))
 flags: [noStrict]
 features: [caller]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { return gNonStrict();};
-(function () {"use strict"; f.apply(fnGlobalObject()); })();
+(function () {"use strict"; f.apply(global); })();
 
 
 function gNonStrict() {
diff --git a/test/built-ins/Function/15.3.5.4_2-88gs.js b/test/built-ins/Function/15.3.5.4_2-88gs.js
index f2506fd4f52efc917861b48f9a8480253d70ed50..7d1b0825c6111958702684d9a7933491607be012 100644
--- a/test/built-ins/Function/15.3.5.4_2-88gs.js
+++ b/test/built-ins/Function/15.3.5.4_2-88gs.js
@@ -9,11 +9,11 @@ description: >
     strict Function.prototype.call(globalObject))
 flags: [noStrict]
 features: [caller]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { return gNonStrict();};
-(function () {"use strict"; f.call(fnGlobalObject()); })();
+(function () {"use strict"; f.call(global); })();
 
 
 function gNonStrict() {
diff --git a/test/built-ins/Function/15.3.5.4_2-93gs.js b/test/built-ins/Function/15.3.5.4_2-93gs.js
index 78d9e70393914176310b0fcfc448f767dded0b67..bad743269df167e4b41db5e5c7fdc9f829aed0aa 100644
--- a/test/built-ins/Function/15.3.5.4_2-93gs.js
+++ b/test/built-ins/Function/15.3.5.4_2-93gs.js
@@ -9,11 +9,11 @@ description: >
     strict Function.prototype.bind(globalObject)())
 flags: [noStrict]
 features: [caller]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { return gNonStrict();};
-(function () {"use strict"; f.bind(fnGlobalObject())(); })();
+(function () {"use strict"; f.bind(global)(); })();
 
 
 function gNonStrict() {
diff --git a/test/built-ins/Infinity/15.1.1.2-0.js b/test/built-ins/Infinity/15.1.1.2-0.js
index 40ace7cd79619ddabfd2ec73306ae2fcc17ebea9..a2e63985e2478a8a12bfa3d4eff5fdff85d474fc 100644
--- a/test/built-ins/Infinity/15.1.1.2-0.js
+++ b/test/built-ins/Infinity/15.1.1.2-0.js
@@ -6,10 +6,9 @@ es5id: 15.1.1.2-0
 description: >
     Global.Infinity is a data property with default attribute values
     (false)
-includes: [fnGlobalObject.js]
 ---*/
 
-    var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), 'Infinity');
+    var desc = Object.getOwnPropertyDescriptor(this, 'Infinity');
 
 assert.sameValue(desc.writable, false, 'desc.writable');
 assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Infinity/S15.1.1.2_A2_T1.js b/test/built-ins/Infinity/S15.1.1.2_A2_T1.js
index c0b90e5986f463d418188dc98be212a844a34200..0a6435466340d51cc50059889cfa539b1662ae81 100755
--- a/test/built-ins/Infinity/S15.1.1.2_A2_T1.js
+++ b/test/built-ins/Infinity/S15.1.1.2_A2_T1.js
@@ -5,11 +5,11 @@
 info: The Infinity is ReadOnly
 es5id: 15.1.1.2_A2_T1
 description: Checking typeof Functions
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 // CHECK#1
-verifyNotWritable(fnGlobalObject(), "Infinity", null, true);
+verifyNotWritable(this, "Infinity", null, true);
 if (typeof(Infinity) === "boolean") {
 	$ERROR('#1: Infinity = true; typeof(Infinity) !== "boolean". Actual: ' + (typeof(Infinity)));
 }
diff --git a/test/built-ins/Infinity/S15.1.1.2_A3_T1.js b/test/built-ins/Infinity/S15.1.1.2_A3_T1.js
index 6c8d877a8770512cc48a0dd77653e5c0d0265bc8..2674825444aff611e59ec480e7128ecbccf5e62c 100644
--- a/test/built-ins/Infinity/S15.1.1.2_A3_T1.js
+++ b/test/built-ins/Infinity/S15.1.1.2_A3_T1.js
@@ -5,14 +5,14 @@
 info: The Infinity is DontDelete
 es5id: 15.1.1.2_A3_T1
 description: Use delete
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 // CHECK#1
-verifyNotConfigurable(fnGlobalObject(), "Infinity");
+verifyNotConfigurable(this, "Infinity");
 
 try {
-  if (delete fnGlobalObject().Infinity !== false) {
+  if (delete this.Infinity !== false) {
     $ERROR('#1: delete Infinity === false.');
   }
 } catch (e) {
diff --git a/test/built-ins/NaN/15.1.1.1-0.js b/test/built-ins/NaN/15.1.1.1-0.js
index 48d3e9dd95bf9dfa9dfea92395bd8f9f12c2e74c..c8638ede8c0322fd43eba71b225cfba787b69589 100644
--- a/test/built-ins/NaN/15.1.1.1-0.js
+++ b/test/built-ins/NaN/15.1.1.1-0.js
@@ -4,10 +4,9 @@
 /*---
 es5id: 15.1.1.1-0
 description: Global.NaN is a data property with default attribute values (false)
-includes: [fnGlobalObject.js]
 ---*/
 
-    var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), 'NaN');
+    var desc = Object.getOwnPropertyDescriptor(this, 'NaN');
 
 assert.sameValue(desc.writable, false, 'desc.writable');
 assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/NaN/S15.1.1.1_A2_T1.js b/test/built-ins/NaN/S15.1.1.1_A2_T1.js
index 89fd2b8edf10225bd1e55d76244f20c74c07faee..2ed88aa61e127f2b1392b7a8d8604519031fc8f0 100755
--- a/test/built-ins/NaN/S15.1.1.1_A2_T1.js
+++ b/test/built-ins/NaN/S15.1.1.1_A2_T1.js
@@ -5,11 +5,11 @@
 info: The NaN is ReadOnly
 es5id: 15.1.1.1_A2_T1
 description: Checking typeof Functions
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 // CHECK#1
-verifyNotWritable(fnGlobalObject(), "NaN", null, true);
+verifyNotWritable(this, "NaN", null, true);
 if (typeof(NaN) === "boolean") {
 	$ERROR('#1: NaN = true; typeof(NaN) !== "boolean". Actual: ' + (typeof(NaN)));
 }
diff --git a/test/built-ins/NaN/S15.1.1.1_A3_T1.js b/test/built-ins/NaN/S15.1.1.1_A3_T1.js
index 8be21335783c2e9ca26e5aa2ee0d75da2291846f..fba6441c9671f43ff9dfe7e2d88bef344093094a 100644
--- a/test/built-ins/NaN/S15.1.1.1_A3_T1.js
+++ b/test/built-ins/NaN/S15.1.1.1_A3_T1.js
@@ -5,14 +5,14 @@
 info: The NaN is DontDelete
 es5id: 15.1.1.2_A3_T1
 description: Use delete
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 // CHECK#1
-verifyNotConfigurable(fnGlobalObject(), "NaN");
+verifyNotConfigurable(this, "NaN");
 
 try {
-  if (delete fnGlobalObject().NaN !== false) {
+  if (delete this.NaN !== false) {
     $ERROR('#1: delete NaN === false.');
   }
 } catch (e) {
diff --git a/test/built-ins/Object/create/15.2.3.5-4-124.js b/test/built-ins/Object/create/15.2.3.5-4-124.js
index d22aee94f4eddebd55769d78d1ad57a71af11c7d..664fdd276556963067e3ea7e8006934d6c7a2cd1 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-124.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-124.js
@@ -7,13 +7,12 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'configurable'
     property (8.10.5 step 4.a)
-includes: [fnGlobalObject.js]
 ---*/
 
-            fnGlobalObject().configurable = true;
+            this.configurable = true;
 
             var newObj = Object.create({}, {
-                prop: fnGlobalObject() 
+                prop: this 
             });
 
             var result1 = newObj.hasOwnProperty("prop");
diff --git a/test/built-ins/Object/create/15.2.3.5-4-149.js b/test/built-ins/Object/create/15.2.3.5-4-149.js
index 9b590ff554ca111abeb7bee27cc3b604b4f0fc30..d5b9cd92755c3c0c6efe98c745c4b063f5ecde2d 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-149.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-149.js
@@ -6,12 +6,11 @@ es5id: 15.2.3.5-4-149
 description: >
     Object.create - 'configurable' property of one property in
     'Properties' is the global object (8.10.5 step 4.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var newObj = Object.create({}, {
             prop: {
-                configurable: fnGlobalObject()
+                configurable: this
             }
         });
 
diff --git a/test/built-ins/Object/create/15.2.3.5-4-177.js b/test/built-ins/Object/create/15.2.3.5-4-177.js
index d9e835efb2ae78ccc1b0126134c209db2305b5a4..58825c2a82e9ec1848bf049632ab7ca4f153a878 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-177.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-177.js
@@ -7,13 +7,12 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes: [fnGlobalObject.js]
 ---*/
 
-            fnGlobalObject().value = "GlobalValue";
+            this.value = "GlobalValue";
 
             var newObj = Object.create({}, {
-                prop: fnGlobalObject()
+                prop: this
             });
 
 assert.sameValue(newObj.prop, "GlobalValue", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-203.js b/test/built-ins/Object/create/15.2.3.5-4-203.js
index 013ecb214a144dabe7cf0cf2992c0099f4cca7d7..2dd10362592751d70acd559411c9be3da1bb538a 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-203.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-203.js
@@ -7,13 +7,12 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'writable'
     property (8.10.5 step 6.a)
-includes: [fnGlobalObject.js]
 ---*/
 
-            fnGlobalObject().writable = true;
+            this.writable = true;
 
             var newObj = Object.create({}, {
-                prop: fnGlobalObject() 
+                prop: this 
             });
 
             var beforeWrite = (newObj.hasOwnProperty("prop") && typeof (newObj.prop) === "undefined");
diff --git a/test/built-ins/Object/create/15.2.3.5-4-228.js b/test/built-ins/Object/create/15.2.3.5-4-228.js
index 7adb830f181f2e3f9e923010a9ca544e0ca1f015..6b8ffee240ea4b2d97f5fc56ff7de1a780fe9910 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-228.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-228.js
@@ -6,12 +6,11 @@ es5id: 15.2.3.5-4-228
 description: >
     Object.create - 'writable' property of one property in
     'Properties' is the global object (8.10.5 step 6.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var newObj = Object.create({}, {
             prop: {
-                writable: fnGlobalObject()
+                writable: this
             }
         });
         var hasProperty = newObj.hasOwnProperty("prop");
diff --git a/test/built-ins/Object/create/15.2.3.5-4-256.js b/test/built-ins/Object/create/15.2.3.5-4-256.js
index 6f35538fe1020b1f12ebf85ccf6a66be2aa42c55..1fb8acfc8e330219e0fdc8c5f9cc7240e218ce89 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-256.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-256.js
@@ -7,15 +7,14 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'get' property
     (8.10.5 step 7.a)
-includes: [fnGlobalObject.js]
 ---*/
 
-        fnGlobalObject().get = function () {
+        this.get = function () {
             return "VerifyGlobalObject";
         };
 
             var newObj = Object.create({}, {
-                prop: fnGlobalObject()
+                prop: this
             });
 
 assert.sameValue(newObj.prop, "VerifyGlobalObject", 'newObj.prop');
diff --git a/test/built-ins/Object/create/15.2.3.5-4-291.js b/test/built-ins/Object/create/15.2.3.5-4-291.js
index b5d8d69e6ffebea3d25491556dcf1d6370e72714..b412aa9d0875156310ee78332f943fdee99887e5 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-291.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-291.js
@@ -7,17 +7,16 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'set' property
     (8.10.5 step 8.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var data = "data";
 
-            fnGlobalObject().set = function (value) {
+            this.set = function (value) {
                 data = value;
             };
 
             var newObj = Object.create({}, {
-                prop: fnGlobalObject()
+                prop: this
             });
 
             var hasProperty = newObj.hasOwnProperty("prop");
diff --git a/test/built-ins/Object/create/15.2.3.5-4-300.js b/test/built-ins/Object/create/15.2.3.5-4-300.js
index d9557fc3d5b4ed4c47dc7c82ef34c36d08ff9034..4e350f9e77683125e3e18d61c6efaf06cad8f7d6 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-300.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-300.js
@@ -6,14 +6,14 @@ es5id: 15.2.3.5-4-300
 description: >
     Object.create - 'set' property of one property in 'Properties' is
     a host object that isn't callable (8.10.5 step 8.b)
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 
 assert.throws(TypeError, function() {
             Object.create({}, {
                 prop: {
-                    set: fnGlobalObject()
+                    set: global
                 }
             });
 });
diff --git a/test/built-ins/Object/create/15.2.3.5-4-71.js b/test/built-ins/Object/create/15.2.3.5-4-71.js
index 9d7dc1fcc98271ce60c5337dc1c3069886469e0c..2d6ecb8dd1fbd1d50b891c0ef8f4e9276b437c81 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-71.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-71.js
@@ -7,15 +7,14 @@ description: >
     Object.create - one property in 'Properties' is the global object
     that uses Object's [[Get]] method to access the 'enumerable'
     property (8.10.5 step 3.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var accessed = false;
 
-            fnGlobalObject().enumerable = true;
+            this.enumerable = true;
 
             var newObj = Object.create({}, {
-                prop: fnGlobalObject()
+                prop: this
             });
             for (var property in newObj) {
                 if (property === "prop") {
diff --git a/test/built-ins/Object/create/15.2.3.5-4-96.js b/test/built-ins/Object/create/15.2.3.5-4-96.js
index c380a4bc204d3ed91deb5e75341bc68a7ede55a5..8250c6f28ca1f961ba8419a3fc825143f378491b 100644
--- a/test/built-ins/Object/create/15.2.3.5-4-96.js
+++ b/test/built-ins/Object/create/15.2.3.5-4-96.js
@@ -6,14 +6,13 @@ es5id: 15.2.3.5-4-96
 description: >
     Object.create - 'enumerable' property of one property in
     'Properties' is the global object (8.10.5 step 3.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var accessed = false;
 
         var newObj = Object.create({}, {
             prop: {
-                enumerable: fnGlobalObject()
+                enumerable: this
             }
         });
         for (var property in newObj) {
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js b/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js
index 54d63f93e84ab1efdcbb279f130bf466c9c78e5e..e36e3f666687469c20e0a7aaba1723f43d08a166 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-2-18.js
@@ -6,28 +6,28 @@ es5id: 15.2.3.7-2-18
 description: >
     Object.defineProperties - argument 'Properties' is the global
     object
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
         var obj = {};
         var result = false;
 
         try {
-            Object.defineProperty(fnGlobalObject(), "prop", {
+            Object.defineProperty(this, "prop", {
                 get: function () {
-                    result = (this === fnGlobalObject());
+                    result = (this === global);
                     return {};
                 },
                 enumerable: true,
 				configurable:true
             });
 
-            Object.defineProperties(obj, fnGlobalObject());
+            Object.defineProperties(obj, this);
         } catch (e) {
             if (!(e instanceof TypeError)) throw e;
             result = true;
         } finally {
-            delete fnGlobalObject().prop;
+            delete this.prop;
         }
 
 assert(result, 'result !== true');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-109.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-109.js
index dbeba830efe68f78f2b0a112f90b0e0566ecf87c..4a99de9025be8148d3e9eed30d377688743c2ae5 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-109.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-109.js
@@ -6,14 +6,13 @@ es5id: 15.2.3.7-5-b-109
 description: >
     Object.defineProperties - value of 'configurable' property of
     'descObj' is  the global object (8.10.5 step 4.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
         Object.defineProperties(obj, {
             property: {
-                configurable: fnGlobalObject()
+                configurable: this
             }
         });
         var preCheck = obj.hasOwnProperty("property");
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js
index 00afd773fdb3f67fb1ca684fd2a57909f47b1ccb..db7177f090b0dc73a473b279fb968943c955b13b 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-137.js
@@ -7,15 +7,14 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'value' property (8.10.5
     step 5.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().value = "global";
+            this.value = "global";
 
             Object.defineProperties(obj, {
-                property: fnGlobalObject()
+                property: this
             });
 
 assert.sameValue(obj.property, "global", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js
index c508455ca5646fc6d8049cf486a08699a8734e1f..0cf594b05fabd5fa035be2267cb61dd5b6804e02 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-163.js
@@ -7,18 +7,16 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'writable' property
     (8.10.5 step 6.a)
-includes:
-    - propertyHelper.js
-    - fnGlobalObject.js
+includes: [propertyHelper.js]
 ---*/
 
 
 var obj = {};
 
-    fnGlobalObject().writable = false;
+    this.writable = false;
 
     Object.defineProperties(obj, {
-        property: fnGlobalObject()
+        property: this
     });
 
     assert(obj.hasOwnProperty("property"));
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-188.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-188.js
index d58c5a2c5f56a9c5e7efbaabb493b3afafce5bfd..93da155d894c4ae3bd509e0c45adca9e8c1e1a30 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-188.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-188.js
@@ -6,14 +6,13 @@ es5id: 15.2.3.7-5-b-188
 description: >
     Object.defineProperties - value of 'writable' property of
     'descObj' is the global object (8.10.5 step 6.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
         Object.defineProperties(obj, {
             property: {
-                writable: fnGlobalObject()
+                writable: this
             }
         });
 
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js
index c68a952263faa4bea5b60ea073ce8472e536e733..26f4eeb5b61322520f6ec9045888c979d351c01d 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-216.js
@@ -7,17 +7,16 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'get' property (8.10.5
     step 7.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().get = function () {
+            this.get = function () {
                 return "global";
             };
 
             Object.defineProperties(obj, {
-                property: fnGlobalObject()
+                property: this
             });
 
 assert.sameValue(obj.property, "global", 'obj.property');
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js
index 7c1a48bc1f122899dde7b0e9987b8f22a20ec515..6fa274f40ca8f1bcfc2574d483ea3e252a703a7f 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-31.js
@@ -7,16 +7,15 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'enumerable' property
     (8.10.5 step 3.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
         var accessed = false;
 
-            fnGlobalObject().enumerable = true;
+            this.enumerable = true;
 
             Object.defineProperties(obj, {
-                prop: fnGlobalObject()
+                prop: this
             });
             for (var property in obj) {
                 if (property === "prop") {
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-56.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-56.js
index 06b5f3eee1ccc904fd4117b5569c74b35c9d8bad..aae77824ab4e724053ad009db226d062f342da91 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-56.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-56.js
@@ -6,7 +6,6 @@ es5id: 15.2.3.7-5-b-56
 description: >
     Object.defineProperties - value of 'enumerable' property of
     'descObj' is the global object (8.10.5 step 3.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
@@ -14,7 +13,7 @@ includes: [fnGlobalObject.js]
 
         Object.defineProperties(obj, {
             prop: {
-                enumerable: fnGlobalObject()
+                enumerable: this
             }
         });
         for (var property in obj) {
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js
index e0babbe9d1d0cf823c9c951478c338a3adc3f2ff..a662240fea335863714cbf7aca99a6c61174e9e1 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-5-b-84.js
@@ -7,15 +7,14 @@ description: >
     Object.defineProperties - 'descObj' is the global object which
     implements its own [[Get]] method to get 'configurable' property
     (8.10.5 step 4.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().configurable = true;
+            this.configurable = true;
 
             Object.defineProperties(obj, {
-                prop: fnGlobalObject()
+                prop: this
             });
 
             var result1 = obj.hasOwnProperty("prop");
diff --git a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-24.js b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-24.js
index 1bba07061448db448bc71e352e0cf1648642e0a7..1bf7cfbe7d0d8f4e136247510f07726f9db14e9d 100644
--- a/test/built-ins/Object/defineProperties/15.2.3.7-6-a-24.js
+++ b/test/built-ins/Object/defineProperties/15.2.3.7-6-a-24.js
@@ -7,29 +7,29 @@ description: >
     Object.defineProperties - 'O' is the global object which
     implements its own [[GetOwnProperty]] method to get 'P' (8.12.9
     step 1 )
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 
-Object.defineProperty(fnGlobalObject(), "prop", {
+Object.defineProperty(this, "prop", {
 value: 11,
 writable: true,
 enumerable: true,
 configurable: true
 });
 
-Object.defineProperties(fnGlobalObject(), {
+Object.defineProperties(this, {
     prop: {
         value: 12
     }
 });
 
-verifyEqualTo(fnGlobalObject(), "prop", 12);
+verifyEqualTo(this, "prop", 12);
 
-verifyWritable(fnGlobalObject(), "prop");
+verifyWritable(this, "prop");
 
-verifyEnumerable(fnGlobalObject(), "prop");
+verifyEnumerable(this, "prop");
 
-verifyConfigurable(fnGlobalObject(), "prop");
+verifyConfigurable(this, "prop");
 
-delete fnGlobalObject().prop;
+delete this.prop;
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js
index bbe94b75af6c01630cfbc9d3438fd3d5cbd77b79..b89b54fc3e6df56d523673444bbf4fa04ffb0cdf 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-123.js
@@ -6,13 +6,12 @@ es5id: 15.2.3.6-3-123
 description: >
     Object.defineProperty - 'configurable' property in 'Attributes' is
     the global object  (8.10.5 step 4.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
         var attr = {
-            configurable: fnGlobalObject()
+            configurable: this
         };
 
         Object.defineProperty(obj, "property", attr);
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js
index 13f2ce89dbcbd5d90a6efb086faed0103d33e803..afa1640a3e2577b4f59ab2e76cb7b2fc9d07517f 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-151.js
@@ -7,13 +7,12 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'value' property
     (8.10.5 step 5.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().value = "global";
+            this.value = "global";
 
-            Object.defineProperty(obj, "property", fnGlobalObject());
+            Object.defineProperty(obj, "property", this);
 
 assert.sameValue(obj.property, "global", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js
index dc5a0e6dd352f4e08c3658ae556ac1047d1131fc..c044f4dd931865da875954cfc1c454d502c19969 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-177.js
@@ -7,14 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'writable' property
     (8.10.5 step 6.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().writable = true;
+            this.writable = true;
 
-            Object.defineProperty(obj, "property", fnGlobalObject());
+            Object.defineProperty(obj, "property", this);
 
             var beforeWrite = obj.hasOwnProperty("property");
 
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js
index 1a92e780e1975cdbe5e402fcb09775b2c6b68586..52ee4bbd6d6f1df0db73444411101de77779754e 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-202.js
@@ -6,13 +6,12 @@ es5id: 15.2.3.6-3-202
 description: >
     Object.defineProperty - 'writable' property in 'Attributes' is the
     global object (8.10.5 step 6.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
         Object.defineProperty(obj, "property", {
-            writable: fnGlobalObject()
+            writable: this
         });
 
         var beforeWrite = obj.hasOwnProperty("property");
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js
index a7dbfae0a035d5a4f9cbf895cc94f33a59c62a01..2a894faeb3f6ec3643533d3ce6ec9fc172b3bac1 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-230.js
@@ -7,15 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'get' property (8.10.5
     step 7.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().get = function () {
+            this.get = function () {
                 return "globalGetProperty";
             };
 
-            Object.defineProperty(obj, "property", fnGlobalObject());
+            Object.defineProperty(obj, "property", this);
 
 assert.sameValue(obj.property, "globalGetProperty", 'obj.property');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js
index ce66181c2c50c6ed5650fb67ccdc4007b2c9d2f5..17a785f860a16fb167a83504f643b049a7aca6d3 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-260.js
@@ -7,17 +7,16 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'set' property (8.10.5
     step 8.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
         var data = "data";
 
-            fnGlobalObject().set = function (value) {
+            this.set = function (value) {
                 data = value;
             };
 
-            Object.defineProperty(obj, "property", fnGlobalObject());
+            Object.defineProperty(obj, "property", this);
             obj.property = "overrideData";
 
 assert(obj.hasOwnProperty("property"), 'obj.hasOwnProperty("property") !== true');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js
index 114fcde602132878834dee840763efb0dc108988..98538314a01b2b0918081dd4befa5281c98a0cdc 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-45.js
@@ -7,15 +7,14 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'enumerable' property
     (8.10.5 step 3.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
         var accessed = false;
 
-            fnGlobalObject().enumerable = true;
+            this.enumerable = true;
 
-            Object.defineProperty(obj, "property", fnGlobalObject());
+            Object.defineProperty(obj, "property", this);
 
             for (var prop in obj) {
                 if (prop === "property") {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js
index ba161b0f63c290b828853a2030db5f92d094cc3d..ded68d14c1f6e3742b49d92fd37379d9dc84528a 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-70.js
@@ -6,13 +6,12 @@ es5id: 15.2.3.6-3-70
 description: >
     Object.defineProperty - value of 'enumerable' property in
     'Attributes' is the global object (8.10.5 step 3.b)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
         var accessed = false;
 
-        Object.defineProperty(obj, "property", { enumerable: fnGlobalObject() });
+        Object.defineProperty(obj, "property", { enumerable: this });
 
         for (var prop in obj) {
             if (prop === "property") {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js b/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js
index 1bc8fe2979974de479ccc4a222a068b5a1d71d36..5480de3fabbeb0c258f0ef66f153c0586c8d5c4c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-3-98.js
@@ -7,14 +7,13 @@ description: >
     Object.defineProperty - 'Attributes' is the global object that
     uses Object's [[Get]] method to access the 'configurable' property
     (8.10.5 step 4.a)
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
-            fnGlobalObject().configurable = true;
+            this.configurable = true;
 
-            Object.defineProperty(obj, "property", fnGlobalObject());
+            Object.defineProperty(obj, "property", this);
 
             var beforeDeleted = obj.hasOwnProperty("property");
 
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-13.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-13.js
index e4ea55dc5ecee9cfdca83af9f4288ebbdd915dc6..6386e7c4091314b36c30b27e4d2588c01f348545 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-13.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-13.js
@@ -8,11 +8,11 @@ description: >
     property successfully when [[Configurable]] attribute is true and
     [[Writable]] attribute is false, 'O' is the global object (8.12.9
     - step Note)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 
-var obj = fnGlobalObject();
+var obj = this;
 
 try {
     Object.defineProperty(obj, "0", {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-2.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-2.js
index fc2713ea4ce7e6ba13dee21168d909e088eaed23..5ee6d41a8365ef0643bcbe2401ad77f9f7057f40 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-2.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-2.js
@@ -8,7 +8,7 @@ description: >
     property 'P' successfully when [[Configurable]] attribute is true
     and [[Writable]] attribute is false, 'A' is an Array object
     (8.12.9 step - Note)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-4.js
index 6b5927f4a14f6c08bf4d91e148f010b73dd7c6ca..5f644bd4c6b74acfe4eda83e8d35aab99d5b8101 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-4.js
@@ -7,11 +7,11 @@ description: >
     Object.defineProperty will update [[Value]] attribute successfully
     when [[Configurable]] attribute is true and [[Writable]] attribute
     is false, 'O' is the global object (8.12.9 - step Note)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 
-var obj = fnGlobalObject();
+var obj = this;
 
 try {
     Object.defineProperty(obj, "property", {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js
index af11b74339ce9ab1b77d21b5804dfbfd37023260..f71251025d253c281a780e324b52f1db91613cf8 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-354-8.js
@@ -7,12 +7,10 @@ description: >
     ES5 Attributes - property 'P' with attributes [[Writable]]: false,
     [[Enumerable]]: true, [[Configurable]]: true is non-writable using
     simple assignment, 'O' is the global object
-includes:
-    - propertyHelper.js
-    - fnGlobalObject.js
+includes: [propertyHelper.js]
 ---*/
 
-var obj = fnGlobalObject();
+var obj = this;
 
     Object.defineProperty(obj, "prop", {
         value: 2010,
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js
index b1cdb7890ac9f04dd59ff402d0947b316acc9b5f..92122a8cd71259a4dfa75612bc29f2dc2ad67628 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-3.js
@@ -8,12 +8,10 @@ description: >
     [[Writable]]: false, [[Enumerable]]: true, [[Configurable]]: true
     to an accessor property, 'O' is the global object (8.12.9 - step
     9.b.i)
-includes:
-    - propertyHelper.js
-    - fnGlobalObject.js
+includes: [propertyHelper.js]
 ---*/
 
-var obj = fnGlobalObject();
+var obj = this;
 
     Object.defineProperty(obj, "prop", {
         value: 2010,
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-7.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-7.js
index b6c0050b9a584d96b83c36306b642aafc19da239..1011c72418d9904d480478d0cf13910bf8b45a89 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-360-7.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-360-7.js
@@ -8,14 +8,14 @@ description: >
     attributes are [[Writable]]: false, [[Enumerable]]: true,
     [[Configurable]]: true to an accessor property, 'O' is the global
     object (8.12.9 - step 9.b.i)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 function getFunc() {
         return 20;
     }
 
-var obj = fnGlobalObject();
+var obj = this;
 try {
     Object.defineProperty(obj, "0", {
         value: 2010,
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js
index 71b0a8e0aff48de47bfab9c5ada15d90f3f1b2de..0967e3d188e798f107e1f63193781de2f547b614 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-399.js
@@ -6,16 +6,15 @@ es5id: 15.2.3.6-4-399
 description: >
     ES5 Attributes - [[Value]] attribute of data property is the
     global object
-includes: [fnGlobalObject.js]
 ---*/
 
         var obj = {};
 
         Object.defineProperty(obj, "prop", {
-            value: fnGlobalObject()
+            value: this
         });
 
         var desc = Object.getOwnPropertyDescriptor(obj, "prop");
 
-assert.sameValue(obj.prop, fnGlobalObject(), 'obj.prop');
-assert.sameValue(desc.value, fnGlobalObject(), 'desc.value');
+assert.sameValue(obj.prop, this, 'obj.prop');
+assert.sameValue(desc.value, this, 'desc.value');
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-45.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-45.js
index 128c2e32fdbc18ac188ba3e92209600d2630ba87..8f846042ffe248281cbf48eb96f1f17cf7135d0b 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-45.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-45.js
@@ -7,18 +7,18 @@ description: >
     Object.defineProperty - 'O' is the global object that uses
     Object's [[GetOwnProperty]] method to access the 'name' property
     (8.12.9 step 1)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "foo", {
+Object.defineProperty(this, "foo", {
     value: 12,
     configurable: true
 });
 
-verifyEqualTo(fnGlobalObject(), "foo", 12);
+verifyEqualTo(this, "foo", 12);
 
-verifyNotWritable(fnGlobalObject(), "foo");
+verifyNotWritable(this, "foo");
 
-verifyNotEnumerable(fnGlobalObject(), "foo");
+verifyNotEnumerable(this, "foo");
 
-verifyConfigurable(fnGlobalObject(), "foo");
+verifyConfigurable(this, "foo");
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-13.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-13.js
index 5b9a758998ca630fa471bea96aad0796e823b6f4..e214345d11fb4c10292d9bd5311d89a5e5867496 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-13.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-13.js
@@ -8,11 +8,11 @@ description: >
     of indexed accessor property 'P' successfully when
     [[Configurable]] attribute is true, 'O' is the global object
     (8.12.9 step 11)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 
-var obj = fnGlobalObject();
+var obj = this;
 try {
     obj.verifySetFunction = "data";
     Object.defineProperty(obj, "0", {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js
index 84b8696dc55911818d2ed21132f630485dc04a86..e1e03c324584c03824a6b9ef358a3d013b8efd16 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-17.js
@@ -7,10 +7,9 @@ description: >
     ES5 Attributes - Updating an indexed accessor property 'P' using
     simple assignment is successful, 'O' is the global object (8.12.5
     step 5.b)
-includes: [fnGlobalObject.js]
 ---*/
 
-        var obj = fnGlobalObject();
+        var obj = this;
 
             obj.verifySetFunc = "data";
             var setFunc = function (value) {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-4.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-4.js
index beb1f6b47b2b0bb6f7373c9ec45f4fc24f6ac969..01f752db72371128d1e47a6b5327270a425c9499 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-4.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-4.js
@@ -7,11 +7,11 @@ description: >
     Object.defineProperty will update [[Get]] and [[Set]] attributes
     of named accessor property 'P' successfully when [[Configurable]]
     attribute is true, 'O' is the global object (8.12.9 step 11)
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 
-var obj = fnGlobalObject();
+var obj = this;
 try {
     obj.verifySetFunction = "data";
     Object.defineProperty(obj, "property", {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js
index 610532c9cda126abe22a5b9f48aae04b1d9e181a..52b30025f8d5ceb1236e63c7bf61bdcea79938da 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-531-8.js
@@ -7,12 +7,10 @@ description: >
     ES5 Attributes - Updating a named accessor property 'P' without
     [[Set]] using simple assignment is failed, 'O' is the global
     object (8.12.5 step 5.b)
-includes:
-    - propertyHelper.js
-    - fnGlobalObject.js
+includes: [propertyHelper.js]
 ---*/
 
-var obj = fnGlobalObject();
+var obj = this;
 
     obj.verifySetFunc = "data";
     var getFunc = function () {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-538-3.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-538-3.js
index 5b3943ca00a37d3ca3cddbab772b74c5c702cf49..f974218d7a9782e5e72c4ad7461930682fd29e7c 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-538-3.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-538-3.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - Updating a named accessor property 'P' whose
     [[Configurable]] attribute is true to a data property is
     successful, 'O' is the global object
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
-var obj = fnGlobalObject();
+var obj = this;
 
 obj.verifySetFunc = "data";
 var getFunc = function () {
diff --git a/test/built-ins/Object/defineProperty/15.2.3.6-4-538-7.js b/test/built-ins/Object/defineProperty/15.2.3.6-4-538-7.js
index 3e2c36f474fbc5bf693c1bfe3040b5823c7518aa..29b931fd214fb0cfe003b4e55eb325e2a4bbfdac 100644
--- a/test/built-ins/Object/defineProperty/15.2.3.6-4-538-7.js
+++ b/test/built-ins/Object/defineProperty/15.2.3.6-4-538-7.js
@@ -7,10 +7,10 @@ description: >
     ES5 Attributes - Updating an indexed accessor property 'P' whose
     [[Configurable]] attribute is true to a data property is
     successful, 'O' is the global object
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
-var obj = fnGlobalObject();
+var obj = this;
 
 obj.verifySetFunc = "data";
 var getFunc = function () {
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-10.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-10.js
index 58a828328adf0e96ea4722720370fc9159849506..d82974ad95150aee156cfb85563990e0d53ac190 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-10.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-10.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-10
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.decodeURIComponent)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global,  "decodeURIComponent");
 
 assert.sameValue(desc.value, global.decodeURIComponent, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-11.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-11.js
index 49f25de6d5df70e5e48525bebcfced72ba1fdc63..18a41a1275be91403992be55b35189cea0ce85d5 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-11.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-11.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-11
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.encodeURIComponent)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global,  "encodeURIComponent");
 
 assert.sameValue(desc.value, global.encodeURIComponent, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-178.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-178.js
index 9b3668eca804a4e21514fcac517a8ae247c7e69c..7f5b4903d3d334e2f5a345af5afe0ae71b268694 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-178.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-178.js
@@ -6,11 +6,10 @@ es5id: 15.2.3.3-4-178
 description: >
     Object.getOwnPropertyDescriptor returns data desc (all false) for
     properties on built-ins (Global.NaN)
-includes: [fnGlobalObject.js]
 ---*/
 
   // in non-strict mode, 'this' is bound to the global object.
-  var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), "NaN");
+  var desc = Object.getOwnPropertyDescriptor(this, "NaN");
 
 assert.sameValue(desc.writable, false, 'desc.writable');
 assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-179.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-179.js
index 2cad474cdff131b1a3d22cf817a8057237a9d555..6a38e5f060128b66cb8ae44cd0fe109ef6aa1998 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-179.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-179.js
@@ -6,11 +6,10 @@ es5id: 15.2.3.3-4-179
 description: >
     Object.getOwnPropertyDescriptor returns data desc (all false) for
     properties on built-ins (Global.Infinity)
-includes: [fnGlobalObject.js]
 ---*/
 
   // in non-strict mode, 'this' is bound to the global object.
-  var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(),  "Infinity");
+  var desc = Object.getOwnPropertyDescriptor(this,  "Infinity");
 
 assert.sameValue(desc.writable, false, 'desc.writable');
 assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-180.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-180.js
index 9f73a8a376116cd25087915937757dab9c389e5f..65412185c31dcfe16fd4d455c89d536c7f2b1105 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-180.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-180.js
@@ -6,11 +6,10 @@ es5id: 15.2.3.3-4-180
 description: >
     Object.getOwnPropertyDescriptor returns data desc (all false) for
     properties on built-ins (Global.undefined)
-includes: [fnGlobalObject.js]
 ---*/
 
   // in non-strict mode, 'this' is bound to the global object.
-  var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(),  "undefined");
+  var desc = Object.getOwnPropertyDescriptor(this,  "undefined");
 
 assert.sameValue(desc.writable, false, 'desc.writable');
 assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-4.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-4.js
index 26c26fd7ed6c532a9d10a264cf67c72c130fb7db..a81aad268126823b6cc2dae9516e16f3ad693f03 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-4.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-4.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-4
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.eval)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global,  "eval");
 
 assert.sameValue(desc.value, global.eval, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-5.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-5.js
index fb442a07138dd322dffa666921f503a320349512..d99651e90edfdf6655075b1a74a1c0cd0666bf1f 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-5.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-5.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-5
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.parseInt)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global,  "parseInt");
 
 assert.sameValue(desc.value, global.parseInt, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-6.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-6.js
index f4287cf87d7c14e8cea6deb36ef1517f650c56fe..1e4a06e2301f42a2cdd973d72a9698875b0c4961 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-6.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-6.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-6
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.parseFloat)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global, "parseFloat");
 
 assert.sameValue(desc.value, global.parseFloat, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-7.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-7.js
index ddeb2a079b3b41540a0a8d57ad4a8d868f8575c2..1c410ce45147c667544ae86150fb1cd54ff012e1 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-7.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-7.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-7
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.isNaN)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global,  "isNaN");
 
 assert.sameValue(desc.value, global.isNaN, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-8.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-8.js
index 39a189fd5dea7fc463cf34329f52888df7bde52c..094fcbd888b01e4507f7038565d9598dc791131d 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-8.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-8.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-8
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.isFinite)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global,  "isFinite");
 
 assert.sameValue(desc.value, global.isFinite, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-9.js b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-9.js
index cefada6b5ad05e4d893e1f6497f3bcbda9f10efb..ff648971c3d089c31bd3411ecde8ca58fcd610fb 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-9.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-9.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.3-4-9
 description: >
     Object.getOwnPropertyDescriptor returns data desc for functions on
     built-ins (Global.decodeURI)
-includes: [fnGlobalObject.js]
 ---*/
 
-  var global = fnGlobalObject();
+  var global = this;
   var desc = Object.getOwnPropertyDescriptor(global, "decodeURI");
 
 assert.sameValue(desc.value, global.decodeURI, 'desc.value');
diff --git a/test/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js b/test/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js
index e344e3e994143e2dcad71099dbc21c7ff9ccbf4b..a76b5ba2a592ae67a2f3ac201465137706ba8393 100644
--- a/test/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js
+++ b/test/built-ins/Object/getOwnPropertyDescriptors/tamper-with-global-object.js
@@ -6,7 +6,6 @@ description: >
     Object.getOwnPropertyDescriptors should not have its behavior impacted by modifications to the global property Object
 esid: pending
 author: Jordan Harband
-includes: [fnGlobalObject.js]
 ---*/
 
 function fakeObject() {
@@ -15,7 +14,7 @@ function fakeObject() {
 fakeObject.getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors;
 fakeObject.keys = Object.keys;
 
-var global = fnGlobalObject();
+var global = this;
 global.Object = fakeObject;
 
 assert.sameValue(Object, fakeObject, 'Sanity check failed: could not modify the global Object');
diff --git a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js
index 6af3d418eee5b16e45184723fb923df61635b86b..55837780105bef7d65681d7ef37b1d50fc77d9e0 100644
--- a/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js
+++ b/test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-1.js
@@ -4,10 +4,9 @@
 /*---
 es5id: 15.2.3.4-4-1
 description: Object.getOwnPropertyNames returns array of property names (Global)
-includes: [fnGlobalObject.js]
 ---*/
 
-        var result = Object.getOwnPropertyNames(fnGlobalObject());
+        var result = Object.getOwnPropertyNames(this);
         var expResult = ["NaN", "Infinity", "undefined", "eval", "parseInt", "parseFloat", "isNaN", "isFinite", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "Object", "Function", "Array", "String", "Boolean", "Number", "Date", "Date", "RegExp", "Error", "EvalError", "RangeError", "ReferenceError", "SyntaxError", "TypeError", "URIError", "Math", "JSON"];
 
         var result1 = {};
diff --git a/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-30.js b/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-30.js
index dceac26413ed3be6502d95c9ccd5fb6a35445af5..9fcd1fac866f61d1ca47ad46d4d31c297ed9d483 100644
--- a/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-30.js
+++ b/test/built-ins/Object/getPrototypeOf/15.2.3.2-2-30.js
@@ -6,9 +6,8 @@ es5id: 15.2.3.2-2-30
 description: >
     Object.getPrototypeOf returns the [[Prototype]] of its parameter
     (the global object)
-includes: [fnGlobalObject.js]
 ---*/
 
-        var proto = Object.getPrototypeOf(fnGlobalObject());
+        var proto = Object.getPrototypeOf(this);
 
-assert.sameValue(proto.isPrototypeOf(fnGlobalObject()), true, 'proto.isPrototypeOf(fnGlobalObject())');
+assert.sameValue(proto.isPrototypeOf(this), true, 'proto.isPrototypeOf(this)');
diff --git a/test/built-ins/Object/isExtensible/15.2.3.13-2-1.js b/test/built-ins/Object/isExtensible/15.2.3.13-2-1.js
index e5e2ed3a12b2816b3128334c58f336ef334d69fd..663ccbbae1d8b7c17573e6b601b5e9d4eafc7d99 100644
--- a/test/built-ins/Object/isExtensible/15.2.3.13-2-1.js
+++ b/test/built-ins/Object/isExtensible/15.2.3.13-2-1.js
@@ -4,10 +4,9 @@
 /*---
 es5id: 15.2.3.13-2-1
 description: Object.isExtensible returns true for all built-in objects (Global)
-includes: [fnGlobalObject.js]
 ---*/
 
-var global = fnGlobalObject();
+var global = this;
 
 assert(Object.isExtensible(global));
 
diff --git a/test/built-ins/Object/isExtensible/15.2.3.13-2-29.js b/test/built-ins/Object/isExtensible/15.2.3.13-2-29.js
index 178d0f6dd7094fd886c2052a10df29eec3b9782e..3c2750c358b35bfff414ee2958258c92feb433e1 100644
--- a/test/built-ins/Object/isExtensible/15.2.3.13-2-29.js
+++ b/test/built-ins/Object/isExtensible/15.2.3.13-2-29.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.2.3.13-2-29
 description: Object.isExtensible returns true for the global object
-includes: [fnGlobalObject.js]
 ---*/
 
-assert(Object.isExtensible(fnGlobalObject()), 'Object.isExtensible(fnGlobalObject()) !== true');
+assert(Object.isExtensible(this), 'Object.isExtensible(this) !== true');
diff --git a/test/built-ins/Object/isFrozen/15.2.3.12-3-1.js b/test/built-ins/Object/isFrozen/15.2.3.12-3-1.js
index 12a2e9b5f48835905d22ecb44e8ab6abf9a1c60c..7cd453d3762d646376a740f825fa059f9a77f6ee 100644
--- a/test/built-ins/Object/isFrozen/15.2.3.12-3-1.js
+++ b/test/built-ins/Object/isFrozen/15.2.3.12-3-1.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.2.3.12-3-1
 description: Object.isFrozen returns false for all built-in objects (Global)
-includes: [fnGlobalObject.js]
 ---*/
 
-assert(!Object.isFrozen(fnGlobalObject()));
+assert(!Object.isFrozen(this));
diff --git a/test/built-ins/Object/isSealed/15.2.3.11-4-1.js b/test/built-ins/Object/isSealed/15.2.3.11-4-1.js
index dfd9b38ae342a8283c4bd6cca8cc2c1dbbe80585..23ede288d3ec63a2e4f571b23cd2679b3fbbff29 100644
--- a/test/built-ins/Object/isSealed/15.2.3.11-4-1.js
+++ b/test/built-ins/Object/isSealed/15.2.3.11-4-1.js
@@ -4,7 +4,6 @@
 /*---
 es5id: 15.2.3.11-4-1
 description: Object.isSealed returns false for all built-in objects (Global)
-includes: [fnGlobalObject.js]
 ---*/
 
-assert(!Object.isSealed(fnGlobalObject()));
+assert(!Object.isSealed(this));
diff --git a/test/built-ins/Object/keys/15.2.3.14-6-6.js b/test/built-ins/Object/keys/15.2.3.14-6-6.js
index 5322bd3b56d51e47fbfe8aa4ee3f14513bf2d6e8..bb191c76ddd813480e0fecd78266a533326bf392 100644
--- a/test/built-ins/Object/keys/15.2.3.14-6-6.js
+++ b/test/built-ins/Object/keys/15.2.3.14-6-6.js
@@ -6,10 +6,9 @@ es5id: 15.2.3.14-6-6
 description: >
     Object.keys - the order of elements in returned array is the same
     with the order of properties in 'O' (global Object)
-includes: [fnGlobalObject.js]
 ---*/
 
-        var obj = fnGlobalObject();
+        var obj = this;
 
         var tempArray = [];
         for (var p in obj) {
diff --git a/test/built-ins/Promise/S25.4.3.1_A1.1_T1.js b/test/built-ins/Promise/S25.4.3.1_A1.1_T1.js
index ac5cc6d0de0700fad82c82b7a8d9de38db38a0e2..aec77173eee9f6e45634e48ab8e16a4e19847ac7 100644
--- a/test/built-ins/Promise/S25.4.3.1_A1.1_T1.js
+++ b/test/built-ins/Promise/S25.4.3.1_A1.1_T1.js
@@ -7,10 +7,9 @@ info: >
 es6id: S25.4.3.1_A1.1_T1
 author: Sam Mikes
 description: Promise === global.Promise
-includes: [fnGlobalObject.js]
 ---*/
 
-var global = fnGlobalObject();
+var global = this;
 
 if (Promise !== global.Promise) {
     $ERROR("Expected Promise === global.Promise.");
diff --git a/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js b/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js
index f74ccebdd14248ef813724671eb49737282726a8..e5a6f19f893861b8bc3fdb53032afd709fc4c27d 100644
--- a/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js
+++ b/test/built-ins/Promise/S25.4.3.1_A5.1_T1.js
@@ -10,10 +10,9 @@ es6id: S25.4.3.1_A5.1_T1
 author: Sam Mikes
 description: Promise executor gets default handling for 'this'
 flags: [async, noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-var expectedThis = fnGlobalObject();
+var expectedThis = this;
 
 var p = new Promise(function (resolve) {
     if (this !== expectedThis) {
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js
index 7861def3814bf117bdfe33d1b181374680a01e23..887089ab70f9eebfad85654fb365e21c020f922f 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-invoke-nonstrict.js
@@ -10,10 +10,9 @@ author: Sam Mikes
 description: >
     "fulfilled" handler invoked correctly outside of strict mode
 flags: [async, noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-var expectedThis = fnGlobalObject(),
+var expectedThis = this,
     obj = {};
 
 var p = Promise.resolve(obj).then(function(arg) {
diff --git a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js
index d01480d0c9a4213be93946ffd2e41d5ef8f40543..6e87d4f16cb19f730bea0d5f569310cdfd3a9d03 100644
--- a/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js
+++ b/test/built-ins/Promise/prototype/then/rxn-handler-rejected-invoke-nonstrict.js
@@ -10,10 +10,9 @@ author: Sam Mikes
 description: >
     "rejected" handler invoked correctly outside of strict mode
 flags: [async, noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-var expectedThis = fnGlobalObject(),
+var expectedThis = this,
     obj = {};
 
 var p = Promise.reject(obj).then(function () {
diff --git a/test/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js b/test/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js
index 654d7b7ef41cf3912c2f1ed1ffa186edbb694ffe..22a2a0cc5ff1f903809b626b09cc68c0a359181d 100644
--- a/test/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js
+++ b/test/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js
@@ -16,7 +16,6 @@ info: >
            iv. Let replValue be Call(replaceValue, undefined, replacerArgs).
            [...]
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 features: [Symbol.replace]
 ---*/
 
@@ -27,4 +26,4 @@ var replacer = function() {
 
 /./[Symbol.replace]('x', replacer);
 
-assert.sameValue(thisVal, fnGlobalObject());
+assert.sameValue(thisVal, this);
diff --git a/test/built-ins/String/prototype/match/S15.5.4.10_A1_T3.js b/test/built-ins/String/prototype/match/S15.5.4.10_A1_T3.js
index 32bf2953955088f7bd67126233a17e0a9a9dfad5..dd87135654fd441bf46e4614bb7c912d36d32b2f 100644
--- a/test/built-ins/String/prototype/match/S15.5.4.10_A1_T3.js
+++ b/test/built-ins/String/prototype/match/S15.5.4.10_A1_T3.js
@@ -5,18 +5,17 @@
 info: String.prototype.match (regexp)
 es5id: 15.5.4.10_A1_T3
 description: Checking by using eval
-includes: [fnGlobalObject.js]
 ---*/
 
-var match = String.prototype.match.bind(fnGlobalObject());
+var match = String.prototype.match.bind(this);
 
 try {
-    fnGlobalObject().toString = Object.prototype.toString;
+    this.toString = Object.prototype.toString;
 } catch (e) { ; }
 
 //////////////////////////////////////////////////////////////////////////////
 //CHECK#1
-if ((fnGlobalObject().toString === Object.prototype.toString)  && //Ensure we could overwrite global obj's toString
+if ((this.toString === Object.prototype.toString)  && //Ensure we could overwrite global obj's toString
     (match(eval("\"bj\""))[0] !== "bj")) {
   $ERROR('#1: match = String.prototype.match.bind(this); match(eval("\\"bj\\""))[0] === "bj". Actual: '+match(eval("\"bj\""))[0] );
 }
diff --git a/test/built-ins/String/prototype/replace/15.5.4.11-1.js b/test/built-ins/String/prototype/replace/15.5.4.11-1.js
index 7d337df78f43eed1979ebd09b3ed5f3d2fce5cd3..5cc4a8ce9e76ebe35cfa499bafde1b06062644d7 100644
--- a/test/built-ins/String/prototype/replace/15.5.4.11-1.js
+++ b/test/built-ins/String/prototype/replace/15.5.4.11-1.js
@@ -7,12 +7,12 @@ description: >
     'this' object used by the replaceValue function of a
     String.prototype.replace invocation
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
   var retVal = 'x'.replace(/x/, 
                            function() { 
-                               if (this===fnGlobalObject()) {
+                               if (this===global) {
                                    return 'y';
                                } else {
                                    return 'z';
diff --git a/test/built-ins/TypedArrays/from/mapfn-this-without-thisarg-non-strict.js b/test/built-ins/TypedArrays/from/mapfn-this-without-thisarg-non-strict.js
index e5d4d5ac1c0cff187972e2bd0aaaed5446c47f3c..455d9b4465da2fca8c444458cf8899b6398cd679 100644
--- a/test/built-ins/TypedArrays/from/mapfn-this-without-thisarg-non-strict.js
+++ b/test/built-ins/TypedArrays/from/mapfn-this-without-thisarg-non-strict.js
@@ -15,12 +15,12 @@ info: >
     c. If mapping is true, then
       i. Let mappedValue be ? Call(mapfn, T, « kValue, k »).
   ...
-includes: [testTypedArray.js, fnGlobalObject.js]
+includes: [testTypedArray.js]
 flags: [noStrict]
 ---*/
 
 var source = [42, 43];
-var global = fnGlobalObject();
+var global = this;
 
 testWithTypedArrayConstructors(function(TA) {
   var results = [];
diff --git a/test/built-ins/undefined/15.1.1.3-0.js b/test/built-ins/undefined/15.1.1.3-0.js
index ff51a3ab1db491f87d105a45b40534bf2b10b34c..f99520987ce2c3123a79a02d2f1d9de4d6a69f5b 100644
--- a/test/built-ins/undefined/15.1.1.3-0.js
+++ b/test/built-ins/undefined/15.1.1.3-0.js
@@ -6,10 +6,9 @@ es5id: 15.1.1.3-0
 description: >
     Global.undefined is a data property with default attribute values
     (false)
-includes: [fnGlobalObject.js]
 ---*/
 
-    var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), 'undefined');
+    var desc = Object.getOwnPropertyDescriptor(this, 'undefined');
 
 assert.sameValue(desc.writable, false, 'desc.writable');
 assert.sameValue(desc.enumerable, false, 'desc.enumerable');
diff --git a/test/built-ins/undefined/15.1.1.3-2.js b/test/built-ins/undefined/15.1.1.3-2.js
index 9c51239f84186ea6af068d82d52d7e2fbefaa1e7..b1726375c25ce81822446c35a9fbcb7d667aba2d 100644
--- a/test/built-ins/undefined/15.1.1.3-2.js
+++ b/test/built-ins/undefined/15.1.1.3-2.js
@@ -5,10 +5,9 @@
 es5id: 15.1.1.3-2
 description: undefined is not writable, should throw TypeError in strict mode
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-var global = fnGlobalObject();
+var global = this;
 
 assert.throws(TypeError, function() {
   global["undefined"] = 5;  // Should throw a TypeError as per 8.12.5
diff --git a/test/built-ins/undefined/S15.1.1.3_A3_T1.js b/test/built-ins/undefined/S15.1.1.3_A3_T1.js
index 43d8ec4f76a7a90c58910b956d65850235f7f851..9036c5a7596c13fb2de6ddfe834ca3bc2ad1d0d2 100644
--- a/test/built-ins/undefined/S15.1.1.3_A3_T1.js
+++ b/test/built-ins/undefined/S15.1.1.3_A3_T1.js
@@ -5,14 +5,14 @@
 info: The undefined is DontDelete
 es5id: 15.1.1.3_A3.1
 description: Use delete
-includes: [propertyHelper.js, fnGlobalObject.js]
+includes: [propertyHelper.js]
 ---*/
 
 // CHECK#1
-verifyNotConfigurable(fnGlobalObject(), "undefined");
+verifyNotConfigurable(this, "undefined");
 
 try {
-  if (delete fnGlobalObject().undefined !== false) {
+  if (delete this.undefined !== false) {
     $ERROR('#1: delete undefined === false.');
   }
 } catch (e) {
diff --git a/test/intl402/Intl/8.0_L15.js b/test/intl402/Intl/8.0_L15.js
index fc0b04259122934be7ade881c36505c6ceb6accd..cb68bcb0a220b007b898d08ab7d63a4434a9b688 100644
--- a/test/intl402/Intl/8.0_L15.js
+++ b/test/intl402/Intl/8.0_L15.js
@@ -8,10 +8,8 @@ description: >
     defined by the introduction of chapter 17 of the ECMAScript
     Language Specification.
 author: Norbert Lindenberg
-includes:
-    - fnGlobalObject.js
-    - testBuiltInObject.js
+includes: [testBuiltInObject.js]
 ---*/
 
-testBuiltInObject(fnGlobalObject().Intl, false, false, []);
+testBuiltInObject(this.Intl, false, false, []);
 testBuiltInObject(Intl, false, false, ["Collator", "NumberFormat", "DateTimeFormat"]);
diff --git a/test/language/expressions/assignment/11.13.1-4-1.js b/test/language/expressions/assignment/11.13.1-4-1.js
index a038fe33e6d679ddd5a3438d2b1917b5735274c6..679ef87287da19993d812debbc72ca7235c41ce6 100644
--- a/test/language/expressions/assignment/11.13.1-4-1.js
+++ b/test/language/expressions/assignment/11.13.1-4-1.js
@@ -8,7 +8,6 @@ description: >
     simple assignment creates property on the global object if
     LeftHandSide is an unresolvable reference
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
   function foo() {
@@ -16,7 +15,7 @@ includes: [fnGlobalObject.js]
   }
   foo();
 
-  var desc = Object.getOwnPropertyDescriptor(fnGlobalObject(), '__ES3_1_test_suite_test_11_13_1_unique_id_3__');
+  var desc = Object.getOwnPropertyDescriptor(this, '__ES3_1_test_suite_test_11_13_1_unique_id_3__');
 
 assert.sameValue(desc.value, 42, 'desc.value');
 assert.sameValue(desc.writable, true, 'desc.writable');
diff --git a/test/language/expressions/assignment/11.13.1-4-27-s.js b/test/language/expressions/assignment/11.13.1-4-27-s.js
index 42893ad88a3cc7efb0c966aa42d77d502db3caf9..eec767b912efe6dd0faa92c3511a4545b24dd805 100644
--- a/test/language/expressions/assignment/11.13.1-4-27-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-27-s.js
@@ -7,9 +7,9 @@ description: >
     simple assignment throws TypeError if LeftHandSide is a readonly
     property in strict mode (Global.undefined)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 assert.throws(TypeError, function() {
-      fnGlobalObject().undefined = 42;
+      global.undefined = 42;
 });
diff --git a/test/language/expressions/assignment/11.13.1-4-3-s.js b/test/language/expressions/assignment/11.13.1-4-3-s.js
index 20d175c7d77deebe38d37a60e0755a5333bf857a..37c909ebd36939de7c886a4c0bab1d4d6b795ccf 100644
--- a/test/language/expressions/assignment/11.13.1-4-3-s.js
+++ b/test/language/expressions/assignment/11.13.1-4-3-s.js
@@ -7,10 +7,9 @@ description: >
     simple assignment throws TypeError if LeftHandSide is a readonly
     property in strict mode (Global.Infinity)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-
+var global = this;
 assert.throws(TypeError, function() {
-      fnGlobalObject().Infinity = 42;
+      global.Infinity = 42;
 });
diff --git a/test/language/expressions/assignment/S11.13.1_A5_T5.js b/test/language/expressions/assignment/S11.13.1_A5_T5.js
index 6e9294167797842fb909d97f77e2d9d464389d1d..cc11e5fdbecff4dd4bf2b6266c958932e6da2d2b 100755
--- a/test/language/expressions/assignment/S11.13.1_A5_T5.js
+++ b/test/language/expressions/assignment/S11.13.1_A5_T5.js
@@ -11,20 +11,19 @@ description: >
     created Reference even if the environment binding is no longer present.
     No ReferenceError is thrown when assignment is in strict-mode code and the
     original binding is no longer present.
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+var global = this;
+Object.defineProperty(this, "x", {
   configurable: true,
   value: 1
 });
 
 (function() {
   "use strict";
-  x = (delete fnGlobalObject().x, 2);
+  x = (delete global.x, 2);
 })();
 
-if (fnGlobalObject().x !== 2) {
-  $ERROR('#1: fnGlobalObject().x === 2. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 2) {
+  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js
index 09e1e82687c1f0ef072ae824e4283a38b99dcff1..4aef65ddfc145b2c31f3e74205180b053ceea2d8 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.10_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x ^= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x ^= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x ^= 3;
 })();
 
-if (fnGlobalObject().x !== 1) {
-  $ERROR('#1: fnGlobalObject().x === 1. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 1) {
+  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js
index 50123ae5f52f2ecbc7255c911659f29f7fd5a02b..ecbed1071a69e1c4eb767b0600a7e067f543d3e5 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.11_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x |= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x |= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x |= 4;
 })();
 
-if (fnGlobalObject().x !== 6) {
-  $ERROR('#1: fnGlobalObject().x === 6. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 6) {
+  $ERROR('#1: this.x === 6. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js
index e9d23ac6d1dc1eaedbda3c25fa11a745174aa753..ebbf1f6d52f26a3a9834e881c00cdec5aeeb870b 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.1_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x *= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x *= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x *= 3;
 })();
 
-if (fnGlobalObject().x !== 6) {
-  $ERROR('#1: fnGlobalObject().x === 6. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 6) {
+  $ERROR('#1: this.x === 6. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js
index eeb64bcb367651c35311b4ca1fe248e6fe8d91a6..e1753f707255a53db5fb63cf4db4293b0e451d1e 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.2_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x /= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x /= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x /= 3;
 })();
 
-if (fnGlobalObject().x !== 2) {
-  $ERROR('#1: fnGlobalObject().x === 2. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 2) {
+  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js
index 4dcd42f9a78035ab860f149b8ed2ab5f063a2f8e..70fa8fa78e4ac1aba389261295979cfda9961300 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.3_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x %= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x %= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x %= 3;
 })();
 
-if (fnGlobalObject().x !== 2) {
-  $ERROR('#1: fnGlobalObject().x === 2. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 2) {
+  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js
index 93850136305eef0603ce1ea6cd77423a44f373ae..d49c695f46b5267ae6fead78d7e61d9708d9da7a 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.4_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x += y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x += y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x += 1;
 })();
 
-if (fnGlobalObject().x !== 3) {
-  $ERROR('#1: fnGlobalObject().x === 3. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 3) {
+  $ERROR('#1: this.x === 3. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js
index fd2ef123d565b3186d36a8ecf5028292902c98ea..b2c7ad6e033dd18b45c03b18b05ef91e0336745a 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.5_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x -= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x -= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x -= 1;
 })();
 
-if (fnGlobalObject().x !== 1) {
-  $ERROR('#1: fnGlobalObject().x === 1. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 1) {
+  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js
index 16abab4194fba32ef284ff409827944e7b43eb7d..7eb81cd932b8cd3668b2172cf01f1899c6771dbe 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.6_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x <<= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x <<= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x <<= 3;
 })();
 
-if (fnGlobalObject().x !== 16) {
-  $ERROR('#1: fnGlobalObject().x === 16. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 16) {
+  $ERROR('#1: this.x === 16. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js
index 3a361b0f21f20c188da255481e557d53969b107a..a818c565085fa4b1d791e664b35033f90b2b9dfc 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.7_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x >>= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x >>= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x >>= 3;
 })();
 
-if (fnGlobalObject().x !== 2) {
-  $ERROR('#1: fnGlobalObject().x === 2. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 2) {
+  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js
index bfc058a2c1a01eae745a2d80f065a1f7146ddcaf..f9dad8a82e91001b9fa087acedad750ba25b0703 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.8_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x >>>= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x >>>= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x >>>= 3;
 })();
 
-if (fnGlobalObject().x !== 2) {
-  $ERROR('#1: fnGlobalObject().x === 2. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 2) {
+  $ERROR('#1: this.x === 2. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js b/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js
index 7fff695d4108a2c20874d3b5dc8ada91eef54a21..20bfbea156a714e2490cebf14ea2c4b635eeb3ae 100755
--- a/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js
+++ b/test/language/expressions/compound-assignment/S11.13.2_A5.9_T5.js
@@ -12,11 +12,9 @@ description: >
     No ReferenceError is thrown when 'x &= y' is in strict-mode code and the
     original binding is no longer present.
     Check operator is "x &= y".
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -29,6 +27,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x &= 3;
 })();
 
-if (fnGlobalObject().x !== 1) {
-  $ERROR('#1: fnGlobalObject().x === 1. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 1) {
+  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/delete/11.4.1-4.a-8-s.js b/test/language/expressions/delete/11.4.1-4.a-8-s.js
index a0dd257efe0411fdf48e7501de371949d49096cc..3d4bdcd0f208c4525e848486f5bda636e695ecda 100644
--- a/test/language/expressions/delete/11.4.1-4.a-8-s.js
+++ b/test/language/expressions/delete/11.4.1-4.a-8-s.js
@@ -10,10 +10,10 @@ description: >
     delete operator throws TypeError when deleting a non-configurable
     data property in strict mode
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
   // NaN (15.1.1.1) has [[Configurable]] set to false.
 assert.throws(TypeError, function() {
-    delete fnGlobalObject().NaN;
+    delete global.NaN;
 });
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js b/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js
index fa8eccfb892fcd6276dfa2f9d286d4e7d8dc980d..15576f9eb7160054cb0b45122d4b437ad3caa753 100755
--- a/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A5_T5.js
@@ -11,11 +11,9 @@ description: >
     created Reference even if the environment binding is no longer present.
     No ReferenceError is thrown when 'x--' is in strict-mode code and the
     original binding is no longer present.
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -28,6 +26,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x--;
 })();
 
-if (fnGlobalObject().x !== 1) {
-  $ERROR('#1: fnGlobalObject().x === 1. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 1) {
+  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js b/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js
index 12248a0e027fcdcb66d42c376748f0d12d0766e7..9416dc516b168eaceb634e045d0d2431ee59d17e 100755
--- a/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js
+++ b/test/language/expressions/postfix-increment/S11.3.1_A5_T5.js
@@ -11,11 +11,9 @@ description: >
     created Reference even if the environment binding is no longer present.
     No ReferenceError is thrown when 'x++' is in strict-mode code and the
     original binding is no longer present.
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -28,6 +26,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   x++;
 })();
 
-if (fnGlobalObject().x !== 3) {
-  $ERROR('#1: fnGlobalObject().x === 3. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 3) {
+  $ERROR('#1: this.x === 3. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js b/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js
index d7df814ccee24605dc8711d52906662b01183594..b59dc68c91ac33979a4bc65669af8ce684026683 100755
--- a/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js
+++ b/test/language/expressions/prefix-decrement/S11.4.5_A5_T5.js
@@ -11,11 +11,9 @@ description: >
     created Reference even if the environment binding is no longer present.
     No ReferenceError is thrown when '--x' is in strict-mode code and the
     original binding is no longer present.
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -28,6 +26,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   --x;
 })();
 
-if (fnGlobalObject().x !== 1) {
-  $ERROR('#1: fnGlobalObject().x === 1. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 1) {
+  $ERROR('#1: this.x === 1. Actual: ' + (this.x));
 }
diff --git a/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js b/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js
index 95953b1e01881b2b5d030b9b0ddd542307a69386..5381e2a73351ad5396b2ed5fae45be266cd6a745 100755
--- a/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js
+++ b/test/language/expressions/prefix-increment/S11.4.4_A5_T5.js
@@ -11,11 +11,9 @@ description: >
     created Reference even if the environment binding is no longer present.
     No ReferenceError is thrown when '++x' is in strict-mode code and the
     original binding is no longer present.
-includes:
-    - fnGlobalObject.js
 ---*/
 
-Object.defineProperty(fnGlobalObject(), "x", {
+Object.defineProperty(this, "x", {
   configurable: true,
   get: function() {
     delete this.x;
@@ -28,6 +26,6 @@ Object.defineProperty(fnGlobalObject(), "x", {
   ++x;
 })();
 
-if (fnGlobalObject().x !== 3) {
-  $ERROR('#1: fnGlobalObject().x === 3. Actual: ' + (fnGlobalObject().x));
+if (this.x !== 3) {
+  $ERROR('#1: this.x === 3. Actual: ' + (this.x));
 }
diff --git a/test/language/function-code/10.4.3-1-101-s.js b/test/language/function-code/10.4.3-1-101-s.js
index 442a00d351441d9c0df3fd4ed1feeaa759c07767..ad1662426824bf1ca82a75629d9dea4370c07897 100644
--- a/test/language/function-code/10.4.3-1-101-s.js
+++ b/test/language/function-code/10.4.3-1-101-s.js
@@ -7,7 +7,6 @@ description: >
     Strict Mode - checking 'this' (non-strict function passed as arg
     to String.prototype.replace from strict context)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var x = 3;
@@ -18,4 +17,4 @@ function f() {
 }
 
 assert.sameValue(function() {"use strict"; return "ab".replace("b", f);}(), "aa");
-assert.sameValue(x, fnGlobalObject(), 'x');
+assert.sameValue(x, this, 'x');
diff --git a/test/language/function-code/10.4.3-1-101gs.js b/test/language/function-code/10.4.3-1-101gs.js
index d223b0bbdd198f25cb4493ad8a94816a38053d64..3a432aa88440f96f47073aef9249c112ba0fb79e 100644
--- a/test/language/function-code/10.4.3-1-101gs.js
+++ b/test/language/function-code/10.4.3-1-101gs.js
@@ -7,7 +7,6 @@ description: >
     Strict Mode - checking 'this' (non-strict function passed as arg
     to String.prototype.replace from strict context)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var x = 3;
@@ -17,6 +16,6 @@ function f() {
     return "a";
 }
 
-if ( (!(function() {"use strict"; return "ab".replace("b", f)==="aa";}())) || (x!==fnGlobalObject())) {
+if ( (!(function() {"use strict"; return "ab".replace("b", f)==="aa";}())) || (x!==this)) {
      throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-17-s.js b/test/language/function-code/10.4.3-1-17-s.js
index 055382c1261e2346a4d96886280acbc80670bee9..3a6e08bc1ec1f18e7274f4ddbaf45378c158d881 100644
--- a/test/language/function-code/10.4.3-1-17-s.js
+++ b/test/language/function-code/10.4.3-1-17-s.js
@@ -5,11 +5,12 @@
 es5id: 10.4.3-1-17-s
 description: Strict Mode - checking 'this' (eval used within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function testcase() {
   assert.sameValue(eval("typeof this"), "undefined", 'eval("typeof this")');
-  assert.notSameValue(eval("this"), fnGlobalObject(), 'eval("this")');
+  assert.notSameValue(eval("this"), global, 'eval("this")');
 }
 testcase();
diff --git a/test/language/function-code/10.4.3-1-17gs.js b/test/language/function-code/10.4.3-1-17gs.js
index ecd456638612076ddedae80cdd79098b8397f41e..4acd13273a678c7b3fcd18ee8fc353c63b39171e 100644
--- a/test/language/function-code/10.4.3-1-17gs.js
+++ b/test/language/function-code/10.4.3-1-17gs.js
@@ -7,9 +7,8 @@ description: >
     Strict - checking 'this' from a global scope (eval used within
     strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-if (eval("this") !== fnGlobalObject()) {
+if (eval("this") !== this) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-18gs.js b/test/language/function-code/10.4.3-1-18gs.js
index 9fb3ba8f408c05e79dafe35482b0a981a71f5b5c..ebe09659bc601e8d18d64d96e3ba2c7cfb0847bd 100644
--- a/test/language/function-code/10.4.3-1-18gs.js
+++ b/test/language/function-code/10.4.3-1-18gs.js
@@ -7,9 +7,8 @@ description: >
     Strict - checking 'this' from a global scope (eval includes strict
     directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-if (eval("\"use strict\";\nthis") !== fnGlobalObject()) {
+if (eval("\"use strict\";\nthis") !== this) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-19-s.js b/test/language/function-code/10.4.3-1-19-s.js
index 5aff016b91d49debd7f4bbff3345fdc9d2c91c3e..f1c5beb309401d5f6caaf2ac02eecd71a970a736 100644
--- a/test/language/function-code/10.4.3-1-19-s.js
+++ b/test/language/function-code/10.4.3-1-19-s.js
@@ -7,11 +7,12 @@ description: >
     Strict Mode - checking 'this' (indirect eval used within strict
     mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function testcase() {
 var my_eval = eval;
-assert.sameValue(my_eval("this"), fnGlobalObject(), 'my_eval("this")');
+assert.sameValue(my_eval("this"), global, 'my_eval("this")');
 }
 testcase();
diff --git a/test/language/function-code/10.4.3-1-19gs.js b/test/language/function-code/10.4.3-1-19gs.js
index 3b4630a8e15a50f229e80cf66747d3a431dda3b4..db10f54865c9d9e129657b588c781409d84204ba 100644
--- a/test/language/function-code/10.4.3-1-19gs.js
+++ b/test/language/function-code/10.4.3-1-19gs.js
@@ -7,10 +7,9 @@ description: >
     Strict - checking 'this' from a global scope (indirect eval used
     within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var my_eval = eval;
-if (my_eval("this") !== fnGlobalObject()) {
+if (my_eval("this") !== this) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-20-s.js b/test/language/function-code/10.4.3-1-20-s.js
index 24c27b3014a698b1c2b0ca90f0f45a99b77dc9c1..4da7e5aae125f2d4d7955c9bd377753e99027747 100644
--- a/test/language/function-code/10.4.3-1-20-s.js
+++ b/test/language/function-code/10.4.3-1-20-s.js
@@ -7,11 +7,12 @@ description: >
     Strict Mode - checking 'this' (indirect eval includes strict
     directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function testcase() {
 var my_eval = eval;
-assert.sameValue(my_eval("\"use strict\";\nthis"), fnGlobalObject());
+assert.sameValue(my_eval("\"use strict\";\nthis"), this);
 }
 testcase();
diff --git a/test/language/function-code/10.4.3-1-20gs.js b/test/language/function-code/10.4.3-1-20gs.js
index 5a1339a3681a82abff27288bab63de0765cc42bc..9a85f52637f30e6247872b71087f78224a113728 100644
--- a/test/language/function-code/10.4.3-1-20gs.js
+++ b/test/language/function-code/10.4.3-1-20gs.js
@@ -7,10 +7,9 @@ description: >
     Strict - checking 'this' from a global scope (indirect eval
     includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var my_eval = eval;
-if (my_eval("\"use strict\";\nthis") !== fnGlobalObject() ) {
+if (my_eval("\"use strict\";\nthis") !== this ) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-21-s.js b/test/language/function-code/10.4.3-1-21-s.js
index 5182c995dd99eaf489d2489b6d6e24cfe0daedd0..a491dc3dd04e2e3fec2cb2dd3890f81be14e0f48 100644
--- a/test/language/function-code/10.4.3-1-21-s.js
+++ b/test/language/function-code/10.4.3-1-21-s.js
@@ -7,12 +7,11 @@ description: >
     Strict Mode - checking 'this' (New'ed object from
     FunctionDeclaration defined within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() {
     return this;
 }
 
-assert.notSameValue((new f()), fnGlobalObject(), '(new f())');
+assert.notSameValue((new f()), this, '(new f())');
 assert.notSameValue(typeof (new f()), "undefined", 'typeof (new f())');
diff --git a/test/language/function-code/10.4.3-1-21gs.js b/test/language/function-code/10.4.3-1-21gs.js
index 31e41a01147bb32a6b4cd39d4fd4d72522164c09..85c23bc71b719b9deadc482ac82d2e2c6115cc3c 100644
--- a/test/language/function-code/10.4.3-1-21gs.js
+++ b/test/language/function-code/10.4.3-1-21gs.js
@@ -7,12 +7,11 @@ description: >
     Strict - checking 'this' from a global scope (New'ed object from
     FunctionDeclaration defined within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() {
     return this;
 }
-if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+if (((new f()) === this) || (typeof (new f()) === "undefined")) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-22-s.js b/test/language/function-code/10.4.3-1-22-s.js
index 2e836e2ecf310f5f69d5008dab92d6c6d3b43edb..335db96eab6a6e6f26562b42dd1a9459b77eafb8 100644
--- a/test/language/function-code/10.4.3-1-22-s.js
+++ b/test/language/function-code/10.4.3-1-22-s.js
@@ -7,7 +7,6 @@ description: >
     Strict Mode - checking 'this' (New'ed object from
     FunctionDeclaration includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() {
@@ -15,5 +14,5 @@ function f() {
     return this;
 }
 
-assert.notSameValue((new f()), fnGlobalObject(), '(new f())');
+assert.notSameValue((new f()), this, '(new f())');
 assert.notSameValue(typeof (new f()), "undefined", 'typeof (new f())');
diff --git a/test/language/function-code/10.4.3-1-22gs.js b/test/language/function-code/10.4.3-1-22gs.js
index 55cdaa4fd5537c9d0b26af523187a8b54165eaaa..82e4c5d09700cf5ae8f665963600e384563af512 100644
--- a/test/language/function-code/10.4.3-1-22gs.js
+++ b/test/language/function-code/10.4.3-1-22gs.js
@@ -7,13 +7,12 @@ description: >
     Strict - checking 'this' from a global scope (New'ed object from
     FunctionDeclaration includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() {
     "use strict";
     return this;
 }
-if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+if (((new f()) === this) || (typeof (new f()) === "undefined")) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-23-s.js b/test/language/function-code/10.4.3-1-23-s.js
index 68ca1f159712bed061ef719dc8ea6a548d1b4170..d91e403c4e1bd2f355417c0cf445de8f58a1826d 100644
--- a/test/language/function-code/10.4.3-1-23-s.js
+++ b/test/language/function-code/10.4.3-1-23-s.js
@@ -7,12 +7,11 @@ description: >
     Strict Mode - checking 'this' (New'ed object from
     FunctionExpression defined within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var f = function () {
     return this;
 }
 
-assert.notSameValue((new f()), fnGlobalObject(), '(new f())');
+assert.notSameValue((new f()), this, '(new f())');
 assert.notSameValue(typeof (new f()), "undefined", 'typeof (new f())');
diff --git a/test/language/function-code/10.4.3-1-23gs.js b/test/language/function-code/10.4.3-1-23gs.js
index 17f385269d8a38c3eb1e0abe44e1ceb6c7bcb7ab..b66a27c3579bfeee04baf6c29786d341cbb6b6d2 100644
--- a/test/language/function-code/10.4.3-1-23gs.js
+++ b/test/language/function-code/10.4.3-1-23gs.js
@@ -7,12 +7,11 @@ description: >
     Strict - checking 'this' from a global scope (New'ed object from
     FunctionExpression defined within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var f = function () {
     return this;
 }
-if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+if (((new f()) === this) || (typeof (new f()) === "undefined")) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-24-s.js b/test/language/function-code/10.4.3-1-24-s.js
index 1f42d08f8e4c9e1a24bb853cc22ee93a0bb17d1d..7ed433759fbde661a4bcb09375e78c5f915648bc 100644
--- a/test/language/function-code/10.4.3-1-24-s.js
+++ b/test/language/function-code/10.4.3-1-24-s.js
@@ -7,7 +7,6 @@ description: >
     Strict Mode - checking 'this' (New'ed object from
     FunctionExpression includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var f = function () {
@@ -15,5 +14,5 @@ var f = function () {
     return this;
 }
 
-assert.notSameValue((new f()), fnGlobalObject(), '(new f())');
+assert.notSameValue((new f()), this, '(new f())');
 assert.notSameValue(typeof (new f()), "undefined", 'typeof (new f())');
diff --git a/test/language/function-code/10.4.3-1-24gs.js b/test/language/function-code/10.4.3-1-24gs.js
index fc156a0c059c078763903b342c6b2179d3364eb9..97b8d7ad5dbabcf0ef308c252ae98a17c74a8a19 100644
--- a/test/language/function-code/10.4.3-1-24gs.js
+++ b/test/language/function-code/10.4.3-1-24gs.js
@@ -7,13 +7,12 @@ description: >
     Strict - checking 'this' from a global scope (New'ed object from
     FunctionExpression includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var f = function () {
     "use strict";
     return this;
 }
-if (((new f()) === fnGlobalObject()) || (typeof (new f()) === "undefined")) {
+if (((new f()) === this) || (typeof (new f()) === "undefined")) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-25-s.js b/test/language/function-code/10.4.3-1-25-s.js
index 71593304417995c1e68d35162e28af1d0cef8a51..d63d56547e6e57df6fb091ff8214422daa5783a8 100644
--- a/test/language/function-code/10.4.3-1-25-s.js
+++ b/test/language/function-code/10.4.3-1-25-s.js
@@ -7,12 +7,11 @@ description: >
     Strict Mode - checking 'this' (New'ed object from Anonymous
     FunctionExpression defined within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var obj = new (function () {
     return this;
 });
 
-assert.notSameValue(obj, fnGlobalObject(), 'obj');
+assert.notSameValue(obj, this, 'obj');
 assert.notSameValue((typeof obj), "undefined", '(typeof obj)');
diff --git a/test/language/function-code/10.4.3-1-25gs.js b/test/language/function-code/10.4.3-1-25gs.js
index 049e6b6946e5550b15654ccd17b57cfd3a95d7b9..17dfe0167b5049ce96dfc06136384969f223fb30 100644
--- a/test/language/function-code/10.4.3-1-25gs.js
+++ b/test/language/function-code/10.4.3-1-25gs.js
@@ -7,12 +7,11 @@ description: >
     Strict - checking 'this' from a global scope (New'ed object from
     Anonymous FunctionExpression defined within strict mode)
 flags: [onlyStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var obj = new (function () {
     return this;
 });
-if ((obj === fnGlobalObject()) || (typeof obj === "undefined")) {
+if ((obj === this) || (typeof obj === "undefined")) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-26-s.js b/test/language/function-code/10.4.3-1-26-s.js
index fd7135282a2189047595201f99b7baf1c502c019..494a12ee40e9c226b01509aaa7b8cddfe8d5c0c8 100644
--- a/test/language/function-code/10.4.3-1-26-s.js
+++ b/test/language/function-code/10.4.3-1-26-s.js
@@ -7,7 +7,6 @@ description: >
     Strict Mode - checking 'this' (New'ed object from Anonymous
     FunctionExpression includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var obj = new (function () {
@@ -15,5 +14,5 @@ var obj = new (function () {
     return this;
 });
 
-assert.notSameValue(obj, fnGlobalObject(), 'obj');
+assert.notSameValue(obj, this, 'obj');
 assert.notSameValue((typeof obj), "undefined", '(typeof obj)');
diff --git a/test/language/function-code/10.4.3-1-26gs.js b/test/language/function-code/10.4.3-1-26gs.js
index 40b7f114c4967a0da88d0c3db9e4a5f6461253c0..4d02c8626ba31255072d7b55c900b292890dd9f2 100644
--- a/test/language/function-code/10.4.3-1-26gs.js
+++ b/test/language/function-code/10.4.3-1-26gs.js
@@ -7,13 +7,12 @@ description: >
     Strict - checking 'this' from a global scope (New'ed object from
     Anonymous FunctionExpression includes strict directive prologue)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 var obj = new (function () {
     "use strict";
     return this;
 });
-if ((obj === fnGlobalObject()) || (typeof obj === "undefined")) {
+if ((obj === this) || (typeof obj === "undefined")) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-45-s.js b/test/language/function-code/10.4.3-1-45-s.js
index 5d8577b93e7528ffb64cf86edb8aaf562ccda96c..49df44a154b48fb4c64691632c4e80e71bd352bd 100644
--- a/test/language/function-code/10.4.3-1-45-s.js
+++ b/test/language/function-code/10.4.3-1-45-s.js
@@ -7,15 +7,16 @@ description: >
     Strict Mode - checking 'this' (FunctionDeclaration with a strict
     directive prologue defined within a FunctionDeclaration)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function f1() {
     function f() {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 
 assert(f1(), 'f1() !== true');
diff --git a/test/language/function-code/10.4.3-1-45gs.js b/test/language/function-code/10.4.3-1-45gs.js
index 45e37da196a2cbd98c5426ce1fcfc98cb9687bb1..e182cb064d3b877f88d14c5c8733888bb58ce402 100644
--- a/test/language/function-code/10.4.3-1-45gs.js
+++ b/test/language/function-code/10.4.3-1-45gs.js
@@ -8,15 +8,16 @@ description: >
     with a strict directive prologue defined within a
     FunctionDeclaration)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function f1() {
     function f() {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 if (! f1()) {
     throw "'this' had incorrect value!";
diff --git a/test/language/function-code/10.4.3-1-46-s.js b/test/language/function-code/10.4.3-1-46-s.js
index a1b41beec90d157e3f3e72bbafb2b971f5adc2b0..cc80c6ce18952c66e644496724d344910a0200f7 100644
--- a/test/language/function-code/10.4.3-1-46-s.js
+++ b/test/language/function-code/10.4.3-1-46-s.js
@@ -7,15 +7,16 @@ description: >
     Strict Mode - checking 'this' (FunctionExpression with a strict
     directive prologue defined within a FunctionDeclaration)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function f1() {
     var f = function () {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 
 assert(f1(), 'f1() !== true');
diff --git a/test/language/function-code/10.4.3-1-46gs.js b/test/language/function-code/10.4.3-1-46gs.js
index 53935f5fa7fcdbe97fdde81f9ddf125dd3c74244..e7cfd02947eb74ef1cece6b440054f83e4fbb4d1 100644
--- a/test/language/function-code/10.4.3-1-46gs.js
+++ b/test/language/function-code/10.4.3-1-46gs.js
@@ -8,15 +8,16 @@ description: >
     with a strict directive prologue defined within a
     FunctionDeclaration)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function f1() {
     var f = function () {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 if (! f1()) {
     throw "'this' had incorrect value!";
diff --git a/test/language/function-code/10.4.3-1-47-s.js b/test/language/function-code/10.4.3-1-47-s.js
index 190a71b4b8b7ce5507e4a1cb3ac1bf6ad4151cd6..2ce8bec97f74349e21cdd33d2c1d839357bca0f1 100644
--- a/test/language/function-code/10.4.3-1-47-s.js
+++ b/test/language/function-code/10.4.3-1-47-s.js
@@ -7,14 +7,15 @@ description: >
     Strict Mode - checking 'this' (Anonymous FunctionExpression with a
     strict directive prologue defined within a FunctionDeclaration)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function f1() {
     return ((function () {
         "use strict";
         return typeof this;
-    })()==="undefined") && (this===fnGlobalObject());
+    })()==="undefined") && (this===global);
 }
 
 assert(f1(), 'f1() !== true');
diff --git a/test/language/function-code/10.4.3-1-47gs.js b/test/language/function-code/10.4.3-1-47gs.js
index d84296c46fe0419ce8356a414980e925f6d7c63c..2ec05bb6542f30527f986cda3a068ed0305ff8dc 100644
--- a/test/language/function-code/10.4.3-1-47gs.js
+++ b/test/language/function-code/10.4.3-1-47gs.js
@@ -8,14 +8,15 @@ description: >
     FunctionExpression with a strict directive prologue defined within
     a FunctionDeclaration)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 function f1() {
     return ((function () {
         "use strict";
         return typeof this;
-    })()==="undefined") && (this===fnGlobalObject());
+    })()==="undefined") && (this===global);
 }
 if (! f1()) {
     throw "'this' had incorrect value!";
diff --git a/test/language/function-code/10.4.3-1-48-s.js b/test/language/function-code/10.4.3-1-48-s.js
index d71463da11ba04a4912b72a20adee104591aeabc..3825f2e0339cf68f557da8be72483ad42e97bbcb 100644
--- a/test/language/function-code/10.4.3-1-48-s.js
+++ b/test/language/function-code/10.4.3-1-48-s.js
@@ -7,15 +7,16 @@ description: >
     Strict Mode - checking 'this' (FunctionDeclaration with a strict
     directive prologue defined within a FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 var f1 = function () {
     function f() {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 
 assert(f1(), 'f1() !== true');
diff --git a/test/language/function-code/10.4.3-1-48gs.js b/test/language/function-code/10.4.3-1-48gs.js
index 6840f11b782ae54356e598a933fe86ad12b9f57a..d83214fa7618ac0851c2039febe8af594f0b4f7b 100644
--- a/test/language/function-code/10.4.3-1-48gs.js
+++ b/test/language/function-code/10.4.3-1-48gs.js
@@ -8,15 +8,16 @@ description: >
     with a strict directive prologue defined within a
     FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 var f1 = function () {
     function f() {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 if (! f1()) {
     throw "'this' had incorrect value!";
diff --git a/test/language/function-code/10.4.3-1-49-s.js b/test/language/function-code/10.4.3-1-49-s.js
index ecd6d827e4f1fa45c026df64e7df110ae8cb0535..51e51e618e6a5d05b75c507e9c640dd9239b195f 100644
--- a/test/language/function-code/10.4.3-1-49-s.js
+++ b/test/language/function-code/10.4.3-1-49-s.js
@@ -7,15 +7,16 @@ description: >
     Strict Mode - checking 'this' (FunctionExpression with a strict
     directive prologue defined within a FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 var f1 = function () {
     var f = function () {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 
 assert(f1(), 'f1() !== true');
diff --git a/test/language/function-code/10.4.3-1-49gs.js b/test/language/function-code/10.4.3-1-49gs.js
index 0f31d357b2586bda26004f00f71170e70b2da3a1..12818c4027d51c9dc16d1fc277add911953cc9b6 100644
--- a/test/language/function-code/10.4.3-1-49gs.js
+++ b/test/language/function-code/10.4.3-1-49gs.js
@@ -8,15 +8,16 @@ description: >
     with a strict directive prologue defined within a
     FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 var f1 = function () {
     var f = function () {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 }
 if (! f1()) {
     throw "'this' had incorrect value!";
diff --git a/test/language/function-code/10.4.3-1-50-s.js b/test/language/function-code/10.4.3-1-50-s.js
index f7e864c20a5bb39862f0e00d0047c0ce766e6b3f..90abe6ffc7c8d8594acf9cbac767b5ee5fc8499e 100644
--- a/test/language/function-code/10.4.3-1-50-s.js
+++ b/test/language/function-code/10.4.3-1-50-s.js
@@ -7,14 +7,15 @@ description: >
     Strict Mode - checking 'this' (Anonymous FunctionExpression with a
     strict directive prologue defined within a FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 var f1 = function () {
     return ((function () {
         "use strict";
         return typeof this;
-    })()==="undefined") && (this===fnGlobalObject());
+    })()==="undefined") && (this===global);
 }
 
 assert(f1(), 'f1() !== true');
diff --git a/test/language/function-code/10.4.3-1-50gs.js b/test/language/function-code/10.4.3-1-50gs.js
index c1e667060cf321bf6bfdaf8ea8765bbe11a8f4c5..c583bae88538daeacd567d72d32fff478c36b64e 100644
--- a/test/language/function-code/10.4.3-1-50gs.js
+++ b/test/language/function-code/10.4.3-1-50gs.js
@@ -8,14 +8,15 @@ description: >
     FunctionExpression with a strict directive prologue defined within
     a FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 var f1 = function () {
     return ((function () {
         "use strict";
         return typeof this;
-    })()==="undefined") && (this===fnGlobalObject());
+    })()==="undefined") && (this===global);
 }
 if (! f1()) {
     throw "'this' had incorrect value!";
diff --git a/test/language/function-code/10.4.3-1-51-s.js b/test/language/function-code/10.4.3-1-51-s.js
index 399451d4e9d1b990e266dab0f42ddf4ef9af8fa4..f2c48d6ceecbc45488d2c819b69d30f1d8ecacb9 100644
--- a/test/language/function-code/10.4.3-1-51-s.js
+++ b/test/language/function-code/10.4.3-1-51-s.js
@@ -7,14 +7,15 @@ description: >
     Strict Mode - checking 'this' (FunctionDeclaration with a strict
     directive prologue defined within an Anonymous FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 (function () {
     function f() {
         "use strict";
         return typeof this;
     }
     assert.sameValue(f(), "undefined", 'f()');
-    assert.sameValue(this, fnGlobalObject(), 'this');
+    assert.sameValue(this, global, 'this');
 })();
diff --git a/test/language/function-code/10.4.3-1-51gs.js b/test/language/function-code/10.4.3-1-51gs.js
index 3c6f9810a3d925cbd7c6b26fc082f44480c41e99..bbee7f144c6ef5af66a0a5983d71cde69ec5b782 100644
--- a/test/language/function-code/10.4.3-1-51gs.js
+++ b/test/language/function-code/10.4.3-1-51gs.js
@@ -8,15 +8,16 @@ description: >
     with a strict directive prologue defined within an Anonymous
     FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 if (! ((function () {
     function f() {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 })())) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-52-s.js b/test/language/function-code/10.4.3-1-52-s.js
index 6ec647b5d102ec55d1583062351e00e0f9aae13d..64028c22d2179df17ddf9f3455ab83d13b9903c3 100644
--- a/test/language/function-code/10.4.3-1-52-s.js
+++ b/test/language/function-code/10.4.3-1-52-s.js
@@ -7,14 +7,15 @@ description: >
     Strict Mode - checking 'this' (FunctionExpression with a strict
     directive prologue defined within an Anonymous FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global  = this;
+
 (function () {
     var f = function () {
         "use strict";
         return typeof this;
     }
     assert.sameValue(f(), "undefined", 'f()');
-    assert.sameValue(this, fnGlobalObject(), 'this');
+    assert.sameValue(this, global, 'this');
 })();
diff --git a/test/language/function-code/10.4.3-1-52gs.js b/test/language/function-code/10.4.3-1-52gs.js
index f33607f6ec0d1377aa2a0a39714bb04bc2fc8dc3..42ac10f69f3b19ff08ecf8d837264a08bc0dd6da 100644
--- a/test/language/function-code/10.4.3-1-52gs.js
+++ b/test/language/function-code/10.4.3-1-52gs.js
@@ -8,15 +8,16 @@ description: >
     with a strict directive prologue defined within an Anonymous
     FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 if (! ((function () {
     var f = function () {
         "use strict";
         return typeof this;
     }
-    return (f()==="undefined") && (this===fnGlobalObject());
+    return (f()==="undefined") && (this===global);
 })())) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-53-s.js b/test/language/function-code/10.4.3-1-53-s.js
index 598bdbe5594b1e96b7076f55f3fd0b1246f6a2bb..d559f0be2de78351e378969b18559b1171693142 100644
--- a/test/language/function-code/10.4.3-1-53-s.js
+++ b/test/language/function-code/10.4.3-1-53-s.js
@@ -8,13 +8,14 @@ description: >
     strict directive prologue defined within an Anonymous
     FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 (function () {
     assert.sameValue((function () {
         "use strict";
         return typeof this;
     })(), "undefined");
-    assert.sameValue(this, fnGlobalObject(), 'this');
+    assert.sameValue(this, global, 'this');
 })();
diff --git a/test/language/function-code/10.4.3-1-53gs.js b/test/language/function-code/10.4.3-1-53gs.js
index ddd50586660c31f35ed57dc6ef9b225b4312a565..92243a6cccb467f5247f38d12b713898330cfc8b 100644
--- a/test/language/function-code/10.4.3-1-53gs.js
+++ b/test/language/function-code/10.4.3-1-53gs.js
@@ -8,14 +8,15 @@ description: >
     FunctionExpression with a strict directive prologue defined within
     an Anonymous FunctionExpression)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
+
 if (! ((function () {
     return ((function () {
         "use strict";
         return typeof this;
-    })()==="undefined") && (this===fnGlobalObject());
+    })()==="undefined") && (this===global);
 })())) {
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-64-s.js b/test/language/function-code/10.4.3-1-64-s.js
index 2c756125dc24fa0d84a6897cace509d7dfbfc203..345f55067a7e792417508a8857523fd3cfe5d068 100644
--- a/test/language/function-code/10.4.3-1-64-s.js
+++ b/test/language/function-code/10.4.3-1-64-s.js
@@ -6,8 +6,7 @@ es5id: 10.4.3-1-64-s
 description: >
     checking 'this' (strict function declaration called by non-strict Function
     constructor)
-includes: [fnGlobalObject.js]
 ---*/
 
-fnGlobalObject().f = function() { "use strict"; return this===undefined;};
+this.f = function() { "use strict"; return this===undefined;};
 assert(Function("return f();")());
diff --git a/test/language/function-code/10.4.3-1-65-s.js b/test/language/function-code/10.4.3-1-65-s.js
index f3d118076382a905f476db9db02b77b5a21862a5..784022f55dd7e74540137f93e4e7a97b022c28ef 100644
--- a/test/language/function-code/10.4.3-1-65-s.js
+++ b/test/language/function-code/10.4.3-1-65-s.js
@@ -6,8 +6,7 @@ es5id: 10.4.3-1-65-s
 description: >
     checking 'this' (strict function declaration called by non-strict new'ed
     Function constructor)
-includes: [fnGlobalObject.js]
 ---*/
 
-fnGlobalObject().f = function()  { "use strict"; return this===undefined;};
+this.f = function()  { "use strict"; return this===undefined;};
 assert((new Function("return f();"))());
diff --git a/test/language/function-code/10.4.3-1-70-s.js b/test/language/function-code/10.4.3-1-70-s.js
index b989b66f1111a4eb4cdb460284732e4cee7f74b2..aaff9c685acbac712088bdd0d902191d9dbd4923 100644
--- a/test/language/function-code/10.4.3-1-70-s.js
+++ b/test/language/function-code/10.4.3-1-70-s.js
@@ -6,9 +6,8 @@ es5id: 10.4.3-1-70-s
 description: >
     checking 'this' (strict function declaration called by
     Function.prototype.apply(globalObject))
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() { "use strict"; return this;};
 
-assert.sameValue(f.apply(fnGlobalObject()), fnGlobalObject(), 'f.apply(fnGlobalObject())');
+assert.sameValue(f.apply(this), this, 'f.apply(this)');
diff --git a/test/language/function-code/10.4.3-1-70gs.js b/test/language/function-code/10.4.3-1-70gs.js
index 3bf0900e4a785b2e608bfc9a145db6985f5717c5..698657049868660ec9ce1b1da23feb26100e8a47 100644
--- a/test/language/function-code/10.4.3-1-70gs.js
+++ b/test/language/function-code/10.4.3-1-70gs.js
@@ -6,10 +6,9 @@ es5id: 10.4.3-1-70gs
 description: >
     checking 'this' from a global scope (strict function declaration called by
     Function.prototype.apply(globalObject))
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() { "use strict"; return this;};
-if (f.apply(fnGlobalObject()) !== fnGlobalObject()){
+if (f.apply(this) !== this){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-75-s.js b/test/language/function-code/10.4.3-1-75-s.js
index 255480d520e03eccd80f1464f8e52c04bdc47559..fedd20f1bd4b59728a168a31223afa2d128b22b9 100644
--- a/test/language/function-code/10.4.3-1-75-s.js
+++ b/test/language/function-code/10.4.3-1-75-s.js
@@ -6,9 +6,8 @@ es5id: 10.4.3-1-75-s
 description: >
     checking 'this' (strict function declaration called by
     Function.prototype.call(globalObject))
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() { "use strict"; return this;};
 
-assert.sameValue(f.call(fnGlobalObject()), fnGlobalObject(), 'f.call(fnGlobalObject())');
+assert.sameValue(f.call(this), this, 'f.call(this)');
diff --git a/test/language/function-code/10.4.3-1-75gs.js b/test/language/function-code/10.4.3-1-75gs.js
index b8938ffa784afa4dd80e5cf436c5eb45aa2719c4..e2262cb84db46d396af232d42eae78facc408e45 100644
--- a/test/language/function-code/10.4.3-1-75gs.js
+++ b/test/language/function-code/10.4.3-1-75gs.js
@@ -6,10 +6,9 @@ es5id: 10.4.3-1-75gs
 description: >
     checking 'this' from a global scope (strict function declaration called by
     Function.prototype.call(globalObject))
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() { "use strict"; return this;};
-if (f.call(fnGlobalObject()) !== fnGlobalObject()){
+if (f.call(this) !== this){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-80-s.js b/test/language/function-code/10.4.3-1-80-s.js
index 9d1335707ba2e01599e17fa35a82f569220f5c9f..d313b3865cf9c9b2144deb0b12008b42573a9392 100644
--- a/test/language/function-code/10.4.3-1-80-s.js
+++ b/test/language/function-code/10.4.3-1-80-s.js
@@ -7,9 +7,8 @@ description: >
     Strict Mode - checking 'this' (strict function declaration called
     by Function.prototype.bind(globalObject)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() { "use strict"; return this;};
 
-assert.sameValue(f.bind(fnGlobalObject())(), fnGlobalObject(), 'f.bind(fnGlobalObject())()');
+assert.sameValue(f.bind(this)(), this, 'f.bind(this)()');
diff --git a/test/language/function-code/10.4.3-1-80gs.js b/test/language/function-code/10.4.3-1-80gs.js
index 580a510c56687a0204ed70798c4b88904a4449e7..8433b880b000ef1e857498765b2439898b086744 100644
--- a/test/language/function-code/10.4.3-1-80gs.js
+++ b/test/language/function-code/10.4.3-1-80gs.js
@@ -7,10 +7,9 @@ description: >
     Strict - checking 'this' from a global scope (strict function
     declaration called by Function.prototype.bind(globalObject)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
 function f() { "use strict"; return this;};
-if (f.bind(fnGlobalObject())() !== fnGlobalObject()){
+if (f.bind(this)() !== this){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-83-s.js b/test/language/function-code/10.4.3-1-83-s.js
index d7d4583ae8cd73b6a0f54976f7fc5a1049f1e0dc..5365d9691ccf8351356a83dde98f2189011624eb 100644
--- a/test/language/function-code/10.4.3-1-83-s.js
+++ b/test/language/function-code/10.4.3-1-83-s.js
@@ -7,8 +7,7 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function constructor)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-fnGlobalObject().f = function() {return this!==undefined;};
+this.f = function() {return this!==undefined;};
 assert((function () {return Function("\"use strict\";return f();")();})());
diff --git a/test/language/function-code/10.4.3-1-84-s.js b/test/language/function-code/10.4.3-1-84-s.js
index 467a323e553ca4a3ee3e30d8ea0873290b37052d..ff5a7f9042acb9165fee402cee83f2f56f1991dc 100644
--- a/test/language/function-code/10.4.3-1-84-s.js
+++ b/test/language/function-code/10.4.3-1-84-s.js
@@ -7,8 +7,7 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict new'ed Function constructor)
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-fnGlobalObject().f = function()  { return this!==undefined;};
+this.f = function()  { return this!==undefined;};
 assert((function () {return new Function("\"use strict\";return f();")();})());
diff --git a/test/language/function-code/10.4.3-1-86-s.js b/test/language/function-code/10.4.3-1-86-s.js
index 824d5d36b26f14fd49ba57dfbd4fa3083b623a15..570923af04acc57725b51073fce6dd0016724383 100644
--- a/test/language/function-code/10.4.3-1-86-s.js
+++ b/test/language/function-code/10.4.3-1-86-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.apply(null))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.apply(null);})());
diff --git a/test/language/function-code/10.4.3-1-86gs.js b/test/language/function-code/10.4.3-1-86gs.js
index e909eec163c2894ceb51067b0c4cb08d75aa3abf..a3a3ecb659c8d450c3136690bde3a921833d733d 100644
--- a/test/language/function-code/10.4.3-1-86gs.js
+++ b/test/language/function-code/10.4.3-1-86gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.apply(null))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.apply(null);})())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-87-s.js b/test/language/function-code/10.4.3-1-87-s.js
index f4a1313fea68daf40bec815566eab2dac003967a..1c2f2f36f453a45d60e02a7863876808fac68394 100644
--- a/test/language/function-code/10.4.3-1-87-s.js
+++ b/test/language/function-code/10.4.3-1-87-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.apply(undefined))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject()};
+var global = this;
+function f() { return this===global};
 assert((function () {"use strict"; return f.apply(undefined);})());
diff --git a/test/language/function-code/10.4.3-1-87gs.js b/test/language/function-code/10.4.3-1-87gs.js
index 87dd0be56112138af13fc3f28042c2f4300bc5cc..123b4b560e7fa914991a06931d8676f788c32bbf 100644
--- a/test/language/function-code/10.4.3-1-87gs.js
+++ b/test/language/function-code/10.4.3-1-87gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.apply(undefined))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.apply(undefined);})())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-89-s.js b/test/language/function-code/10.4.3-1-89-s.js
index 799cb85f3f0d3003e48d8a226fc819b9f5d67838..0243234b8c7b29d50f45b31baca8bdf5ed4d7871 100644
--- a/test/language/function-code/10.4.3-1-89-s.js
+++ b/test/language/function-code/10.4.3-1-89-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.apply(globalObject))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { return this;};
-assert.sameValue((function () {"use strict"; return f.apply(fnGlobalObject()); })(), fnGlobalObject());
+assert.sameValue((function () {"use strict"; return f.apply(global); })(), global);
diff --git a/test/language/function-code/10.4.3-1-89gs.js b/test/language/function-code/10.4.3-1-89gs.js
index eb72e26fa48560e180f1bb8069c05112f38e4371..89d939a7441fab0a1114d5e3e0997b21dc519f95 100644
--- a/test/language/function-code/10.4.3-1-89gs.js
+++ b/test/language/function-code/10.4.3-1-89gs.js
@@ -8,10 +8,10 @@ description: >
     declaration called by strict
     Function.prototype.apply(globalObject))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
+var global = this;
 function f() { return this;};
-if ((function () {"use strict"; return f.apply(fnGlobalObject());})() !== fnGlobalObject()){
+if ((function () {"use strict"; return f.apply(global);})() !== global){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-90-s.js b/test/language/function-code/10.4.3-1-90-s.js
index 60005ca836a4e614cb227dd6de44dbbaea37aa61..af9997751ba07e0b1c05a6eaf50b7449a31d0a0a 100644
--- a/test/language/function-code/10.4.3-1-90-s.js
+++ b/test/language/function-code/10.4.3-1-90-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.call())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.call(); })());
diff --git a/test/language/function-code/10.4.3-1-90gs.js b/test/language/function-code/10.4.3-1-90gs.js
index 2abf2882e70d84931a733f5743df720c929d672d..6cbb0f609e95347561bddccfda44e1df5602e107 100644
--- a/test/language/function-code/10.4.3-1-90gs.js
+++ b/test/language/function-code/10.4.3-1-90gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.call())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.call();})())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-91-s.js b/test/language/function-code/10.4.3-1-91-s.js
index 3bb35a53cf1997a3806205a566b62edf8cf1c124..c64008d652bdf9f80d540f3cccc2ec87dacbf20b 100644
--- a/test/language/function-code/10.4.3-1-91-s.js
+++ b/test/language/function-code/10.4.3-1-91-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.call(null))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.call(null); })());
diff --git a/test/language/function-code/10.4.3-1-91gs.js b/test/language/function-code/10.4.3-1-91gs.js
index 6788d0c712b1fffd68fea84bb6afbed6aab1b303..c4d5d49913d1de90cffa7fd7a7819885bbd926f5 100644
--- a/test/language/function-code/10.4.3-1-91gs.js
+++ b/test/language/function-code/10.4.3-1-91gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.call(null))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.call(null); })())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-92-s.js b/test/language/function-code/10.4.3-1-92-s.js
index 0f0993db96a5fe72237351249a9dd6cf8906f8c8..7b65d705ea6ee826efed47c65fea80c0ede3b6b3 100644
--- a/test/language/function-code/10.4.3-1-92-s.js
+++ b/test/language/function-code/10.4.3-1-92-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.call(undefined))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.call(undefined);})());
diff --git a/test/language/function-code/10.4.3-1-92gs.js b/test/language/function-code/10.4.3-1-92gs.js
index d747d4cdaceef251e274cc8663b6a1dd731fd2ac..36d715c59c4885fe5634cd3cd008d3366b83e296 100644
--- a/test/language/function-code/10.4.3-1-92gs.js
+++ b/test/language/function-code/10.4.3-1-92gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.call(undefined))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.call(undefined);})())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-94-s.js b/test/language/function-code/10.4.3-1-94-s.js
index cee5d05553b15ea0a52c7cbd7f9b1f563c867ba0..1223208c5dfe36c238297d3688ab4c1cdf236526 100644
--- a/test/language/function-code/10.4.3-1-94-s.js
+++ b/test/language/function-code/10.4.3-1-94-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.call(globalObject))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
-assert((function () {"use strict"; return f.call(fnGlobalObject());})());
+var global = this;
+function f() { return this===global;};
+assert((function () {"use strict"; return f.call(global);})());
diff --git a/test/language/function-code/10.4.3-1-94gs.js b/test/language/function-code/10.4.3-1-94gs.js
index 56f4481d89b8268f7b904b3458423b339d0cf837..9e4be26e23f451601970e9a109af196d6e78da45 100644
--- a/test/language/function-code/10.4.3-1-94gs.js
+++ b/test/language/function-code/10.4.3-1-94gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.call(globalObject))
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
-if (! ((function () {"use strict"; return f.call(fnGlobalObject());})())){
+var global = this;
+function f() { return this===global;};
+if (! ((function () {"use strict"; return f.call(global);})())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-95-s.js b/test/language/function-code/10.4.3-1-95-s.js
index 4148fd9a4c14cbdbda128dcc920885f30baf6362..ad34354a84242bd9664e528d3f7c8f063e84302f 100644
--- a/test/language/function-code/10.4.3-1-95-s.js
+++ b/test/language/function-code/10.4.3-1-95-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.bind()())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.bind()(); })());
diff --git a/test/language/function-code/10.4.3-1-95gs.js b/test/language/function-code/10.4.3-1-95gs.js
index ac799f4d1dee108cfe55633e61abf081637bc99d..776a61221fe273d08918144cba6b1be7c5a4ad07 100644
--- a/test/language/function-code/10.4.3-1-95gs.js
+++ b/test/language/function-code/10.4.3-1-95gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.bind()())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.bind()(); })())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-96-s.js b/test/language/function-code/10.4.3-1-96-s.js
index 8e5a67919a396881613543ea1f853b8db6966afe..480f89cbab81650220e4159bef4f5ba48fcc1820 100644
--- a/test/language/function-code/10.4.3-1-96-s.js
+++ b/test/language/function-code/10.4.3-1-96-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.bind(null)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.bind(null)(); })());
diff --git a/test/language/function-code/10.4.3-1-96gs.js b/test/language/function-code/10.4.3-1-96gs.js
index f1709b7e4f23190b3a18c100900980de0126ebf7..1eb5d2d07d11567d33942112ac5819c7305f6f01 100644
--- a/test/language/function-code/10.4.3-1-96gs.js
+++ b/test/language/function-code/10.4.3-1-96gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.bind(null)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.bind(null)(); })())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-97-s.js b/test/language/function-code/10.4.3-1-97-s.js
index 1eded33e68764de1f2885c556de7ff136b0e44ca..b3babc836925ea1961d1a6c69438351a59c01a7e 100644
--- a/test/language/function-code/10.4.3-1-97-s.js
+++ b/test/language/function-code/10.4.3-1-97-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.bind(undefined)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 assert((function () {"use strict"; return f.bind(undefined)();})());
diff --git a/test/language/function-code/10.4.3-1-97gs.js b/test/language/function-code/10.4.3-1-97gs.js
index 800031a3672ce488287d2c5c6f663621c0d7b370..68b5a6195695e5da45624fd80f439d727ed966c0 100644
--- a/test/language/function-code/10.4.3-1-97gs.js
+++ b/test/language/function-code/10.4.3-1-97gs.js
@@ -7,10 +7,10 @@ description: >
     Strict - checking 'this' from a global scope (non-strict function
     declaration called by strict Function.prototype.bind(undefined)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
+var global = this;
+function f() { return this===global;};
 if (! ((function () {"use strict"; return f.bind(undefined)(); })())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/function-code/10.4.3-1-99-s.js b/test/language/function-code/10.4.3-1-99-s.js
index 081abf47b52fbebce8b89d9d505ad30ed390be3f..2327b4deea1d392a343ba17333fb25d7f610b8c2 100644
--- a/test/language/function-code/10.4.3-1-99-s.js
+++ b/test/language/function-code/10.4.3-1-99-s.js
@@ -7,8 +7,8 @@ description: >
     Strict Mode - checking 'this' (non-strict function declaration
     called by strict Function.prototype.bind(globalObject)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
-assert((function () {"use strict"; return f.bind(fnGlobalObject())();})());
+var global = this;
+function f() { return this===global;};
+assert((function () {"use strict"; return f.bind(global)();})());
diff --git a/test/language/function-code/10.4.3-1-99gs.js b/test/language/function-code/10.4.3-1-99gs.js
index 6cf1d8153ec92672bcb16439a2331b522df427fe..fb85ebbbda9810085359da0da7a16196d82f653f 100644
--- a/test/language/function-code/10.4.3-1-99gs.js
+++ b/test/language/function-code/10.4.3-1-99gs.js
@@ -8,10 +8,10 @@ description: >
     declaration called by strict
     Function.prototype.bind(globalObject)())
 flags: [noStrict]
-includes: [fnGlobalObject.js]
 ---*/
 
-function f() { return this===fnGlobalObject();};
-if (! ((function () {"use strict"; return f.bind(fnGlobalObject())();})())){
+var global = this;
+function f() { return this===global;};
+if (! ((function () {"use strict"; return f.bind(global)();})())){
     throw "'this' had incorrect value!";
 }
diff --git a/test/language/identifier-resolution/unscopables.js b/test/language/identifier-resolution/unscopables.js
index d9de44ff5e2a455a9321ed64830a5aa1de9750e4..c40621aa969859028f2b729d1bb46a413c56b921 100644
--- a/test/language/identifier-resolution/unscopables.js
+++ b/test/language/identifier-resolution/unscopables.js
@@ -3,7 +3,6 @@
 
 /*---
 es6id: 8.1.1.4.1
-includes: [fnGlobalObject.js]
 description: >
     `Symbol.unscopables` is not referenced when finding bindings in global scope
 info: >
@@ -17,7 +16,7 @@ features: [Symbol.unscopables]
 ---*/
 
 var x = 86;
-fnGlobalObject()[Symbol.unscopables] = {
+this[Symbol.unscopables] = {
   x: true
 };
 assert.sameValue(x, 86);
diff --git a/test/language/statements/try/12.14-14.js b/test/language/statements/try/12.14-14.js
index 2921b62dfbc0b0f82e4a6a82c7019570e95d7151..cbf9e1226e6075b821198a9e46365c5fceb1e944 100644
--- a/test/language/statements/try/12.14-14.js
+++ b/test/language/statements/try/12.14-14.js
@@ -7,10 +7,10 @@ description: >
     Exception object is a function, when an exception parameter is
     called as a function in catch block, global object is passed as
     the this value
-includes: [fnGlobalObject.js]
 flags: [noStrict]
 ---*/
 
+var global = this;
 var result;
 
 (function() {
@@ -20,7 +20,7 @@ var result;
             };
         } catch (e) {
             e();
-            result = fnGlobalObject()._12_14_14_foo;
+            result = global._12_14_14_foo;
         }
 })();
 
diff --git a/test/language/statements/try/12.14-15.js b/test/language/statements/try/12.14-15.js
index fbbda820b0356cce177cec05bfd3e3fe5cd9f77c..47a0b84f1975bdf170024d65e85586a875bd8aff 100644
--- a/test/language/statements/try/12.14-15.js
+++ b/test/language/statements/try/12.14-15.js
@@ -7,10 +7,10 @@ description: >
     Exception object is a function which is a property of an object,
     when an exception parameter is called as a function in catch
     block, global object is passed as the this value
-includes: [fnGlobalObject.js]
 flags: [noStrict]
 ---*/
 
+var global = this;
 var result;
 
 (function() {
@@ -22,7 +22,7 @@ var result;
             throw obj.test;
         } catch (e) {
             e();
-            result = fnGlobalObject()._12_14_15_foo;
+            result = global._12_14_15_foo;
         }
 })();
 
diff --git a/test/language/statements/try/12.14-16.js b/test/language/statements/try/12.14-16.js
index 24656a0b04dadcfac254daa136d29f20d79b57d8..bfb6c2269cf80cf7ba5434177e1ca9f08d96c846 100644
--- a/test/language/statements/try/12.14-16.js
+++ b/test/language/statements/try/12.14-16.js
@@ -7,10 +7,10 @@ description: >
     Exception object is a function which update in catch block, when
     an exception parameter is called as a function in catch block,
     global object is passed as the this value
-includes: [fnGlobalObject.js]
 flags: [noStrict]
 ---*/
 
+var global = this;
 var result;
 
 (function() {
@@ -25,7 +25,7 @@ var result;
             };
             e = obj.test;
             e();
-            result = fnGlobalObject()._12_14_16_foo;
+            result = global._12_14_16_foo;
         }
 })();