diff --git a/test/annexB/Date/prototype/getYear/B.2.4.js b/test/annexB/built-ins/Date/prototype/getYear/B.2.4.js similarity index 100% rename from test/annexB/Date/prototype/getYear/B.2.4.js rename to test/annexB/built-ins/Date/prototype/getYear/B.2.4.js diff --git a/test/annexB/Date/prototype/getYear/B.2.4.propertyCheck.js b/test/annexB/built-ins/Date/prototype/getYear/B.2.4.propertyCheck.js similarity index 100% rename from test/annexB/Date/prototype/getYear/B.2.4.propertyCheck.js rename to test/annexB/built-ins/Date/prototype/getYear/B.2.4.propertyCheck.js diff --git a/test/annexB/Date/prototype/getYear/length.js b/test/annexB/built-ins/Date/prototype/getYear/length.js similarity index 100% rename from test/annexB/Date/prototype/getYear/length.js rename to test/annexB/built-ins/Date/prototype/getYear/length.js diff --git a/test/annexB/Date/prototype/getYear/name.js b/test/annexB/built-ins/Date/prototype/getYear/name.js similarity index 100% rename from test/annexB/Date/prototype/getYear/name.js rename to test/annexB/built-ins/Date/prototype/getYear/name.js diff --git a/test/annexB/Date/prototype/setYear/B.2.5.js b/test/annexB/built-ins/Date/prototype/setYear/B.2.5.js similarity index 100% rename from test/annexB/Date/prototype/setYear/B.2.5.js rename to test/annexB/built-ins/Date/prototype/setYear/B.2.5.js diff --git a/test/annexB/Date/prototype/setYear/B.2.5.propertyCheck.js b/test/annexB/built-ins/Date/prototype/setYear/B.2.5.propertyCheck.js similarity index 100% rename from test/annexB/Date/prototype/setYear/B.2.5.propertyCheck.js rename to test/annexB/built-ins/Date/prototype/setYear/B.2.5.propertyCheck.js diff --git a/test/annexB/Date/prototype/setYear/length.js b/test/annexB/built-ins/Date/prototype/setYear/length.js similarity index 100% rename from test/annexB/Date/prototype/setYear/length.js rename to test/annexB/built-ins/Date/prototype/setYear/length.js diff --git a/test/annexB/Date/prototype/setYear/name.js b/test/annexB/built-ins/Date/prototype/setYear/name.js similarity index 100% rename from test/annexB/Date/prototype/setYear/name.js rename to test/annexB/built-ins/Date/prototype/setYear/name.js diff --git a/test/annexB/Date/prototype/toGMTString/B.2.6.js b/test/annexB/built-ins/Date/prototype/toGMTString/B.2.6.js similarity index 100% rename from test/annexB/Date/prototype/toGMTString/B.2.6.js rename to test/annexB/built-ins/Date/prototype/toGMTString/B.2.6.js diff --git a/test/annexB/Date/prototype/toGMTString/B.2.6.propertyCheck.js b/test/annexB/built-ins/Date/prototype/toGMTString/B.2.6.propertyCheck.js similarity index 100% rename from test/annexB/Date/prototype/toGMTString/B.2.6.propertyCheck.js rename to test/annexB/built-ins/Date/prototype/toGMTString/B.2.6.propertyCheck.js diff --git a/test/annexB/Date/prototype/toGMTString/length.js b/test/annexB/built-ins/Date/prototype/toGMTString/length.js similarity index 100% rename from test/annexB/Date/prototype/toGMTString/length.js rename to test/annexB/built-ins/Date/prototype/toGMTString/length.js diff --git a/test/annexB/Date/prototype/toGMTString/name.js b/test/annexB/built-ins/Date/prototype/toGMTString/name.js similarity index 100% rename from test/annexB/Date/prototype/toGMTString/name.js rename to test/annexB/built-ins/Date/prototype/toGMTString/name.js diff --git a/test/annexB/Object/prototype/__proto__/B.2.2.1.1.js b/test/annexB/built-ins/Object/prototype/__proto__/B.2.2.1.1.js similarity index 100% rename from test/annexB/Object/prototype/__proto__/B.2.2.1.1.js rename to test/annexB/built-ins/Object/prototype/__proto__/B.2.2.1.1.js diff --git a/test/annexB/Object/prototype/__proto__/B.2.2.1.2.js b/test/annexB/built-ins/Object/prototype/__proto__/B.2.2.1.2.js similarity index 100% rename from test/annexB/Object/prototype/__proto__/B.2.2.1.2.js rename to test/annexB/built-ins/Object/prototype/__proto__/B.2.2.1.2.js diff --git a/test/annexB/RegExp/RegExp-control-escape-russian-letter.js b/test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js similarity index 100% rename from test/annexB/RegExp/RegExp-control-escape-russian-letter.js rename to test/annexB/built-ins/RegExp/RegExp-control-escape-russian-letter.js diff --git a/test/annexB/RegExp/RegExp-decimal-escape-class-range.js b/test/annexB/built-ins/RegExp/RegExp-decimal-escape-class-range.js similarity index 100% rename from test/annexB/RegExp/RegExp-decimal-escape-class-range.js rename to test/annexB/built-ins/RegExp/RegExp-decimal-escape-class-range.js diff --git a/test/annexB/RegExp/RegExp-decimal-escape-not-capturing.js b/test/annexB/built-ins/RegExp/RegExp-decimal-escape-not-capturing.js similarity index 100% rename from test/annexB/RegExp/RegExp-decimal-escape-not-capturing.js rename to test/annexB/built-ins/RegExp/RegExp-decimal-escape-not-capturing.js diff --git a/test/annexB/RegExp/RegExp-leading-escape-BMP.js b/test/annexB/built-ins/RegExp/RegExp-leading-escape-BMP.js similarity index 100% rename from test/annexB/RegExp/RegExp-leading-escape-BMP.js rename to test/annexB/built-ins/RegExp/RegExp-leading-escape-BMP.js diff --git a/test/annexB/RegExp/RegExp-leading-escape.js b/test/annexB/built-ins/RegExp/RegExp-leading-escape.js similarity index 100% rename from test/annexB/RegExp/RegExp-leading-escape.js rename to test/annexB/built-ins/RegExp/RegExp-leading-escape.js diff --git a/test/annexB/RegExp/RegExp-trailing-escape-BMP.js b/test/annexB/built-ins/RegExp/RegExp-trailing-escape-BMP.js similarity index 100% rename from test/annexB/RegExp/RegExp-trailing-escape-BMP.js rename to test/annexB/built-ins/RegExp/RegExp-trailing-escape-BMP.js diff --git a/test/annexB/RegExp/RegExp-trailing-escape.js b/test/annexB/built-ins/RegExp/RegExp-trailing-escape.js similarity index 100% rename from test/annexB/RegExp/RegExp-trailing-escape.js rename to test/annexB/built-ins/RegExp/RegExp-trailing-escape.js diff --git a/test/annexB/RegExp/prototype/compile/B.RegExp.prototype.compile.js b/test/annexB/built-ins/RegExp/prototype/compile/B.RegExp.prototype.compile.js similarity index 100% rename from test/annexB/RegExp/prototype/compile/B.RegExp.prototype.compile.js rename to test/annexB/built-ins/RegExp/prototype/compile/B.RegExp.prototype.compile.js diff --git a/test/annexB/RegExp/prototype/compile/length.js b/test/annexB/built-ins/RegExp/prototype/compile/length.js similarity index 100% rename from test/annexB/RegExp/prototype/compile/length.js rename to test/annexB/built-ins/RegExp/prototype/compile/length.js diff --git a/test/annexB/RegExp/prototype/compile/name.js b/test/annexB/built-ins/RegExp/prototype/compile/name.js similarity index 100% rename from test/annexB/RegExp/prototype/compile/name.js rename to test/annexB/built-ins/RegExp/prototype/compile/name.js diff --git a/test/annexB/String/prototype/anchor/B.2.3.2.js b/test/annexB/built-ins/String/prototype/anchor/B.2.3.2.js similarity index 100% rename from test/annexB/String/prototype/anchor/B.2.3.2.js rename to test/annexB/built-ins/String/prototype/anchor/B.2.3.2.js diff --git a/test/annexB/String/prototype/anchor/length.js b/test/annexB/built-ins/String/prototype/anchor/length.js similarity index 100% rename from test/annexB/String/prototype/anchor/length.js rename to test/annexB/built-ins/String/prototype/anchor/length.js diff --git a/test/annexB/String/prototype/anchor/name.js b/test/annexB/built-ins/String/prototype/anchor/name.js similarity index 100% rename from test/annexB/String/prototype/anchor/name.js rename to test/annexB/built-ins/String/prototype/anchor/name.js diff --git a/test/annexB/String/prototype/big/B.2.3.3.js b/test/annexB/built-ins/String/prototype/big/B.2.3.3.js similarity index 100% rename from test/annexB/String/prototype/big/B.2.3.3.js rename to test/annexB/built-ins/String/prototype/big/B.2.3.3.js diff --git a/test/annexB/String/prototype/big/length.js b/test/annexB/built-ins/String/prototype/big/length.js similarity index 100% rename from test/annexB/String/prototype/big/length.js rename to test/annexB/built-ins/String/prototype/big/length.js diff --git a/test/annexB/String/prototype/big/name.js b/test/annexB/built-ins/String/prototype/big/name.js similarity index 100% rename from test/annexB/String/prototype/big/name.js rename to test/annexB/built-ins/String/prototype/big/name.js diff --git a/test/annexB/String/prototype/blink/B.2.3.4.js b/test/annexB/built-ins/String/prototype/blink/B.2.3.4.js similarity index 100% rename from test/annexB/String/prototype/blink/B.2.3.4.js rename to test/annexB/built-ins/String/prototype/blink/B.2.3.4.js diff --git a/test/annexB/String/prototype/blink/length.js b/test/annexB/built-ins/String/prototype/blink/length.js similarity index 100% rename from test/annexB/String/prototype/blink/length.js rename to test/annexB/built-ins/String/prototype/blink/length.js diff --git a/test/annexB/String/prototype/blink/name.js b/test/annexB/built-ins/String/prototype/blink/name.js similarity index 100% rename from test/annexB/String/prototype/blink/name.js rename to test/annexB/built-ins/String/prototype/blink/name.js diff --git a/test/annexB/String/prototype/bold/B.2.3.5.js b/test/annexB/built-ins/String/prototype/bold/B.2.3.5.js similarity index 100% rename from test/annexB/String/prototype/bold/B.2.3.5.js rename to test/annexB/built-ins/String/prototype/bold/B.2.3.5.js diff --git a/test/annexB/String/prototype/bold/length.js b/test/annexB/built-ins/String/prototype/bold/length.js similarity index 100% rename from test/annexB/String/prototype/bold/length.js rename to test/annexB/built-ins/String/prototype/bold/length.js diff --git a/test/annexB/String/prototype/bold/name.js b/test/annexB/built-ins/String/prototype/bold/name.js similarity index 100% rename from test/annexB/String/prototype/bold/name.js rename to test/annexB/built-ins/String/prototype/bold/name.js diff --git a/test/annexB/String/prototype/fixed/B.2.3.6.js b/test/annexB/built-ins/String/prototype/fixed/B.2.3.6.js similarity index 100% rename from test/annexB/String/prototype/fixed/B.2.3.6.js rename to test/annexB/built-ins/String/prototype/fixed/B.2.3.6.js diff --git a/test/annexB/String/prototype/fixed/length.js b/test/annexB/built-ins/String/prototype/fixed/length.js similarity index 100% rename from test/annexB/String/prototype/fixed/length.js rename to test/annexB/built-ins/String/prototype/fixed/length.js diff --git a/test/annexB/String/prototype/fixed/name.js b/test/annexB/built-ins/String/prototype/fixed/name.js similarity index 100% rename from test/annexB/String/prototype/fixed/name.js rename to test/annexB/built-ins/String/prototype/fixed/name.js diff --git a/test/annexB/String/prototype/fontcolor/B.2.3.7.js b/test/annexB/built-ins/String/prototype/fontcolor/B.2.3.7.js similarity index 100% rename from test/annexB/String/prototype/fontcolor/B.2.3.7.js rename to test/annexB/built-ins/String/prototype/fontcolor/B.2.3.7.js diff --git a/test/annexB/String/prototype/fontcolor/length.js b/test/annexB/built-ins/String/prototype/fontcolor/length.js similarity index 100% rename from test/annexB/String/prototype/fontcolor/length.js rename to test/annexB/built-ins/String/prototype/fontcolor/length.js diff --git a/test/annexB/String/prototype/fontcolor/name.js b/test/annexB/built-ins/String/prototype/fontcolor/name.js similarity index 100% rename from test/annexB/String/prototype/fontcolor/name.js rename to test/annexB/built-ins/String/prototype/fontcolor/name.js diff --git a/test/annexB/String/prototype/fontsize/B.2.3.8.js b/test/annexB/built-ins/String/prototype/fontsize/B.2.3.8.js similarity index 100% rename from test/annexB/String/prototype/fontsize/B.2.3.8.js rename to test/annexB/built-ins/String/prototype/fontsize/B.2.3.8.js diff --git a/test/annexB/String/prototype/fontsize/length.js b/test/annexB/built-ins/String/prototype/fontsize/length.js similarity index 100% rename from test/annexB/String/prototype/fontsize/length.js rename to test/annexB/built-ins/String/prototype/fontsize/length.js diff --git a/test/annexB/String/prototype/fontsize/name.js b/test/annexB/built-ins/String/prototype/fontsize/name.js similarity index 100% rename from test/annexB/String/prototype/fontsize/name.js rename to test/annexB/built-ins/String/prototype/fontsize/name.js diff --git a/test/annexB/String/prototype/italics/B.2.3.9.js b/test/annexB/built-ins/String/prototype/italics/B.2.3.9.js similarity index 100% rename from test/annexB/String/prototype/italics/B.2.3.9.js rename to test/annexB/built-ins/String/prototype/italics/B.2.3.9.js diff --git a/test/annexB/String/prototype/italics/length.js b/test/annexB/built-ins/String/prototype/italics/length.js similarity index 100% rename from test/annexB/String/prototype/italics/length.js rename to test/annexB/built-ins/String/prototype/italics/length.js diff --git a/test/annexB/String/prototype/italics/name.js b/test/annexB/built-ins/String/prototype/italics/name.js similarity index 100% rename from test/annexB/String/prototype/italics/name.js rename to test/annexB/built-ins/String/prototype/italics/name.js diff --git a/test/annexB/String/prototype/link/B.2.3.10.js b/test/annexB/built-ins/String/prototype/link/B.2.3.10.js similarity index 100% rename from test/annexB/String/prototype/link/B.2.3.10.js rename to test/annexB/built-ins/String/prototype/link/B.2.3.10.js diff --git a/test/annexB/String/prototype/link/length.js b/test/annexB/built-ins/String/prototype/link/length.js similarity index 100% rename from test/annexB/String/prototype/link/length.js rename to test/annexB/built-ins/String/prototype/link/length.js diff --git a/test/annexB/String/prototype/link/name.js b/test/annexB/built-ins/String/prototype/link/name.js similarity index 100% rename from test/annexB/String/prototype/link/name.js rename to test/annexB/built-ins/String/prototype/link/name.js diff --git a/test/annexB/String/prototype/small/B.2.3.11.js b/test/annexB/built-ins/String/prototype/small/B.2.3.11.js similarity index 100% rename from test/annexB/String/prototype/small/B.2.3.11.js rename to test/annexB/built-ins/String/prototype/small/B.2.3.11.js diff --git a/test/annexB/String/prototype/small/length.js b/test/annexB/built-ins/String/prototype/small/length.js similarity index 100% rename from test/annexB/String/prototype/small/length.js rename to test/annexB/built-ins/String/prototype/small/length.js diff --git a/test/annexB/String/prototype/small/name.js b/test/annexB/built-ins/String/prototype/small/name.js similarity index 100% rename from test/annexB/String/prototype/small/name.js rename to test/annexB/built-ins/String/prototype/small/name.js diff --git a/test/annexB/String/prototype/strike/B.2.3.12.js b/test/annexB/built-ins/String/prototype/strike/B.2.3.12.js similarity index 100% rename from test/annexB/String/prototype/strike/B.2.3.12.js rename to test/annexB/built-ins/String/prototype/strike/B.2.3.12.js diff --git a/test/annexB/String/prototype/strike/length.js b/test/annexB/built-ins/String/prototype/strike/length.js similarity index 100% rename from test/annexB/String/prototype/strike/length.js rename to test/annexB/built-ins/String/prototype/strike/length.js diff --git a/test/annexB/String/prototype/strike/name.js b/test/annexB/built-ins/String/prototype/strike/name.js similarity index 100% rename from test/annexB/String/prototype/strike/name.js rename to test/annexB/built-ins/String/prototype/strike/name.js diff --git a/test/annexB/String/prototype/sub/B.2.3.13.js b/test/annexB/built-ins/String/prototype/sub/B.2.3.13.js similarity index 100% rename from test/annexB/String/prototype/sub/B.2.3.13.js rename to test/annexB/built-ins/String/prototype/sub/B.2.3.13.js diff --git a/test/annexB/String/prototype/sub/length.js b/test/annexB/built-ins/String/prototype/sub/length.js similarity index 100% rename from test/annexB/String/prototype/sub/length.js rename to test/annexB/built-ins/String/prototype/sub/length.js diff --git a/test/annexB/String/prototype/sub/name.js b/test/annexB/built-ins/String/prototype/sub/name.js similarity index 100% rename from test/annexB/String/prototype/sub/name.js rename to test/annexB/built-ins/String/prototype/sub/name.js diff --git a/test/annexB/String/prototype/substr/B.2.3.js b/test/annexB/built-ins/String/prototype/substr/B.2.3.js similarity index 100% rename from test/annexB/String/prototype/substr/B.2.3.js rename to test/annexB/built-ins/String/prototype/substr/B.2.3.js diff --git a/test/annexB/String/prototype/substr/length.js b/test/annexB/built-ins/String/prototype/substr/length.js similarity index 100% rename from test/annexB/String/prototype/substr/length.js rename to test/annexB/built-ins/String/prototype/substr/length.js diff --git a/test/annexB/String/prototype/substr/name.js b/test/annexB/built-ins/String/prototype/substr/name.js similarity index 100% rename from test/annexB/String/prototype/substr/name.js rename to test/annexB/built-ins/String/prototype/substr/name.js diff --git a/test/annexB/String/prototype/sup/B.2.3.14.js b/test/annexB/built-ins/String/prototype/sup/B.2.3.14.js similarity index 100% rename from test/annexB/String/prototype/sup/B.2.3.14.js rename to test/annexB/built-ins/String/prototype/sup/B.2.3.14.js diff --git a/test/annexB/String/prototype/sup/length.js b/test/annexB/built-ins/String/prototype/sup/length.js similarity index 100% rename from test/annexB/String/prototype/sup/length.js rename to test/annexB/built-ins/String/prototype/sup/length.js diff --git a/test/annexB/String/prototype/sup/name.js b/test/annexB/built-ins/String/prototype/sup/name.js similarity index 100% rename from test/annexB/String/prototype/sup/name.js rename to test/annexB/built-ins/String/prototype/sup/name.js diff --git a/test/annexB/global/escape/B.2.1.js b/test/annexB/built-ins/escape/B.2.1.js similarity index 100% rename from test/annexB/global/escape/B.2.1.js rename to test/annexB/built-ins/escape/B.2.1.js diff --git a/test/annexB/global/escape/B.2.1.propertyCheck.js b/test/annexB/built-ins/escape/B.2.1.propertyCheck.js similarity index 100% rename from test/annexB/global/escape/B.2.1.propertyCheck.js rename to test/annexB/built-ins/escape/B.2.1.propertyCheck.js diff --git a/test/annexB/global/escape/length.js b/test/annexB/built-ins/escape/length.js similarity index 100% rename from test/annexB/global/escape/length.js rename to test/annexB/built-ins/escape/length.js diff --git a/test/annexB/global/escape/name.js b/test/annexB/built-ins/escape/name.js similarity index 100% rename from test/annexB/global/escape/name.js rename to test/annexB/built-ins/escape/name.js diff --git a/test/annexB/global/unescape/B.2.2.js b/test/annexB/built-ins/unescape/B.2.2.js similarity index 100% rename from test/annexB/global/unescape/B.2.2.js rename to test/annexB/built-ins/unescape/B.2.2.js diff --git a/test/annexB/global/unescape/B.2.2.propertyCheck.js b/test/annexB/built-ins/unescape/B.2.2.propertyCheck.js similarity index 100% rename from test/annexB/global/unescape/B.2.2.propertyCheck.js rename to test/annexB/built-ins/unescape/B.2.2.propertyCheck.js diff --git a/test/annexB/global/unescape/length.js b/test/annexB/built-ins/unescape/length.js similarity index 100% rename from test/annexB/global/unescape/length.js rename to test/annexB/built-ins/unescape/length.js diff --git a/test/annexB/global/unescape/name.js b/test/annexB/built-ins/unescape/name.js similarity index 100% rename from test/annexB/global/unescape/name.js rename to test/annexB/built-ins/unescape/name.js diff --git a/test/annexB/__proto__/fn-name.js b/test/annexB/language/expressions/object/__proto__-fn-name.js similarity index 100% rename from test/annexB/__proto__/fn-name.js rename to test/annexB/language/expressions/object/__proto__-fn-name.js diff --git a/test/annexB/__proto__/basic.js b/test/annexB/language/expressions/object/__proto__.js similarity index 100% rename from test/annexB/__proto__/basic.js rename to test/annexB/language/expressions/object/__proto__.js diff --git a/test/annexB/templates/legacy-octal-escape-sequence-non-strict.js b/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-non-strict.js similarity index 100% rename from test/annexB/templates/legacy-octal-escape-sequence-non-strict.js rename to test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-non-strict.js diff --git a/test/annexB/templates/legacy-octal-escape-sequence-strict.js b/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js similarity index 100% rename from test/annexB/templates/legacy-octal-escape-sequence-strict.js rename to test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js diff --git a/test/annexB/labelled-function-declaration.js b/test/annexB/language/statements/labeled/function-declaration.js similarity index 100% rename from test/annexB/labelled-function-declaration.js rename to test/annexB/language/statements/labeled/function-declaration.js diff --git a/test/annexB/catch-redeclared-var-statement-captured.js b/test/annexB/language/statements/try/catch-redeclared-var-statement-captured.js similarity index 100% rename from test/annexB/catch-redeclared-var-statement-captured.js rename to test/annexB/language/statements/try/catch-redeclared-var-statement-captured.js diff --git a/test/annexB/catch-redeclared-var-statement.js b/test/annexB/language/statements/try/catch-redeclared-var-statement.js similarity index 100% rename from test/annexB/catch-redeclared-var-statement.js rename to test/annexB/language/statements/try/catch-redeclared-var-statement.js