diff --git a/harness/assert.js b/harness/assert.js
index 0898bfd90ca7fd3c8fbcefca587ad964a7d46085..384b8e8f0e0df971145dd2f8b4a8da7228a86d4a 100644
--- a/harness/assert.js
+++ b/harness/assert.js
@@ -88,8 +88,8 @@ assert.throws = function (expectedErrorConstructor, func, message) {
 };
 
 assert.throws.early = function(err, code) {
-  let wrappedCode = `function wrapperFn() { ${code} }`;
+  let wrappedCode = 'function wrapperFn() { ' + code + ' }';
   let ieval = eval;
 
-  assert.throws(err, function() { Function(wrappedCode); }, `Function: ${code}`);
+  assert.throws(err, function() { Function(wrappedCode); }, 'Function: ' + code);
 };
diff --git a/harness/compareArray.js b/harness/compareArray.js
index 44b92ea029c1d3c365e70c6b0e976ca4810e0351..aaeaa48009753ad3ec39ae7b3a023a8a7497408f 100644
--- a/harness/compareArray.js
+++ b/harness/compareArray.js
@@ -20,5 +20,5 @@ function compareArray(a, b) {
 
 assert.compareArray = function(actual, expected, message) {
   assert(compareArray(actual, expected),
-         `Expected [${actual.join(", ")}] and [${expected.join(", ")}] to have the same contents. ${message}`);
+         'Expected [' + actual.join(', ') + '] and [' + expected.join(', ') + '] to have the same contents. ' + message);
 };
diff --git a/harness/features.yml b/harness/features.yml
index 34a3a0bfa9edb58c3dac7416c124dd7d6b511558..177bec32bd718abf2a66e62ad9359f45a2678b84 100644
--- a/harness/features.yml
+++ b/harness/features.yml
@@ -1,3 +1,3 @@
-propertyHelper.js: [template]
-typeCoercion.js: [Symbol.toPrimitive,BigInt]
+typeCoercion.js: [Symbol.toPrimitive, BigInt]
+testAtomics.js: [ArrayBuffer, Atomics, DataView, SharedArrayBuffer, arrow-function, let, for-of]
 testTypedArray.js: [TypedArray]
diff --git a/harness/propertyHelper.js b/harness/propertyHelper.js
index 9b528e8f55e127a869d32c99a4659984499afe4a..cc1359fe675d7829c290645548fbc0b64176c037 100644
--- a/harness/propertyHelper.js
+++ b/harness/propertyHelper.js
@@ -20,7 +20,7 @@ function verifyProperty(obj, name, desc, options) {
     assert.sameValue(
       originalDesc,
       undefined,
-      `obj['${nameStr}'] descriptor should be undefined`
+      "obj['" + nameStr + "'] descriptor should be undefined"
     );
 
     // desc and originalDesc are both undefined, problem solved;
@@ -29,47 +29,47 @@ function verifyProperty(obj, name, desc, options) {
 
   assert(
     Object.prototype.hasOwnProperty.call(obj, name),
-    `obj should have an own property ${nameStr}`
+    "obj should have an own property " + nameStr
   );
 
   assert.notSameValue(
     desc,
     null,
-    `The desc argument should be an object or undefined, null`
+    "The desc argument should be an object or undefined, null"
   );
 
   assert.sameValue(
     typeof desc,
     "object",
-    `The desc argument should be an object or undefined, ${String(desc)}`
+    "The desc argument should be an object or undefined, " + String(desc)
   );
 
   var failures = [];
 
   if (Object.prototype.hasOwnProperty.call(desc, 'value')) {
     if (desc.value !== originalDesc.value) {
-      failures.push(`descriptor value should be ${desc.value}`);
+      failures.push("descriptor value should be " + desc.value);
     }
   }
 
   if (Object.prototype.hasOwnProperty.call(desc, 'enumerable')) {
     if (desc.enumerable !== originalDesc.enumerable ||
         desc.enumerable !== isEnumerable(obj, name)) {
-      failures.push(`descriptor should ${desc.enumerable ? '' : 'not '}be enumerable`);
+      failures.push('descriptor should ' + (desc.enumerable ? '' : 'not ') + 'be enumerable');
     }
   }
 
   if (Object.prototype.hasOwnProperty.call(desc, 'writable')) {
     if (desc.writable !== originalDesc.writable ||
         desc.writable !== isWritable(obj, name)) {
-      failures.push(`descriptor should ${desc.writable ? '' : 'not '}be writable`);
+      failures.push('descriptor should ' + (desc.writable ? '' : 'not ') + 'be writable');
     }
   }
 
   if (Object.prototype.hasOwnProperty.call(desc, 'configurable')) {
     if (desc.configurable !== originalDesc.configurable ||
         desc.configurable !== isConfigurable(obj, name)) {
-      failures.push(`descriptor should ${desc.configurable ? '' : 'not '}be configurable`);
+      failures.push('descriptor should ' + (desc.configurable ? '' : 'not ') + 'be configurable');
     }
   }