         
         output.print(
             "/// \(identifier.name.typeName)",
-            "struct \(identifier.name.typeName){").indent()
-        for field in generate(expression: expression) {
+            "struct \(identifier.name.typeName) : Decodable {").indent()
+        for field in generate(expression: expression).consolidate() {
             output.print(
                 "let \(field.name) : \(field.type)"
             )

    var typeName : String {
        return prefix(1).uppercased() + dropFirst()
    }
}

    public static func generate(for scope: STLRScope) throws -> [TextFile] {
        let output = TextFile("IR.swift")
        
        
        
        // Generate all of the structural elements required for rules
        output.print(
            "import Foundation",
            "",
            "/// Intermediate Representation of the grammar",
            "struct IR {").indent()
        for rule in scope.rules {
