diff --git a/src/builtins/base.tq b/src/builtins/base.tq
index edb0510..b5e04d2 100644
--- a/src/builtins/base.tq
+++ b/src/builtins/base.tq
@@ -16,7 +16,6 @@
 #include 'src/objects/js-regexp-string-iterator.h'
 #include 'src/objects/module.h'
 #include 'src/objects/stack-frame-info.h'
-#include 'src/objects/template-objects.h'
 #include 'src/builtins/builtins-regexp-gen.h'
 
 type void;
@@ -366,11 +365,6 @@
   callee: Object;
 }
 
-@hasSameInstanceTypeAsParent
-@noVerifier
-extern class JSStrictArgumentsObject extends JSArgumentsObjectWithLength {
-}
-
 extern class JSArrayIterator extends JSObject {
   iterated_object: JSReceiver;
   next_index: Number;
@@ -434,36 +428,7 @@
 
 type NoSharedNameSentinel extends Smi;
 
-type ModuleInfo extends FixedArray;
-type ObjectHashTable extends FixedArray;
-
-extern class Module extends Struct {
-  code: SharedFunctionInfo | JSFunction |
-      JSGeneratorObject | ModuleInfo;
-  exports: ObjectHashTable;
-  regular_exports: FixedArray;
-  regular_imports: FixedArray;
-  hash: Smi;
-  status: Smi;
-  module_namespace: JSModuleNamespace | Undefined;
-  requested_modules: FixedArray;
-  dfs_index: Smi;
-  dfs_ancestor_index: Smi;
-  exception: Object;
-  script: Script;
-  @noVerifier import_meta: Hole | JSObject;
-}
-
-extern class JSModuleNamespace extends JSObject {
-  module: Module;
-  to_string_tag_field: Object;
-}
-
-@hasSameInstanceTypeAsParent
-@noVerifier
-extern class TemplateList extends FixedArray {
-}
-
+type JSModuleNamespace extends JSObject;
 type WeakArrayList extends HeapObject;
 
 @abstract
diff --git a/src/objects-debug.cc b/src/objects-debug.cc
index 32a2e12..1847242 100644
--- a/src/objects-debug.cc
+++ b/src/objects-debug.cc
@@ -1571,7 +1571,10 @@
   CHECK_IMPLIES(is_zero(), !sign());  // There is no -0n.
 }
 
