diff --git a/Android.bp b/Android.bp
index 10e6a2e..e9597f4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -55,7 +55,6 @@
         "android/namespace.go",
         "android/neverallow.go",
         "android/onceper.go",
-        "android/override_module.go",
         "android/package_ctx.go",
         "android/paths.go",
         "android/prebuilt.go",
diff --git a/android/config.go b/android/config.go
index 33986f7..24be10a 100644
--- a/android/config.go
+++ b/android/config.go
@@ -895,30 +895,16 @@
 }
 
 func (c *deviceConfig) OverrideManifestPackageNameFor(name string) (manifestName string, overridden bool) {
-	if newManifestName, overridden := c.manifestPackageNameOverrides().Load(name); overridden {
-		return newManifestName.(string), true
-	}
 	return findOverrideValue(c.config.productVariables.ManifestPackageNameOverrides, name,
 		"invalid override rule %q in PRODUCT_MANIFEST_PACKAGE_NAME_OVERRIDES should be <module_name>:<manifest_name>")
 }
 
 func (c *deviceConfig) OverrideCertificateFor(name string) (certificatePath string, overridden bool) {
-	if newCert, overridden := c.certificateOverrides().Load(name); overridden {
-		return newCert.(string), true
-	}
-	newCert, overridden := findOverrideValue(c.config.productVariables.CertificateOverrides, name,
+	return findOverrideValue(c.config.productVariables.CertificateOverrides, name,
 		"invalid override rule %q in PRODUCT_CERTIFICATE_OVERRIDES should be <module_name>:<certificate_module_name>")
-	if overridden {
-		// PRODUCT_CERTIFICATE_OVERRIDES only supports cert modules.
-		newCert = ":" + newCert
-	}
-	return newCert, overridden
 }
 
 func (c *deviceConfig) OverridePackageNameFor(name string) string {
-	if newName, overridden := c.moduleNameOverrides().Load(name); overridden {
-		return newName.(string)
-	}
 	newName, overridden := findOverrideValue(
 		c.config.productVariables.PackageNameOverrides,
 		name,
diff --git a/android/override_module.go b/android/override_module.go
deleted file mode 100644
index 9fe5f21..0000000
--- a/android/override_module.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package android
-
-import (
-	"github.com/google/blueprint/proptools"
-	"sync"
-)
-
-func init() {
-	RegisterModuleType("override_module", OverrideModuleFactory)
-}
-
-type OverrideModule struct {
-	ModuleBase
-	properties OverrideModuleProperties
-}
-
-type OverrideModuleProperties struct {
-	// base module to override
-	Base *string
-
-	// file path or module name (in the form ":module") of a certificate to override with
-	Certificate *string
-
-	// manifest package name to override with
-	Manifest_package_name *string
-}
-
-// TODO(jungjw): Work with the mainline team to see if we can deprecate all PRODUCT_*_OVERRIDES vars
-// and hand over overriding values directly to base module code.
-func processOverrides(ctx LoadHookContext, p *OverrideModuleProperties) {
-	base := proptools.String(p.Base)
-	if base == "" {
-		ctx.PropertyErrorf("base", "base module name must be provided")
-	}
-
-	config := ctx.DeviceConfig()
-	if other, loaded := config.moduleNameOverrides().LoadOrStore(base, ctx.ModuleName()); loaded {
-		ctx.ModuleErrorf("multiple overriding modules for %q, the other: %q", base, other.(string))
-	}
-
-	if p.Certificate != nil {
-		config.certificateOverrides().Store(base, *p.Certificate)
-	}
-
-	if p.Manifest_package_name != nil {
-		config.manifestPackageNameOverrides().Store(base, *p.Manifest_package_name)
-	}
-}
-
-func (i *OverrideModule) DepsMutator(ctx BottomUpMutatorContext) {
-	base := *i.properties.Base
-	// Right now, we add a dependency only to check the base module exists, and so are not using a tag here.
-	// TODO(jungjw): Add a tag and check the base module type once we finalize supported base module types.
-	ctx.AddDependency(ctx.Module(), nil, base)
-}
-
-func (i *OverrideModule) GenerateAndroidBuildActions(ctx ModuleContext) {
-	// All the overrides happen in the base module.
-	// TODO(jungjw): Check the base module type.
-}
-
-// override_module overrides an existing module with the specified properties.
-//
-// Currently, only android_app is officially supported.
-func OverrideModuleFactory() Module {
-	m := &OverrideModule{}
-	AddLoadHook(m, func(ctx LoadHookContext) {
-		processOverrides(ctx, &m.properties)
-	})
-	m.AddProperties(&m.properties)
-	InitAndroidModule(m)
-	return m
-}
-
-var moduleNameOverridesKey = NewOnceKey("moduleNameOverrides")
-
-func (c *deviceConfig) moduleNameOverrides() *sync.Map {
-	return c.Once(moduleNameOverridesKey, func() interface{} {
-		return &sync.Map{}
-	}).(*sync.Map)
-}
-
-var certificateOverridesKey = NewOnceKey("certificateOverrides")
-
-func (c *deviceConfig) certificateOverrides() *sync.Map {
-	return c.Once(certificateOverridesKey, func() interface{} {
-		return &sync.Map{}
-	}).(*sync.Map)
-}
-
-var manifestPackageNameOverridesKey = NewOnceKey("manifestPackageNameOverrides")
-
-func (c *deviceConfig) manifestPackageNameOverrides() *sync.Map {
-	return c.Once(manifestPackageNameOverridesKey, func() interface{} {
-		return &sync.Map{}
-	}).(*sync.Map)
-}
diff --git a/apex/apex.go b/apex/apex.go
index 5d0c52a..9ab5187 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -534,7 +534,7 @@
 func (a *apexBundle) getCertString(ctx android.BaseContext) string {
 	certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(ctx.ModuleName())
 	if overridden {
-		return certificate
+		return ":" + certificate
 	}
 	return String(a.properties.Certificate)
 }
diff --git a/java/app.go b/java/app.go
index 08b2d91..c08aefd 100644
--- a/java/app.go
+++ b/java/app.go
@@ -392,7 +392,7 @@
 func (a *AndroidApp) getCertString(ctx android.BaseContext) string {
 	certificate, overridden := ctx.DeviceConfig().OverrideCertificateFor(ctx.ModuleName())
 	if overridden {
-		return certificate
+		return ":" + certificate
 	}
 	return String(a.appProperties.Certificate)
 }
diff --git a/java/app_test.go b/java/app_test.go
index 313844f..317c752 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -747,57 +747,3 @@
 		})
 	}
 }
