diff --git a/private/file_contexts b/private/file_contexts
index 4547b6a0d960d7e3dde654ef9c2b38887df96974..ccb441a74e556d5cd4ed24110d8ffb671fb788bd 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -228,19 +228,19 @@
 /system/bin/webview_zygote64     u:object_r:webview_zygote_exec:s0
 /system/fake-lib(64)?/libart.*   u:object_r:libart_file:s0
 /system/lib(64)?/libart.*        u:object_r:libart_file:s0
-/system/bin/hw/android\.hardware\.audio@2\.0-service          u:object_r:hal_audio_exec:s0
+/system/bin/hw/android\.hardware\.audio@2\.0-service          u:object_r:hal_audio_default_exec:s0
 /system/bin/hw/android\.hardware\.boot@1\.0-service           u:object_r:hal_boot_exec:s0
-/system/bin/hw/android\.hardware\.ir@1\.0-service           u:object_r:hal_ir_default_exec:s0
-/system/bin/hw/android\.hardware\.graphics\.allocator@2\.0-service   u:object_r:hal_graphics_allocator_exec:s0
-/system/bin/hw/android\.hardware\.graphics\.composer@2\.1-service    u:object_r:hal_graphics_composer_exec:s0
+/system/bin/hw/android\.hardware\.graphics\.allocator@2\.0-service   u:object_r:hal_graphics_allocator_default_exec:s0
+/system/bin/hw/android\.hardware\.graphics\.composer@2\.1-service    u:object_r:hal_graphics_composer_default_exec:s0
+/system/bin/hw/android\.hardware\.ir@1\.0-service             u:object_r:hal_ir_default_exec:s0
 /system/bin/hw/android\.hardware\.light@2\.0-service          u:object_r:hal_light_default_exec:s0
-/system/bin/hw/android\.hardware\.memtrack@1\.0-service       u:object_r:hal_memtrack_exec:s0
-/system/bin/hw/android\.hardware\.nfc@1\.0-service            u:object_r:hal_nfc_exec:s0
-/system/bin/hw/android\.hardware\.power@1\.0-service          u:object_r:hal_power_exec:s0
-/system/bin/hw/android\.hardware\.thermal@1\.0-service        u:object_r:hal_thermal_exec:s0
-/system/bin/hw/android\.hardware\.vibrator@1\.0-service       u:object_r:hal_vibrator_exec:s0
-/system/bin/hw/android\.hardware\.vr@1\.0-service             u:object_r:hal_vr_exec:s0
-/system/bin/hw/android\.hardware\.wifi@1\.0-service           u:object_r:hal_wifi_exec:s0
+/system/bin/hw/android\.hardware\.memtrack@1\.0-service       u:object_r:hal_memtrack_default_exec:s0
+/system/bin/hw/android\.hardware\.nfc@1\.0-service            u:object_r:hal_nfc_default_exec:s0
+/system/bin/hw/android\.hardware\.power@1\.0-service          u:object_r:hal_power_default_exec:s0
+/system/bin/hw/android\.hardware\.thermal@1\.0-service        u:object_r:hal_thermal_default_exec:s0
+/system/bin/hw/android\.hardware\.vibrator@1\.0-service       u:object_r:hal_vibrator_default_exec:s0
+/system/bin/hw/android\.hardware\.vr@1\.0-service             u:object_r:hal_vr_default_exec:s0
+/system/bin/hw/android\.hardware\.wifi@1\.0-service           u:object_r:hal_wifi_default_exec:s0
 
 #############################
 # Vendor files
