Use 'write!(out.front, ...)' to write to the front matter
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 88a0734..ae90047 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -17,6 +17,10 @@
     let mut out_file = OutFile::new(namespace.clone(), header);
     let out = &mut out_file;
 
+    if header {
+        writeln!(out.front, "#pragma once");
+    }
+
     out.include.extend(opt.include);
     for api in apis {
         if let Api::Include(include) = api {
@@ -110,17 +114,9 @@
         write_generic_instantiations(out, types);
     }
 
-    // We collected necessary includes lazily while generating the above. Now
-    // put it all together.
-    let mut full_file = OutFile::new(namespace.clone(), header);
-    let full = &mut full_file;
-    if header {
-        writeln!(full, "#pragma once");
-    }
-    write!(full, "{}", out.include);
-    full.next_section();
-    full.extend(out);
-    full_file
+    write!(out.front, "{}", out.include);
+
+    out_file
 }
 
 fn write_includes(out: &mut OutFile, types: &Types) {