-USE_TORQUE_VERIFIER(JSModuleNamespace)
+void JSModuleNamespace::JSModuleNamespaceVerify(Isolate* isolate) {
+  CHECK(IsJSModuleNamespace());
+  VerifyPointer(isolate, module());
+}
 
 void ModuleInfoEntry::ModuleInfoEntryVerify(Isolate* isolate) {
   TorqueGeneratedClassVerifiers::ModuleInfoEntryVerify(*this, isolate);
@@ -1581,7 +1584,17 @@
 }
 
 void Module::ModuleVerify(Isolate* isolate) {
-  TorqueGeneratedClassVerifiers::ModuleVerify(*this, isolate);
+  CHECK(IsModule());
+
+  VerifyPointer(isolate, code());
+  VerifyPointer(isolate, exports());
+  VerifyPointer(isolate, module_namespace());
+  VerifyPointer(isolate, requested_modules());
+  VerifyPointer(isolate, script());
+  VerifyPointer(isolate, import_meta());
+  VerifyPointer(isolate, exception());
+  VerifySmiField(kHashOffset);
+  VerifySmiField(kStatusOffset);
 
   CHECK((status() >= kEvaluating && code()->IsModuleInfo()) ||
         (status() == kInstantiated && code()->IsJSGeneratorObject()) ||
@@ -1865,10 +1878,25 @@
 USE_TORQUE_VERIFIER(InterpreterData)
 
 #ifdef V8_INTL_SUPPORT
+void JSV8BreakIterator::JSV8BreakIteratorVerify(Isolate* isolate) {
+  JSObjectVerify(isolate);
+  VerifyObjectField(isolate, kLocaleOffset);
+  VerifyObjectField(isolate, kTypeOffset);
+  VerifyObjectField(isolate, kBreakIteratorOffset);
+  VerifyObjectField(isolate, kUnicodeStringOffset);
+  VerifyObjectField(isolate, kBoundAdoptTextOffset);
+  VerifyObjectField(isolate, kBoundFirstOffset);
+  VerifyObjectField(isolate, kBoundNextOffset);
+  VerifyObjectField(isolate, kBoundCurrentOffset);
+  VerifyObjectField(isolate, kBoundBreakTypeOffset);
+}
 
-USE_TORQUE_VERIFIER(JSV8BreakIterator)
-
-USE_TORQUE_VERIFIER(JSCollator)
+void JSCollator::JSCollatorVerify(Isolate* isolate) {
+  CHECK(IsJSCollator());
+  JSObjectVerify(isolate);
+  VerifyObjectField(isolate, kICUCollatorOffset);
+  VerifyObjectField(isolate, kBoundCompareOffset);
+}
 
 void JSDateTimeFormat::JSDateTimeFormatVerify(Isolate* isolate) {
   TorqueGeneratedClassVerifiers::JSDateTimeFormatVerify(*this, isolate);
diff --git a/src/objects/intl-objects.tq b/src/objects/intl-objects.tq
index 0d24e48..67d8537 100644
--- a/src/objects/intl-objects.tq
+++ b/src/objects/intl-objects.tq
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include 'src/objects/js-break-iterator.h'
-#include 'src/objects/js-collator.h'
 #include 'src/objects/js-number-format.h'
 #include 'src/objects/js-objects.h'
 #include 'src/objects/js-plural-rules.h'
@@ -64,20 +62,3 @@
   unicode_string: Foreign;      // Managed<icu::UnicodeString>
   flags: Smi;
 }
-
-extern class JSV8BreakIterator extends JSObject {
-  locale: String;
-  break_iterator: Foreign;  // Managed<icu::BreakIterator>;
-  unicode_string: Foreign;  // Managed<icu::UnicodeString>;
-  bound_adopt_text: Undefined | JSFunction;
-  bound_first: Undefined | JSFunction;
-  bound_next: Undefined | JSFunction;
-  bound_current: Undefined | JSFunction;
-  bound_break_type: Undefined | JSFunction;
-  break_iterator_type: Smi;
-}
-
-extern class JSCollator extends JSObject {
-  icu_collator: Foreign;  // Managed<icu::Collator>
-  bound_compare: Undefined | JSFunction;
-}
diff --git a/src/objects/js-break-iterator-inl.h b/src/objects/js-break-iterator-inl.h
index f98be59..7c22be2 100644
--- a/src/objects/js-break-iterator-inl.h
+++ b/src/objects/js-break-iterator-inl.h
@@ -22,12 +22,11 @@
 
 inline void JSV8BreakIterator::set_type(Type type) {
   DCHECK_GT(JSV8BreakIterator::Type::COUNT, type);
-  WRITE_FIELD(*this, kBreakIteratorTypeOffset,
-              Smi::FromInt(static_cast<int>(type)));
+  WRITE_FIELD(*this, kTypeOffset, Smi::FromInt(static_cast<int>(type)));
 }
 
 inline JSV8BreakIterator::Type JSV8BreakIterator::type() const {
-  Object value = READ_FIELD(*this, kBreakIteratorTypeOffset);
+  Object value = READ_FIELD(*this, kTypeOffset);
   return static_cast<JSV8BreakIterator::Type>(Smi::ToInt(value));
 }
 
diff --git a/src/objects/js-break-iterator.h b/src/objects/js-break-iterator.h
index 35832e3..3eff347 100644
--- a/src/objects/js-break-iterator.h
+++ b/src/objects/js-break-iterator.h
@@ -15,7 +15,6 @@
 #include "src/objects.h"
 #include "src/objects/intl-objects.h"
 #include "src/objects/managed.h"
-#include "torque-generated/field-offsets-tq.h"
 
 // Has to be the last include (doesn't have include guards):
 #include "src/objects/object-macros.h"
@@ -71,8 +70,22 @@
   DECL_ACCESSORS(bound_break_type, Object)
 
 // Layout description.
-  DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize,
-                                TORQUE_GENERATED_JSV8BREAK_ITERATOR_FIELDS)
+#define BREAK_ITERATOR_FIELDS(V)        \
+  /* Pointer fields. */                 \
+  V(kLocaleOffset, kTaggedSize)         \
+  V(kTypeOffset, kTaggedSize)           \
+  V(kBreakIteratorOffset, kTaggedSize)  \
+  V(kUnicodeStringOffset, kTaggedSize)  \
+  V(kBoundAdoptTextOffset, kTaggedSize) \
+  V(kBoundFirstOffset, kTaggedSize)     \
+  V(kBoundNextOffset, kTaggedSize)      \
+  V(kBoundCurrentOffset, kTaggedSize)   \
+  V(kBoundBreakTypeOffset, kTaggedSize) \
+  /* Total Size */                      \
+  V(kSize, 0)
+
+  DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, BREAK_ITERATOR_FIELDS)
+#undef BREAK_ITERATOR_FIELDS
 
   OBJECT_CONSTRUCTORS(JSV8BreakIterator, JSObject);
 };
diff --git a/src/objects/js-collator-inl.h b/src/objects/js-collator-inl.h
index 6d277e72..b6fa239 100644
--- a/src/objects/js-collator-inl.h
+++ b/src/objects/js-collator-inl.h
@@ -20,7 +20,7 @@
 
 OBJECT_CONSTRUCTORS_IMPL(JSCollator, JSObject)
 
-ACCESSORS(JSCollator, icu_collator, Managed<icu::Collator>, kIcuCollatorOffset)
+ACCESSORS(JSCollator, icu_collator, Managed<icu::Collator>, kICUCollatorOffset)
 ACCESSORS(JSCollator, bound_compare, Object, kBoundCompareOffset)
 
 CAST_ACCESSOR(JSCollator)