diff --git a/private/hal_audio.te b/private/hal_audio.te
deleted file mode 100644
index 0a3c170df3e0e79682d166db508931bb77c32a8d..0000000000000000000000000000000000000000
--- a/private/hal_audio.te
+++ /dev/null
@@ -1,3 +0,0 @@
-# type_transition must be private policy the domain_trans rules could stay
-# public, but conceptually should go with this
-init_daemon_domain(hal_audio)
diff --git a/private/hal_audio_default.te b/private/hal_audio_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..bbbd419274b2a1489ad2a1044de54744cdd4f095
--- /dev/null
+++ b/private/hal_audio_default.te
@@ -0,0 +1,4 @@
+type hal_audio_default, hal_audio, domain;
+type hal_audio_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_audio_default)
diff --git a/private/hal_graphics_allocator.te b/private/hal_graphics_allocator.te
deleted file mode 100644
index d00cf68b470bd7afe81c2a1cd289d16e23bf56a6..0000000000000000000000000000000000000000
--- a/private/hal_graphics_allocator.te
+++ /dev/null
@@ -1 +0,0 @@
-init_daemon_domain(hal_graphics_allocator)
diff --git a/private/hal_graphics_allocator_default.te b/private/hal_graphics_allocator_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..36dcca30fc409221207e21083edb50a625993ae0
--- /dev/null
+++ b/private/hal_graphics_allocator_default.te
@@ -0,0 +1,4 @@
+type hal_graphics_allocator_default, hal_graphics_allocator, domain;
+type hal_graphics_allocator_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_graphics_allocator_default)
diff --git a/private/hal_graphics_composer.te b/private/hal_graphics_composer.te
deleted file mode 100644
index 128171f012899b7310d59413a24616559f7e6c5a..0000000000000000000000000000000000000000
--- a/private/hal_graphics_composer.te
+++ /dev/null
@@ -1 +0,0 @@
-init_daemon_domain(hal_graphics_composer)
diff --git a/private/hal_graphics_composer_default.te b/private/hal_graphics_composer_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..9ddf71f1381ab5b7dfaeae2293dd53a9e2b94eb4
--- /dev/null
+++ b/private/hal_graphics_composer_default.te
@@ -0,0 +1,4 @@
+type hal_graphics_composer_default, hal_graphics_composer, domain;
+type hal_graphics_composer_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_graphics_composer_default)
diff --git a/private/hal_ir_default.te b/private/hal_ir_default.te
index 0ccd436b57b862264e38a18ac2f65e2ea678c101..1f3d694bf7db7915f69c5c2b3e8b5bf920712825 100644
--- a/private/hal_ir_default.te
+++ b/private/hal_ir_default.te
@@ -1,5 +1,4 @@
 type hal_ir_default, hal_ir, domain;
 type hal_ir_default_exec, exec_type, file_type;
 
-# may be started by init
 init_daemon_domain(hal_ir_default)
diff --git a/private/hal_light_default.te b/private/hal_light_default.te
index 8ac8037b2e800a95cc848c3b1b7e3a0ac783a482..aee44d9cf319158d771bd7e25f7bc4e8d0e9a4a1 100644
--- a/private/hal_light_default.te
+++ b/private/hal_light_default.te
@@ -1,5 +1,4 @@
 type hal_light_default, hal_light, domain;
 type hal_light_default_exec, exec_type, file_type;
 
-# may be started by init
 init_daemon_domain(hal_light_default)
