diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_callable-Proxy-1.js b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-Proxy-1.js
new file mode 100644
index 0000000000000000000000000000000000000000..a205bc2caaacababfcffa42519b773670cd8ec28
--- /dev/null
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-Proxy-1.js
@@ -0,0 +1,13 @@
+// Copyright (c) 2014 Matthew Meyers. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Array.prototype.find shouldn't throw a TypeError if
+    IsCallable(predicate) is true; Proxy is callable
+features: [Array#find, Proxy]
+---*/
+
+
+[].find(Proxy);
+
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_callable-Proxy-2.js b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-Proxy-2.js
new file mode 100644
index 0000000000000000000000000000000000000000..d6d49649d74f7e28e269294656fc0c9f07622dac
--- /dev/null
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-Proxy-2.js
@@ -0,0 +1,13 @@
+// Copyright (c) 2014 Matthew Meyers. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Array.prototype.find shouldn't throw a TypeError if
+    IsCallable(predicate) is true; a new Proxy object is callable
+features: [Array#find, Proxy]
+---*/
+
+
+[].find(new Proxy(function () {}, function () {}));
+
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_callable-arrowfunction.js b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-arrowfunction.js
new file mode 100644
index 0000000000000000000000000000000000000000..4f63feb5a9976beedaeedae0d5c48a7b362d95b3
--- /dev/null
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-arrowfunction.js
@@ -0,0 +1,13 @@
+// Copyright (c) 2014 Matthew Meyers. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Array.prototype.find shouldn't throw a TypeError if
+    IsCallable(predicate) is true; arrow functions are callable
+features: [Array#find, arrow-function]
+---*/
+
+
+[].find(x => x);
+
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_callable-forEach.js b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-forEach.js
new file mode 100644
index 0000000000000000000000000000000000000000..16ad7713cef8234c30d55edc8b61812a7c3950fd
--- /dev/null
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-forEach.js
@@ -0,0 +1,13 @@
+// Copyright (c) 2014 Matthew Meyers. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+    Array.prototype.find shouldn't throw a TypeError if
+    IsCallable(predicate) is true; Array#forEach is callable
+features: [Array#find]
+---*/
+
+
+[].find(Array.prototype.forEach);
+
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_callable-predicate.js b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-predicate.js
index debf13f88b162f58875c80b4e8e9c1e9f881744e..4b3b47eb8e53c89df25289833081a38441aa8659 100644
--- a/test/built-ins/Array/prototype/find/Array.prototype.find_callable-predicate.js
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_callable-predicate.js
@@ -4,29 +4,10 @@
 /*---
 description: >
     Array.prototype.find shouldn't throw a TypeError if
-    IsCallable(predicate) is true
-includes: [runTestCase.js]
+    IsCallable(predicate) is true; a function is callable
+features: [Array#find]
 ---*/
 
-var callableValues = [
-    function () {},
-    Array.prototype.forEach,
-    Proxy,
-    new Proxy(function () {}, function () {}),
-    x => x
-];
 
-function testcase() {
-    for (var i = 0, len = callableValues.length; i < len; i++) {
-        try {
-            [].find(callableValues[i]);
-        } catch (e) {
-            if (e instanceof TypeError) {
-                return false;
-            }
-        }
-    }
-    return true;
-}
+[].find(function () {});
 
-runTestCase(testcase);
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_this-global.js b/test/built-ins/Array/prototype/find/Array.prototype.find_this-global.js
new file mode 100644
index 0000000000000000000000000000000000000000..7e94715481c2e82f132da3e2bd00b3f8981ec41a
--- /dev/null
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_this-global.js
@@ -0,0 +1,15 @@
+// Copyright (c) 2014 Matthew Meyers. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: thisArg should be global object if not provided (not Strict mode)
+flags: [noStrict]
+includes: [fnGlobalObject.js]
+---*/
+
+
+[1].find(function () {
+	if (this !== fnGlobalObject()) {
+	  $ERROR('#1: this !== global object');
+	}
+});
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_this-is-object.js b/test/built-ins/Array/prototype/find/Array.prototype.find_this-is-object.js
index df99acc48dbcc59c5313d475f1c78e23e4136f28..d328a047357e31d192a03329a646a87cb4e50588 100644
--- a/test/built-ins/Array/prototype/find/Array.prototype.find_this-is-object.js
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_this-is-object.js
@@ -3,6 +3,7 @@
 
 /*---
 description: Array.prototype.find should convert thisArg into an object
+flags: [noStrict]
 ---*/
 
 var dataTypes = [
diff --git a/test/built-ins/Array/prototype/find/Array.prototype.find_this-undefined.js b/test/built-ins/Array/prototype/find/Array.prototype.find_this-undefined.js
index eede30e89aa2a75e95cda98c5cf546099903bfa9..2c3042a1b29b79ab33a7a4317ce25e2baac88029 100644
--- a/test/built-ins/Array/prototype/find/Array.prototype.find_this-undefined.js
+++ b/test/built-ins/Array/prototype/find/Array.prototype.find_this-undefined.js
@@ -2,13 +2,13 @@
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
-description: thisArg should be undefined if not provided
+description: thisArg should be undefined if not provided (Strict mode)
+flags: [onlyStrict]
 ---*/
 
-var globalThis = this;
 
 [1].find(function () {
-	if (this !== globalThis) {
-	  $ERROR('#1: this !== globalThis');
+	if (this !== undefined) {
+	  $ERROR('#1: this !== undefined');
 	}
 });