-
-func TestOverrideModule(t *testing.T) {
-	ctx := testJava(t, `
-		android_app {
-			name: "foo",
-			srcs: ["a.java"],
-		}
-
-		override_module {
-			name: "bar",
-			base: "foo",
-			certificate: ":new_certificate",
-			manifest_package_name: "org.dandroid.bp",
-		}
-
-		android_app_certificate {
-			name: "new_certificate",
-	    certificate: "cert/new_cert",
-		}
-		`)
-
-	// The base module still contains all the final outputs after overrides.
-	foo := ctx.ModuleForTests("foo", "android_common")
-
-	// Check the final apk name
-	outputs := foo.AllOutputs()
-	e := buildDir + "/target/product/test_device/system/app/bar/bar.apk"
-	found := false
-	for _, o := range outputs {
-		if o == e {
-			found = true
-			break
-		}
-	}
-	if !found {
-		t.Errorf("Can't find %q in output files.\nAll outputs:%v", e, outputs)
-	}
-
-	// Check the certificate paths
-	signapk := foo.Output("foo.apk")
-	signFlags := signapk.Args["certificates"]
-	e = "cert/new_cert.x509.pem cert/new_cert.pk8"
-	if e != signFlags {
-		t.Errorf("Incorrect signing flags, expected: %q, got: %q", e, signFlags)
-	}
-
-	// Check the manifest package name
-	res := foo.Output("package-res.apk")
-	aapt2Flags := res.Args["flags"]
-	e = "--rename-manifest-package org.dandroid.bp"
-	if !strings.Contains(aapt2Flags, e) {
-		t.Errorf("package renaming flag, %q is missing in aapt2 link flags, %q", e, aapt2Flags)
-	}
-}
diff --git a/java/java_test.go b/java/java_test.go
index bbcc9ed..8d3efcb 100644
--- a/java/java_test.go
+++ b/java/java_test.go
@@ -81,13 +81,11 @@
 	ctx.RegisterModuleType("droiddoc_host", android.ModuleFactoryAdaptor(DroiddocHostFactory))
 	ctx.RegisterModuleType("droiddoc_template", android.ModuleFactoryAdaptor(ExportedDroiddocDirFactory))
 	ctx.RegisterModuleType("java_sdk_library", android.ModuleFactoryAdaptor(SdkLibraryFactory))
-	ctx.RegisterModuleType("override_module", android.ModuleFactoryAdaptor(android.OverrideModuleFactory))
 	ctx.RegisterModuleType("prebuilt_apis", android.ModuleFactoryAdaptor(PrebuiltApisFactory))
 	ctx.PreArchMutators(android.RegisterPrebuiltsPreArchMutators)
 	ctx.PreArchMutators(android.RegisterPrebuiltsPostDepsMutators)
 	ctx.PreArchMutators(android.RegisterDefaultsPreArchMutators)
 	ctx.PreArchMutators(func(ctx android.RegisterMutatorsContext) {
-		ctx.TopDown("load_hooks", android.LoadHookMutator).Parallel()
 		ctx.TopDown("prebuilt_apis", PrebuiltApisMutator).Parallel()
 		ctx.TopDown("java_sdk_library", SdkLibraryMutator).Parallel()
 	})