diff --git a/private/hal_memtrack.te b/private/hal_memtrack.te
deleted file mode 100644
index 89c7b8e6e84c41f513d6130d251075f5ad8b9c0c..0000000000000000000000000000000000000000
--- a/private/hal_memtrack.te
+++ /dev/null
@@ -1,2 +0,0 @@
-# may be started by init
-init_daemon_domain(hal_memtrack)
diff --git a/private/hal_memtrack_default.te b/private/hal_memtrack_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..113ee18711695f77b95ac635d7f93e03e81de485
--- /dev/null
+++ b/private/hal_memtrack_default.te
@@ -0,0 +1,4 @@
+type hal_memtrack_default, hal_memtrack, domain;
+type hal_memtrack_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_memtrack_default)
diff --git a/private/hal_nfc.te b/private/hal_nfc.te
deleted file mode 100644
index 0d0f24606d3ca39e993e99acdd4284aaf5839ae6..0000000000000000000000000000000000000000
--- a/private/hal_nfc.te
+++ /dev/null
@@ -1,2 +0,0 @@
-# may be started by init
-init_daemon_domain(hal_nfc)
diff --git a/private/hal_nfc_default.te b/private/hal_nfc_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..1f7c4ed7a519a4f84b6b692f58872bdc1f849da9
--- /dev/null
+++ b/private/hal_nfc_default.te
@@ -0,0 +1,4 @@
+type hal_nfc_default, hal_nfc, domain;
+type hal_nfc_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_nfc_default)
diff --git a/private/hal_power.te b/private/hal_power.te
deleted file mode 100644
index a564d402cffd0e3e85d4daf25ca3f6125cded9e7..0000000000000000000000000000000000000000
--- a/private/hal_power.te
+++ /dev/null
@@ -1,2 +0,0 @@
-# may be started by init
-init_daemon_domain(hal_power)
diff --git a/private/hal_power_default.te b/private/hal_power_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..e61375d4017ff480b35f12106cb70dbea3ad71e2
--- /dev/null
+++ b/private/hal_power_default.te
@@ -0,0 +1,4 @@
+type hal_power_default, hal_power, domain;
+type hal_power_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_power_default)
diff --git a/private/hal_thermal.te b/private/hal_thermal.te
deleted file mode 100644
index 2623e3f2f1347b5e37585cbd24d64c7c24c10de6..0000000000000000000000000000000000000000
--- a/private/hal_thermal.te
+++ /dev/null
@@ -1,2 +0,0 @@
-# May be started by init
-init_daemon_domain(hal_thermal)
diff --git a/private/hal_thermal_default.te b/private/hal_thermal_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..a2ff70e167f4beaae5f20938e628020cb91a40a5
--- /dev/null
+++ b/private/hal_thermal_default.te
@@ -0,0 +1,4 @@
+type hal_thermal_default, hal_thermal, domain;
+type hal_thermal_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_thermal_default)
diff --git a/private/hal_vibrator.te b/private/hal_vibrator.te
deleted file mode 100644
index ceba155e8241910da34f3943e4e9a4a04d38cbb1..0000000000000000000000000000000000000000
--- a/private/hal_vibrator.te
+++ /dev/null
@@ -1,2 +0,0 @@
-# may be started by init
-init_daemon_domain(hal_vibrator)
diff --git a/private/hal_vibrator_default.te b/private/hal_vibrator_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..e6339537e75aa7b8e3ad791513d023e7fc898729
--- /dev/null
+++ b/private/hal_vibrator_default.te
@@ -0,0 +1,4 @@
+type hal_vibrator_default, hal_vibrator, domain;
+type hal_vibrator_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_vibrator_default)
diff --git a/private/hal_vr.te b/private/hal_vr.te
deleted file mode 100644
index cc632f64d7e53365f2e5ba5cbfc4bd01893e6818..0000000000000000000000000000000000000000
--- a/private/hal_vr.te
+++ /dev/null
@@ -1,2 +0,0 @@
-# may be started by init
-init_daemon_domain(hal_vr)
diff --git a/private/hal_vr_default.te b/private/hal_vr_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..ba85157a589c8f597aa397be21ccbc85ba0a8c46
--- /dev/null
+++ b/private/hal_vr_default.te
@@ -0,0 +1,4 @@
+type hal_vr_default, hal_vr, domain;
+type hal_vr_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_vr_default)
diff --git a/private/hal_wifi.te b/private/hal_wifi.te
deleted file mode 100644
index 7c1b7b66577d09758673ee88f0b15a59585a4cf0..0000000000000000000000000000000000000000
--- a/private/hal_wifi.te
+++ /dev/null
@@ -1,3 +0,0 @@
-# type_transition must be private policy the domain_trans rules could stay
-# public, but conceptually should go with this
-init_daemon_domain(hal_wifi)
diff --git a/private/hal_wifi_default.te b/private/hal_wifi_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..a32a9070a19c2fae01711aec2c7f46ee16a86e20
--- /dev/null
+++ b/private/hal_wifi_default.te
@@ -0,0 +1,4 @@
+type hal_wifi_default, hal_wifi, domain;
+type hal_wifi_default_exec, exec_type, file_type;
+
+init_daemon_domain(hal_wifi_default)
diff --git a/public/attributes b/public/attributes
index 497cb90bce44b4242a03dd24da053fe309bc811c..9331437802ae6b661ee59391f2ef139cab016be1 100644
--- a/public/attributes
+++ b/public/attributes
@@ -115,5 +115,15 @@ attribute boot_control_hal;
 attribute update_engine_common;
 
 # HALs
-attribute hal_light;
+attribute hal_audio;
+attribute hal_graphics_allocator;
+attribute hal_graphics_composer;
 attribute hal_ir;
+attribute hal_light;
+attribute hal_memtrack;
+attribute hal_nfc;
+attribute hal_power;
+attribute hal_thermal;
+attribute hal_vibrator;
+attribute hal_vr;
+attribute hal_wifi;
diff --git a/public/hal_audio.te b/public/hal_audio.te
index b3ca73c8d1313eff9ce8581913ef02bf9b5bd553..b40427cd3150152bb8243dde0bc309a0769e6db4 100644
--- a/public/hal_audio.te
+++ b/public/hal_audio.te
@@ -1,7 +1,3 @@
-# hal_audio - audio services daemon
-type hal_audio, domain;
-type hal_audio_exec, exec_type, file_type;
-
 hwbinder_use(hal_audio)
 binder_call(hal_audio, audioserver)
 
