diff --git a/android/arch.go b/android/arch.go
index 13fcb29..d6b2836 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -26,7 +26,7 @@
 
 func init() {
 	RegisterBottomUpMutator("defaults_deps", defaultsDepsMutator)
-	RegisterTopDownMutator("defaults", defaultsMutator)
+	RegisterBottomUpMutator("defaults", defaultsMutator)
 
 	RegisterBottomUpMutator("arch", ArchMutator)
 }
diff --git a/android/defaults.go b/android/defaults.go
index f9cf0cc..2c589b9 100644
--- a/android/defaults.go
+++ b/android/defaults.go
@@ -45,7 +45,7 @@
 type Defaultable interface {
 	defaults() *defaultsProperties
 	setProperties([]interface{})
-	applyDefaults(TopDownMutatorContext, Defaults)
+	applyDefaults(BottomUpMutatorContext, Defaults)
 }
 
 var _ Defaultable = (*DefaultableModule)(nil)
@@ -61,12 +61,13 @@
 }
 
 type DefaultsModule struct {
+	DefaultableModule
 	defaultProperties []interface{}
 }
 
 type Defaults interface {
+	Defaultable
 	isDefaults() bool
-	setProperties([]interface{})
 	properties() []interface{}
 }
 
@@ -75,22 +76,16 @@
 }
 
 func (d *DefaultsModule) properties() []interface{} {
-	return d.defaultProperties
-}
-
-func (d *DefaultsModule) setProperties(props []interface{}) {
-	d.defaultProperties = props
+	return d.defaultableProperties
 }
 
 func InitDefaultsModule(module Module, d Defaults, props ...interface{}) (blueprint.Module, []interface{}) {
-	d.setProperties(props)
-
-	return module, props
+	return InitDefaultableModule(module, d, props...)
 }
 
 var _ Defaults = (*DefaultsModule)(nil)
 
-func (defaultable *DefaultableModule) applyDefaults(ctx TopDownMutatorContext,
+func (defaultable *DefaultableModule) applyDefaults(ctx BottomUpMutatorContext,
 	defaults Defaults) {
 
 	for _, prop := range defaultable.defaultableProperties {
@@ -115,7 +110,7 @@
 	}
 }
 
-func defaultsMutator(ctx TopDownMutatorContext) {
+func defaultsMutator(ctx BottomUpMutatorContext) {
 	if defaultable, ok := ctx.Module().(Defaultable); ok {
 		for _, defaultsDep := range defaultable.defaults().Defaults {
 			ctx.VisitDirectDeps(func(m blueprint.Module) {
