diff --git a/gen/src/write.rs b/gen/src/write.rs
index 8a4133c..7753ebf 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -20,8 +20,8 @@
 
     let apis_by_namespace = NamespaceEntries::new(apis);
     write_namespace_forward_declarations(out, &apis_by_namespace);
-    write_namespace_data_structures(out, &apis_by_namespace);
-    write_namespace_functions(out, &apis_by_namespace);
+    write_data_structures(out, apis);
+    write_functions(out, apis);
 
     if !header {
         out.next_section();
@@ -54,12 +54,7 @@
     }
 }
 
-fn write_namespace_data_structures<'a>(
-    out: &mut OutFile<'a>,
-    ns_entries: &'a NamespaceEntries<'a>,
-) {
-    let apis = ns_entries.direct_content();
-
+fn write_data_structures<'a>(out: &mut OutFile<'a>, apis: &'a [Api]) {
     let mut methods_for_type = HashMap::new();
     for api in apis {
         if let Api::RustFunction(efn) = api {
@@ -106,15 +101,9 @@
             }
         }
     }
-
-    for (_, nested_ns_entries) in ns_entries.nested_content() {
-        write_namespace_data_structures(out, nested_ns_entries);
-    }
 }
 
-fn write_namespace_functions<'a>(out: &mut OutFile<'a>, ns_entries: &'a NamespaceEntries<'a>) {
-    let apis = ns_entries.direct_content();
-
+fn write_functions<'a>(out: &mut OutFile<'a>, apis: &'a [Api]) {
     if !out.header {
         for api in apis {
             match api {
@@ -131,10 +120,6 @@
             write_rust_function_shim(out, efn);
         }
     }
-
-    for (_, nested_ns_entries) in ns_entries.nested_content() {
-        write_namespace_functions(out, nested_ns_entries);
-    }
 }
 
 fn pick_includes_and_builtins(out: &mut OutFile) {