diff --git a/public/hal_graphics_allocator.te b/public/hal_graphics_allocator.te
index 8b33f9325f7252cd0849ed3af3f424511ddc9c18..1c357ed441b8f3435728d2f54b3fbfd3377929c7 100644
--- a/public/hal_graphics_allocator.te
+++ b/public/hal_graphics_allocator.te
@@ -1,7 +1,3 @@
-# graphics buffer allocator subsystem
-type hal_graphics_allocator, domain;
-type hal_graphics_allocator_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_graphics_allocator)
 
diff --git a/public/hal_graphics_composer.te b/public/hal_graphics_composer.te
index e92eeafd51a2506e21220f114c68af8e5c4e1921..3753278f437b93118efd99e2916f123c28d66a4f 100644
--- a/public/hal_graphics_composer.te
+++ b/public/hal_graphics_composer.te
@@ -1,7 +1,3 @@
-# graphics composer subsystem
-type hal_graphics_composer, domain;
-type hal_graphics_composer_exec, exec_type, file_type;
-
 # HwBinder access
 hwbinder_use(hal_graphics_composer)
 # IComposerCallback
diff --git a/public/hal_memtrack.te b/public/hal_memtrack.te
index 07c1292386cf8068c2f78df5a9af0100789292bb..90ecc0a1081ad207523478244b72da7df1337114 100644
--- a/public/hal_memtrack.te
+++ b/public/hal_memtrack.te
@@ -1,6 +1,2 @@
-# memtrack subsystem
-type hal_memtrack, domain;
-type hal_memtrack_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_memtrack);
diff --git a/public/hal_nfc.te b/public/hal_nfc.te
index 528eb7c99f6b168a982311f655a4654e8c964483..a062a781254d0d1d815f7fb539e658f79244da62 100644
--- a/public/hal_nfc.te
+++ b/public/hal_nfc.te
@@ -1,7 +1,3 @@
-# nfc subsystem
-type hal_nfc, domain;
-type hal_nfc_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_nfc)
 
diff --git a/public/hal_power.te b/public/hal_power.te
index 26fec3b59e258da069738213965758da5d04bc13..df4cd4d3f1a6465a380959cae2ad81275c3a7dee 100644
--- a/public/hal_power.te
+++ b/public/hal_power.te
@@ -1,6 +1,2 @@
-# power subsystem
-type hal_power, domain;
-type hal_power_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_power);
diff --git a/public/hal_thermal.te b/public/hal_thermal.te
index 665471b9aa06467c711de3728742dd780151fd95..6edf8c765ac91056496d3a4303e2a18294e8c5a5 100644
--- a/public/hal_thermal.te
+++ b/public/hal_thermal.te
@@ -1,7 +1,3 @@
-# thermal subsystem
-type hal_thermal, domain;
-type hal_thermal_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_thermal)
 
diff --git a/public/hal_vibrator.te b/public/hal_vibrator.te
index 02b965f3242b19047c749ddf83c8583eb8405e95..37d015ea1bd7b4509c6ceb75eebce1597dacee95 100644
--- a/public/hal_vibrator.te
+++ b/public/hal_vibrator.te
@@ -1,7 +1,3 @@
-# vibrator subsystem
-type hal_vibrator, domain;
-type hal_vibrator_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_vibrator)
 
diff --git a/public/hal_vr.te b/public/hal_vr.te
index 9cae1ab34493a8e36d7c23532a52ec98fbb2e3f1..4249fdd173f33047f493786c21b4f41a9dd75118 100644
--- a/public/hal_vr.te
+++ b/public/hal_vr.te
@@ -1,7 +1,3 @@
-# vr subsystem
-type hal_vr, domain;
-type hal_vr_exec, exec_type, file_type;
-
 # hwbinder access
 hwbinder_use(hal_vr)
 
diff --git a/public/hal_wifi.te b/public/hal_wifi.te
index 7c5600b5dd55f0ef4556dde0b743529f3d126abe..f13d225a749a65fb13683a5e3c2a580dc50fada8 100644
--- a/public/hal_wifi.te
+++ b/public/hal_wifi.te
@@ -1,7 +1,3 @@
-# wifi legacy hal
-type hal_wifi, domain;
-type hal_wifi_exec, exec_type, file_type;
-
 ## hwbinder access
 hwbinder_use(hal_wifi)