diff --git a/cc/cc.go b/cc/cc.go
index 3c517ac..0e34c2f 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -148,18 +148,6 @@
 	ModuleContextIntf
 }
 
-type CustomizerFlagsContext interface {
-	BaseModuleContext
-	AppendCflags(...string)
-	AppendLdflags(...string)
-	AppendAsflags(...string)
-}
-
-type Customizer interface {
-	Flags(CustomizerFlagsContext)
-	Properties() []interface{}
-}
-
 type feature interface {
 	begin(ctx BaseModuleContext)
 	deps(ctx BaseModuleContext, deps Deps) Deps
@@ -235,13 +223,12 @@
 	multilib android.Multilib
 
 	// delegates, initialize before calling Init
-	Customizer Customizer
-	features   []feature
-	compiler   compiler
-	linker     linker
-	installer  installer
-	stl        *stl
-	sanitize   *sanitize
+	features  []feature
+	compiler  compiler
+	linker    linker
+	installer installer
+	stl       *stl
+	sanitize  *sanitize
 
 	androidMkSharedLibDeps []string
 
@@ -254,9 +241,6 @@
 
 func (c *Module) Init() (blueprint.Module, []interface{}) {
 	props := []interface{}{&c.Properties, &c.unused}
-	if c.Customizer != nil {
-		props = append(props, c.Customizer.Properties()...)
-	}
 	if c.compiler != nil {
 		props = append(props, c.compiler.compilerProps()...)
 	}
@@ -307,21 +291,6 @@
 	ctx BaseModuleContext
 }
 
-func (ctx *moduleContextImpl) AppendCflags(flags ...string) {
-	CheckBadCompilerFlags(ctx.ctx, "", flags)
-	ctx.mod.compiler.appendCflags(flags)
-}
-
-func (ctx *moduleContextImpl) AppendAsflags(flags ...string) {
-	CheckBadCompilerFlags(ctx.ctx, "", flags)
-	ctx.mod.compiler.appendAsflags(flags)
-}
-
-func (ctx *moduleContextImpl) AppendLdflags(flags ...string) {
-	CheckBadLinkerFlags(ctx.ctx, "", flags)
-	ctx.mod.linker.appendLdflags(flags)
-}
-
 func (ctx *moduleContextImpl) clang() bool {
 	return ctx.mod.clang(ctx.ctx)
 }
@@ -396,10 +365,6 @@
 	}
 	ctx.ctx = ctx
 
-	if c.Customizer != nil {
-		c.Customizer.Flags(ctx)
-	}
-
 	flags := Flags{
 		Toolchain: c.toolchain(ctx),
 		Clang:     c.clang(ctx),
