diff --git a/src/gen-vdl/v.io/v23/vom/internal/index.js b/src/gen-vdl/v.io/v23/vom/internal/index.js
new file mode 100644
index 0000000..9028ae1
--- /dev/null
+++ b/src/gen-vdl/v.io/v23/vom/internal/index.js
@@ -0,0 +1,97 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This file was auto-generated by the vanadium vdl tool.
+var vdl = require('../../../../../vdl');
+var canonicalize = require('../../../../../vdl/canonicalize');
+
+
+
+
+
+
+module.exports = {};
+
+
+
+// Types:
+var _typeAddressInfo = new vdl.Type();
+var _typeAgencyReport = new vdl.Type();
+var _typeCreditAgency = new vdl.Type();
+var _typeCreditReport = new vdl.Type();
+var _typeCustomer = new vdl.Type();
+var _typeEquifaxCreditReport = new vdl.Type();
+var _typeExperianCreditReport = new vdl.Type();
+var _typeExperianRating = new vdl.Type();
+var _typeTransUnionCreditReport = new vdl.Type();
+_typeAddressInfo.kind = vdl.kind.STRUCT;
+_typeAddressInfo.name = "v.io/v23/vom/internal.AddressInfo";
+_typeAddressInfo.fields = [{name: "Street", type: vdl.types.STRING}, {name: "City", type: vdl.types.STRING}, {name: "State", type: vdl.types.STRING}, {name: "Zip", type: vdl.types.STRING}];
+_typeAgencyReport.kind = vdl.kind.UNION;
+_typeAgencyReport.name = "v.io/v23/vom/internal.AgencyReport";
+_typeAgencyReport.fields = [{name: "EquifaxReport", type: _typeEquifaxCreditReport}, {name: "ExperianReport", type: _typeExperianCreditReport}, {name: "TransUnionReport", type: _typeTransUnionCreditReport}];
+_typeCreditAgency.kind = vdl.kind.ENUM;
+_typeCreditAgency.name = "v.io/v23/vom/internal.CreditAgency";
+_typeCreditAgency.labels = ["Equifax", "Experian", "TransUnion"];
+_typeCreditReport.kind = vdl.kind.STRUCT;
+_typeCreditReport.name = "v.io/v23/vom/internal.CreditReport";
+_typeCreditReport.fields = [{name: "Agency", type: _typeCreditAgency}, {name: "Report", type: _typeAgencyReport}];
+_typeCustomer.kind = vdl.kind.STRUCT;
+_typeCustomer.name = "v.io/v23/vom/internal.Customer";
+_typeCustomer.fields = [{name: "Name", type: vdl.types.STRING}, {name: "Id", type: vdl.types.INT64}, {name: "Active", type: vdl.types.BOOL}, {name: "Address", type: _typeAddressInfo}, {name: "Credit", type: _typeCreditReport}];
+_typeEquifaxCreditReport.kind = vdl.kind.STRUCT;
+_typeEquifaxCreditReport.name = "v.io/v23/vom/internal.EquifaxCreditReport";
+_typeEquifaxCreditReport.fields = [{name: "Rating", type: vdl.types.BYTE}];
+_typeExperianCreditReport.kind = vdl.kind.STRUCT;
+_typeExperianCreditReport.name = "v.io/v23/vom/internal.ExperianCreditReport";
+_typeExperianCreditReport.fields = [{name: "Rating", type: _typeExperianRating}];
+_typeExperianRating.kind = vdl.kind.ENUM;
+_typeExperianRating.name = "v.io/v23/vom/internal.ExperianRating";
+_typeExperianRating.labels = ["Good", "Bad"];
+_typeTransUnionCreditReport.kind = vdl.kind.STRUCT;
+_typeTransUnionCreditReport.name = "v.io/v23/vom/internal.TransUnionCreditReport";
+_typeTransUnionCreditReport.fields = [{name: "Rating", type: vdl.types.INT16}];
+_typeAddressInfo.freeze();
+_typeAgencyReport.freeze();
+_typeCreditAgency.freeze();
+_typeCreditReport.freeze();
+_typeCustomer.freeze();
+_typeEquifaxCreditReport.freeze();
+_typeExperianCreditReport.freeze();
+_typeExperianRating.freeze();
+_typeTransUnionCreditReport.freeze();
+module.exports.AddressInfo = (vdl.registry.lookupOrCreateConstructor(_typeAddressInfo));
+module.exports.AgencyReport = (vdl.registry.lookupOrCreateConstructor(_typeAgencyReport));
+module.exports.CreditAgency = {
+  EQUIFAX: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeCreditAgency))('Equifax', true), _typeCreditAgency),
+  EXPERIAN: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeCreditAgency))('Experian', true), _typeCreditAgency),
+  TRANS_UNION: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeCreditAgency))('TransUnion', true), _typeCreditAgency),
+};
+module.exports.CreditReport = (vdl.registry.lookupOrCreateConstructor(_typeCreditReport));
+module.exports.Customer = (vdl.registry.lookupOrCreateConstructor(_typeCustomer));
+module.exports.EquifaxCreditReport = (vdl.registry.lookupOrCreateConstructor(_typeEquifaxCreditReport));
+module.exports.ExperianCreditReport = (vdl.registry.lookupOrCreateConstructor(_typeExperianCreditReport));
+module.exports.ExperianRating = {
+  GOOD: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeExperianRating))('Good', true), _typeExperianRating),
+  BAD: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeExperianRating))('Bad', true), _typeExperianRating),
+};
+module.exports.TransUnionCreditReport = (vdl.registry.lookupOrCreateConstructor(_typeTransUnionCreditReport));
+
+
+
+
+// Consts:
+
+
+
+// Errors:
+
+
+
+// Services:
+
+   
+ 
+
+
