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