diff --git a/android/register.go b/android/register.go
index 10e14fe..19745fe 100644
--- a/android/register.go
+++ b/android/register.go
@@ -20,7 +20,7 @@
 
 type moduleType struct {
 	name    string
-	factory blueprint.ModuleFactory
+	factory ModuleFactory
 }
 
 var moduleTypes []moduleType
@@ -40,8 +40,6 @@
 	parallel        bool
 }
 
-var mutators []*mutator
-
 type ModuleFactory func() Module
 
 // ModuleFactoryAdaptor wraps a ModuleFactory into a blueprint.ModuleFactory by converting a Module
@@ -65,7 +63,7 @@
 }
 
 func RegisterModuleType(name string, factory ModuleFactory) {
-	moduleTypes = append(moduleTypes, moduleType{name, ModuleFactoryAdaptor(factory)})
+	moduleTypes = append(moduleTypes, moduleType{name, factory})
 }
 
 func RegisterSingletonType(name string, factory SingletonFactory) {
@@ -90,7 +88,7 @@
 	}
 
 	for _, t := range moduleTypes {
-		ctx.RegisterModuleType(t.name, t.factory)
+		ctx.RegisterModuleType(t.name, ModuleFactoryAdaptor(t.factory))
 	}
 
 	for _, t := range singletons {
@@ -105,3 +103,11 @@
 	// Register env last so that it can track all used environment variables
 	ctx.RegisterSingletonType("env", SingletonFactoryAdaptor(EnvSingleton))
 }
+
+func ModuleTypeFactories() map[string]ModuleFactory {
+	ret := make(map[string]ModuleFactory)
+	for _, t := range moduleTypes {
+		ret[t.name] = t.factory
+	}
+	return ret
+}
diff --git a/cmd/soong_build/main.go b/cmd/soong_build/main.go
index a4c6898..1f6002e 100644
--- a/cmd/soong_build/main.go
+++ b/cmd/soong_build/main.go
@@ -75,6 +75,10 @@
 	bootstrap.Main(ctx.Context, configuration, configuration.ConfigFileName, configuration.ProductVariablesFileName)
 
 	if docFile != "" {
-		writeDocs(ctx, docFile)
+		err := writeDocs(ctx, docFile)
+		if err != nil {
+			fmt.Fprintf(os.Stderr, "%s", err)
+			os.Exit(1)
+		}
 	}
 }
diff --git a/cmd/soong_build/writedocs.go b/cmd/soong_build/writedocs.go
index a6686c0..8f86b33 100644
--- a/cmd/soong_build/writedocs.go
+++ b/cmd/soong_build/writedocs.go
@@ -19,18 +19,33 @@
 	"bytes"
 	"html/template"
 	"io/ioutil"
+	"reflect"
+	"sort"
 
 	"github.com/google/blueprint/bootstrap"
+	"github.com/google/blueprint/bootstrap/bpdoc"
 )
 
 func writeDocs(ctx *android.Context, filename string) error {
-	moduleTypeList, err := bootstrap.ModuleTypeDocs(ctx.Context)
+	moduleTypeFactories := android.ModuleTypeFactories()
+	bpModuleTypeFactories := make(map[string]reflect.Value)
+	for moduleType, factory := range moduleTypeFactories {
+		bpModuleTypeFactories[moduleType] = reflect.ValueOf(factory)
+	}
+
+	packages, err := bootstrap.ModuleTypeDocs(ctx.Context, bpModuleTypeFactories)
 	if err != nil {
 		return err
 	}
 
 	buf := &bytes.Buffer{}
 
+	var moduleTypeList []*bpdoc.ModuleType
+	for _, pkg := range packages {
+		moduleTypeList = append(moduleTypeList, pkg.ModuleTypes...)
+	}
+	sort.Slice(moduleTypeList, func(i, j int) bool { return moduleTypeList[i].Name < moduleTypeList[j].Name })
+
 	unique := 0
 
 	tmpl, err := template.New("file").Funcs(map[string]interface{}{
