diff --git a/cc/library.go b/cc/library.go
index bdd8e79..5ba1a97 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -95,31 +95,35 @@
 // Module factory for combined static + shared libraries, device by default but with possible host
 // support
 func libraryFactory() (blueprint.Module, []interface{}) {
-	module, _ := NewLibrary(android.HostAndDeviceSupported, true, true)
+	module, _ := NewLibrary(android.HostAndDeviceSupported)
 	return module.Init()
 }
 
 // Module factory for static libraries
 func libraryStaticFactory() (blueprint.Module, []interface{}) {
-	module, _ := NewLibrary(android.HostAndDeviceSupported, false, true)
+	module, library := NewLibrary(android.HostAndDeviceSupported)
+	library.BuildOnlyStatic()
 	return module.Init()
 }
 
 // Module factory for shared libraries
 func librarySharedFactory() (blueprint.Module, []interface{}) {
-	module, _ := NewLibrary(android.HostAndDeviceSupported, true, false)
+	module, library := NewLibrary(android.HostAndDeviceSupported)
+	library.BuildOnlyShared()
 	return module.Init()
 }
 
 // Module factory for host static libraries
 func libraryHostStaticFactory() (blueprint.Module, []interface{}) {
-	module, _ := NewLibrary(android.HostSupported, false, true)
+	module, library := NewLibrary(android.HostSupported)
+	library.BuildOnlyStatic()
 	return module.Init()
 }
 
 // Module factory for host shared libraries
 func libraryHostSharedFactory() (blueprint.Module, []interface{}) {
-	module, _ := NewLibrary(android.HostSupported, true, false)
+	module, library := NewLibrary(android.HostSupported)
+	library.BuildOnlyShared()
 	return module.Init()
 }
 
@@ -562,13 +566,21 @@
 	library.Properties.VariantIsStatic = static
 }
 
-func NewLibrary(hod android.HostOrDeviceSupported, shared, static bool) (*Module, *libraryDecorator) {
+func (library *libraryDecorator) BuildOnlyStatic() {
+	library.Properties.BuildShared = false
+}
+
+func (library *libraryDecorator) BuildOnlyShared() {
+	library.Properties.BuildStatic = false
+}
+
+func NewLibrary(hod android.HostOrDeviceSupported) (*Module, *libraryDecorator) {
 	module := newModule(hod, android.MultilibBoth)
 
 	library := &libraryDecorator{
 		Properties: LibraryProperties{
-			BuildShared: shared,
-			BuildStatic: static,
+			BuildShared: true,
+			BuildStatic: true,
 		},
 		baseCompiler:  NewBaseCompiler(),
 		baseLinker:    NewBaseLinker(),
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index f733515..0e42731 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -277,7 +277,8 @@
 }
 
 func newStubLibrary() (*Module, []interface{}) {
-	module, library := NewLibrary(android.DeviceSupported, true, false)
+	module, library := NewLibrary(android.DeviceSupported)
+	library.BuildOnlyShared()
 	module.stl = nil
 	module.sanitize = nil
 	library.StripProperties.Strip.None = true
diff --git a/cc/ndk_prebuilt.go b/cc/ndk_prebuilt.go
index 46b383b..63f8921 100644
--- a/cc/ndk_prebuilt.go
+++ b/cc/ndk_prebuilt.go
@@ -102,7 +102,8 @@
 }
 
 func ndkPrebuiltLibraryFactory() (blueprint.Module, []interface{}) {
-	module, library := NewLibrary(android.DeviceSupported, true, false)
+	module, library := NewLibrary(android.DeviceSupported)
+	library.BuildOnlyShared()
 	linker := &ndkPrebuiltLibraryLinker{
 		libraryDecorator: library,
 	}
@@ -132,7 +133,8 @@
 }
 
 func ndkPrebuiltSharedStlFactory() (blueprint.Module, []interface{}) {
-	module, library := NewLibrary(android.DeviceSupported, true, false)
+	module, library := NewLibrary(android.DeviceSupported)
+	library.BuildOnlyShared()
 	linker := &ndkPrebuiltStlLinker{
 		ndkPrebuiltLibraryLinker: ndkPrebuiltLibraryLinker{
 			libraryDecorator: library,
@@ -146,7 +148,8 @@
 }
 
 func ndkPrebuiltStaticStlFactory() (blueprint.Module, []interface{}) {
-	module, library := NewLibrary(android.DeviceSupported, false, true)
+	module, library := NewLibrary(android.DeviceSupported)
+	library.BuildOnlyStatic()
 	linker := &ndkPrebuiltStlLinker{
 		ndkPrebuiltLibraryLinker: ndkPrebuiltLibraryLinker{
 			libraryDecorator: library,
diff --git a/cc/prebuilt.go b/cc/prebuilt.go
index 0a54570..abe03b9 100644
--- a/cc/prebuilt.go
+++ b/cc/prebuilt.go
@@ -60,7 +60,7 @@
 }
 
 func prebuiltSharedLibraryFactory() (blueprint.Module, []interface{}) {
-	module, library := NewLibrary(android.HostAndDeviceSupported, true, true)
+	module, library := NewLibrary(android.HostAndDeviceSupported)
 	module.compiler = nil
 
 	prebuilt := &prebuiltLibraryLinker{
diff --git a/cc/test.go b/cc/test.go
index 9cc30c9..a2b827f 100644
--- a/cc/test.go
+++ b/cc/test.go
@@ -263,7 +263,7 @@
 }
 
 func NewTestLibrary(hod android.HostOrDeviceSupported) *Module {
-	module, library := NewLibrary(android.HostAndDeviceSupported, true, true)
+	module, library := NewLibrary(android.HostAndDeviceSupported)
 	library.baseInstaller = NewTestInstaller()
 	test := &testLibrary{
 		testDecorator: testDecorator{
diff --git a/cc/toolchain_library.go b/cc/toolchain_library.go
index 521553e..6ca9dc3 100644
--- a/cc/toolchain_library.go
+++ b/cc/toolchain_library.go
@@ -39,7 +39,8 @@
 }
 
 func toolchainLibraryFactory() (blueprint.Module, []interface{}) {
-	module, library := NewLibrary(android.HostAndDeviceSupported, false, true)
+	module, library := NewLibrary(android.HostAndDeviceSupported)
+	library.BuildOnlyStatic()
 	toolchainLibrary := &toolchainLibraryDecorator{
 		libraryDecorator: library,
 	}