diff --git a/src/objects/js-collator.h b/src/objects/js-collator.h
index ff4054c..e5d223a 100644
--- a/src/objects/js-collator.h
+++ b/src/objects/js-collator.h
@@ -47,8 +47,14 @@
   DECL_VERIFIER(JSCollator)
 
 // Layout description.
-  DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize,
-                                TORQUE_GENERATED_JSCOLLATOR_FIELDS)
+#define JS_COLLATOR_FIELDS(V)         \
+  V(kICUCollatorOffset, kTaggedSize)  \
+  V(kBoundCompareOffset, kTaggedSize) \
+  /* Total size. */                   \
+  V(kSize, 0)
+
+  DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, JS_COLLATOR_FIELDS)
+#undef JS_COLLATOR_FIELDS
 
   DECL_ACCESSORS(icu_collator, Managed<icu::Collator>)
   DECL_ACCESSORS(bound_compare, Object)
diff --git a/src/objects/module.h b/src/objects/module.h
index b80d4ab..5137d92 100644
--- a/src/objects/module.h
+++ b/src/objects/module.h
@@ -9,7 +9,6 @@
 #include "src/objects/fixed-array.h"
 #include "src/objects/js-objects.h"
 #include "src/objects/struct.h"
-#include "torque-generated/field-offsets-tq.h"
 
 // Has to be the last include (doesn't have include guards):
 #include "src/objects/object-macros.h"
@@ -127,8 +126,25 @@
                                                       Handle<Module> module);
 
 // Layout description.
-  DEFINE_FIELD_OFFSET_CONSTANTS(Struct::kHeaderSize,
-                                TORQUE_GENERATED_MODULE_FIELDS)
+#define MODULE_FIELDS(V)                  \
+  V(kCodeOffset, kTaggedSize)             \
+  V(kExportsOffset, kTaggedSize)          \
+  V(kRegularExportsOffset, kTaggedSize)   \
+  V(kRegularImportsOffset, kTaggedSize)   \
+  V(kHashOffset, kTaggedSize)             \
+  V(kModuleNamespaceOffset, kTaggedSize)  \
+  V(kRequestedModulesOffset, kTaggedSize) \
+  V(kStatusOffset, kTaggedSize)           \
+  V(kDfsIndexOffset, kTaggedSize)         \
+  V(kDfsAncestorIndexOffset, kTaggedSize) \
+  V(kExceptionOffset, kTaggedSize)        \
+  V(kScriptOffset, kTaggedSize)           \
+  V(kImportMetaOffset, kTaggedSize)       \
+  /* Total size. */                       \
+  V(kSize, 0)
+
+  DEFINE_FIELD_OFFSET_CONSTANTS(Struct::kHeaderSize, MODULE_FIELDS)
+#undef MODULE_FIELDS
 
  private:
   friend class Factory;
@@ -229,14 +245,23 @@
       LookupIterator* it);
 
   // In-object fields.
-  static constexpr int kToStringTagFieldIndex = 0;
-  static constexpr int kInObjectFieldCount = 1;
+  enum {
+    kToStringTagFieldIndex,
+    kInObjectFieldCount,
+  };
 
-  // Layout description.
+// Layout description.
+#define JS_MODULE_NAMESPACE_FIELDS(V)                        \
+  V(kModuleOffset, kTaggedSize)                              \
+  /* Header size. */                                         \
+  V(kHeaderSize, 0)                                          \
+  V(kInObjectFieldsOffset, kTaggedSize* kInObjectFieldCount) \
+  /* Total size. */                                          \
+  V(kSize, 0)
+
   DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize,
-                                TORQUE_GENERATED_JSMODULE_NAMESPACE_FIELDS)
-
-  static const int kHeaderSize = kToStringTagFieldOffset;
+                                JS_MODULE_NAMESPACE_FIELDS)
+#undef JS_MODULE_NAMESPACE_FIELDS
 
   OBJECT_CONSTRUCTORS(JSModuleNamespace, JSObject);
 };
@@ -284,7 +309,6 @@
     kRegularExportExportNamesOffset,
     kRegularExportLength
   };
-
   OBJECT_CONSTRUCTORS(ModuleInfo, FixedArray);
 };
 
diff --git a/tools/torque/format-torque.py b/tools/torque/format-torque.py
index 1ef700a..25e7a74 100755
--- a/tools/torque/format-torque.py
+++ b/tools/torque/format-torque.py
@@ -88,8 +88,8 @@
 
   while True:
     old = output
-    output = re.sub(r'(\w+)\s{0,1}\|(\n{0,1}\s*)/\*\*/(\s*\w+)',
-        r'\1 |\2\3', output)
+    output = re.sub(r'(\w+)\s{0,1}\|\s{0,1}/\*\*/(\s*\w+)',
+        r'\1 |\2', output)
     if old == output:
       break;
 
