diff --git a/BUILD.gn b/BUILD.gn
index ecbfa075d90699258354924df4988e26b06bc2cd..e280b4e839ef8d246fd63b55fb775485891a17c1 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1,5 +1,5 @@
 #
-#  Copyright 2015 Google, Inc.
+#  Copyright 2020 Google, Inc.
 #
 #  Licensed under the Apache License, Version 2.0 (the "License");
 #  you may not use this file except in compliance with the License.
@@ -21,211 +21,9 @@
 # file to your new one or GN won't know about it.
 
 group("all") {
-  deps = [ ":bluetooth" ]
-
-  #if (use.test) {
-    #deps += [ ":bluetooth_tests" ]
-  #}
-}
-
-# This pulls in main/BUILD.gn and all of its dependencies.
-group("bluetooth") {
-  deps = [
-    "//bt/main:bluetooth",
-    "//bt/main:bluetooth-static",
-    #"//bt/service:bluetoothtbd",
-  ]
-}
-
-# TODO(b/190750167) - Re-enable once we're fully Bazel build
-#if (use.test) {
-  #group("bluetooth_tests") {
-    #deps = [
-      #"//bt/btcore:net_test_btcore",
-      #"//bt/common:bluetooth_test_common",
-      #"//bt/profile/avrcp:net_test_avrcp",
-      #"//bt/service:bluetoothtbd_test",
-      #"//bt/stack:net_test_btm_iso",
-      #"//bt/types:net_test_types",
-
-      ##"//bt/packet:net_test_btpackets",
-    #]
-  #}
-#}
-
-if (host_cpu == target_cpu && host_os == target_os) {
-  group("tools") {
-    deps = [
-      "//bt/gd/dumpsys/bundler:bluetooth_flatbuffer_bundler",
-      "//bt/gd/packet/parser:bluetooth_packetgen",
-    ]
-  }
+  deps = [ "//bt/system:all" ]
 }
 
-if (defined(use.android) && use.android) {
-  group("android_bluetooth_tests") {
-    deps = [
-      "//bt/device:net_test_device",
-      "//bt/hci:net_test_hci",
-      "//bt/osi:net_test_osi",
-      "//bt/test/suite:net_test_bluetooth",
-    ]
-  }
-}
-
-config("target_defaults") {
-  include_dirs = [
-    "//bt",
-    "//bt/linux_include",
-    "//bt/types",
-    "//bt/include",
-
-    # For flatbuffer generated headers
-    "${root_gen_dir}/bt/gd/",
-    "${root_gen_dir}/bt/gd/dumpsys/bundler",
-  ]
-
-  cflags = [
-    "-fPIC",
-    "-Wno-non-c-typedef-for-linkage",
-    "-Wno-unreachable-code-return",
-    "-Wno-defaulted-function-deleted",
-    "-Wno-gnu-variable-sized-type-not-at-end",
-    "-Wno-format-nonliteral",
-    "-Wno-inconsistent-missing-override",
-    "-Wno-unreachable-code",
-    "-Wno-range-loop-construct",
-    "-Wno-reorder-init-list",
-    "-Wno-unused-function",
-    "-Wno-unused-result",
-    "-Wno-unused-variable",
-    "-Wno-unused-const-variable",
-    "-Wno-format",
-    "-Wno-pessimizing-move",
-    "-Wno-unknown-warning-option",
-    "-Wno-final-dtor-non-final-class",
-  ]
-
-  cflags_cc = [
-    "-std=c++17",
-  ]
-
-  defines = [
-    "HAS_NO_BDROID_BUILDCFG",
-    "OS_GENERIC",
-    "OS_LINUX_GENERIC",
-    "TARGET_FLOSS",
-    "EXPORT_SYMBOL=__attribute__((visibility(\"default\")))",
-    "FALLTHROUGH_INTENDED=[[clang::fallthrough]]",
-  ]
-
-  # If not configured as a dynamic library, default to static library
-  if (!(defined(use.bt_dynlib) && use.bt_dynlib)) {
-    defines += [
-      "STATIC_LIBBLUETOOTH",
-    ]
-  }
-
-  if (!(defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs)) {
-    defines += [ "EXCLUDE_NONSTANDARD_CODECS" ]
-  }
-
-  configs = [ ":external_libchrome" ]
-}
-
-group("libbt-platform-protos-lite") {
-  deps = [
-    "//external/proto_logging/stats/enums/bluetooth:libbt-platform-protos-lite",
-  ]
-}
-
-# Configurations to use as dependencies for GN build
-config("external_gtest") {
-  configs = [
-    ":pkg_gtest",
-    ":pkg_gmock",
-  ]
-}
-
-config("external_gtest_main") {
-  configs = [ ":pkg_gtest_main" ]
-}
-
-config("external_gmock_main") {
-  configs = [ ":pkg_gmock_main" ]
-}
-
-config("external_libchrome") {
-  configs = [ ":pkg_libchrome" ]
-}
-
-config("external_modp_b64") {
-  configs = [ ":pkg_modp_b64" ]
-}
-
-config("external_tinyxml2") {
-  configs = [ ":pkg_tinyxml2" ]
-}
-
-config("external_flatbuffers") {
-  lib_dirs = [ "${libdir}" ]
-
-  libs = [ "flatbuffers" ]
-}
-
-# Package configurations to extract dependencies from env
-pkg_config("pkg_gtest") {
-  pkg_deps = [ "gtest" ]
-}
-
-pkg_config("pkg_gtest_main") {
-  pkg_deps = [ "gtest_main" ]
-}
-
-pkg_config("pkg_gmock") {
-  pkg_deps = [ "gmock" ]
-}
-
-pkg_config("pkg_gmock_main") {
-  pkg_deps = [ "gmock_main" ]
-}
-
-pkg_config("pkg_libchrome") {
-  pkg_deps = [ "libchrome" ]
-}
-
-pkg_config("pkg_modp_b64") {
-  pkg_deps = [ "libmodp_b64" ]
-}
-
-pkg_config("pkg_tinyxml2") {
-  pkg_deps = [ "tinyxml2" ]
-}
-
-# To use non-standard codecs (i.e. ldac, aac, aptx), set this use flag when
-# building. These codecs may have licensing issues that need to be resolved
-# first.
-if (defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs) {
-  config("external_aac") {
-    configs = [ ":pkg_aac" ]
-  }
-
-  pkg_config("pkg_aac") {
-    pkg_deps = [ "fdk-aac" ]
-  }
-
-  config("external_libldac") {
-    configs = [
-      ":pkg_libldacBT_enc",
-      ":pkg_libldacBT_abr",
-    ]
-  }
-
-  pkg_config("pkg_libldacBT_enc") {
-    pkg_deps = [ "ldacBT-enc" ]
-  }
-
-  pkg_config("pkg_libldacBT_abr") {
-    pkg_deps = [ "ldacBT-abr" ]
-  }
+group("tools") {
+  deps = [ "//bt/system:tools" ]
 }
diff --git a/Cargo.toml b/Cargo.toml
index 134dd9f39d5854c89bd346391ac42bce514d80ec..a677dd7f63e245d84e6a882329984ac023089b29 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -16,9 +16,9 @@
 [workspace]
 
 members = [
-  "gd/rust/shim",
-  "gd/rust/topshim",
-  "gd/rust/linux/mgmt",
-  "gd/rust/linux/service",
-  "gd/rust/linux/client",
+  "system/gd/rust/shim",
+  "system/gd/rust/topshim",
+  "system/gd/rust/linux/mgmt",
+  "system/gd/rust/linux/service",
+  "system/gd/rust/linux/client",
 ]
diff --git a/system/BUILD.gn b/system/BUILD.gn
new file mode 100644
index 0000000000000000000000000000000000000000..266f0fc3dd22ee46197127143810e8eced5b4e64
--- /dev/null
+++ b/system/BUILD.gn
@@ -0,0 +1,231 @@
+#
+#  Copyright 2015 Google, Inc.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at:
+#
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+
+# This is the root build file for GN. GN will start processing by loading this
+# file, and recursively load all dependencies until all dependencies are either
+# resolved or known not to exist (which will cause the build to fail). So if
+# you add a new build file, there must be some path of dependencies from this
+# file to your new one or GN won't know about it.
+
+group("all") {
+  deps = [ ":bluetooth" ]
+
+  #if (use.test) {
+    #deps += [ ":bluetooth_tests" ]
+  #}
+}
+
+# This pulls in main/BUILD.gn and all of its dependencies.
+group("bluetooth") {
+  deps = [
+    "//bt/system/main:bluetooth",
+    "//bt/system/main:bluetooth-static",
+    #"//bt/system/service:bluetoothtbd",
+  ]
+}
+
+# TODO(b/190750167) - Re-enable once we're fully Bazel build
+#if (use.test) {
+  #group("bluetooth_tests") {
+    #deps = [
+      #"//bt/system/btcore:net_test_btcore",
+      #"//bt/system/common:bluetooth_test_common",
+      #"//bt/system/profile/avrcp:net_test_avrcp",
+      #"//bt/system/service:bluetoothtbd_test",
+      #"//bt/system/stack:net_test_btm_iso",
+      #"//bt/system/types:net_test_types",
+
+      ##"//bt/system/packet:net_test_btpackets",
+    #]
+  #}
+#}
+
+if (host_cpu == target_cpu && host_os == target_os) {
+  group("tools") {
+    deps = [
+      "//bt/system/gd/dumpsys/bundler:bluetooth_flatbuffer_bundler",
+      "//bt/system/gd/packet/parser:bluetooth_packetgen",
+    ]
+  }
+}
+
+if (defined(use.android) && use.android) {
+  group("android_bluetooth_tests") {
+    deps = [
+      "//bt/system/device:net_test_device",
+      "//bt/system/hci:net_test_hci",
+      "//bt/system/osi:net_test_osi",
+      "//bt/system/test/suite:net_test_bluetooth",
+    ]
+  }
+}
+
+config("target_defaults") {
+  include_dirs = [
+    "//bt/system",
+    "//bt/system/linux_include",
+    "//bt/system/types",
+    "//bt/system/include",
+
+    # For flatbuffer generated headers
+    "${root_gen_dir}/bt/system/gd/",
+    "${root_gen_dir}/bt/system/gd/dumpsys/bundler",
+  ]
+
+  cflags = [
+    "-fPIC",
+    "-Wno-non-c-typedef-for-linkage",
+    "-Wno-unreachable-code-return",
+    "-Wno-defaulted-function-deleted",
+    "-Wno-gnu-variable-sized-type-not-at-end",
+    "-Wno-format-nonliteral",
+    "-Wno-inconsistent-missing-override",
+    "-Wno-unreachable-code",
+    "-Wno-range-loop-construct",
+    "-Wno-reorder-init-list",
+    "-Wno-unused-function",
+    "-Wno-unused-result",
+    "-Wno-unused-variable",
+    "-Wno-unused-const-variable",
+    "-Wno-format",
+    "-Wno-pessimizing-move",
+    "-Wno-unknown-warning-option",
+    "-Wno-final-dtor-non-final-class",
+  ]
+
+  cflags_cc = [
+    "-std=c++17",
+  ]
+
+  defines = [
+    "HAS_NO_BDROID_BUILDCFG",
+    "OS_GENERIC",
+    "OS_LINUX_GENERIC",
+    "TARGET_FLOSS",
+    "EXPORT_SYMBOL=__attribute__((visibility(\"default\")))",
+    "FALLTHROUGH_INTENDED=[[clang::fallthrough]]",
+  ]
+
+  # If not configured as a dynamic library, default to static library
+  if (!(defined(use.bt_dynlib) && use.bt_dynlib)) {
+    defines += [
+      "STATIC_LIBBLUETOOTH",
+    ]
+  }
+
+  if (!(defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs)) {
+    defines += [ "EXCLUDE_NONSTANDARD_CODECS" ]
+  }
+
+  configs = [ ":external_libchrome" ]
+}
+
+group("libbt-platform-protos-lite") {
+  deps = [
+    "//external/proto_logging/stats/enums/bluetooth:libbt-platform-protos-lite",
+  ]
+}
+
+# Configurations to use as dependencies for GN build
+config("external_gtest") {
+  configs = [
+    ":pkg_gtest",
+    ":pkg_gmock",
+  ]
+}
+
+config("external_gtest_main") {
+  configs = [ ":pkg_gtest_main" ]
+}
+
+config("external_gmock_main") {
+  configs = [ ":pkg_gmock_main" ]
+}
+
+config("external_libchrome") {
+  configs = [ ":pkg_libchrome" ]
+}
+
+config("external_modp_b64") {
+  configs = [ ":pkg_modp_b64" ]
+}
+
+config("external_tinyxml2") {
+  configs = [ ":pkg_tinyxml2" ]
+}
+
+config("external_flatbuffers") {
+  lib_dirs = [ "${libdir}" ]
+
+  libs = [ "flatbuffers" ]
+}
+
+# Package configurations to extract dependencies from env
+pkg_config("pkg_gtest") {
+  pkg_deps = [ "gtest" ]
+}
+
+pkg_config("pkg_gtest_main") {
+  pkg_deps = [ "gtest_main" ]
+}
+
+pkg_config("pkg_gmock") {
+  pkg_deps = [ "gmock" ]
+}
+
+pkg_config("pkg_gmock_main") {
+  pkg_deps = [ "gmock_main" ]
+}
+
+pkg_config("pkg_libchrome") {
+  pkg_deps = [ "libchrome" ]
+}
+
+pkg_config("pkg_modp_b64") {
+  pkg_deps = [ "libmodp_b64" ]
+}
+
+pkg_config("pkg_tinyxml2") {
+  pkg_deps = [ "tinyxml2" ]
+}
+
+# To use non-standard codecs (i.e. ldac, aac, aptx), set this use flag when
+# building. These codecs may have licensing issues that need to be resolved
+# first.
+if (defined(use.bt_nonstandard_codecs) && use.bt_nonstandard_codecs) {
+  config("external_aac") {
+    configs = [ ":pkg_aac" ]
+  }
+
+  pkg_config("pkg_aac") {
+    pkg_deps = [ "fdk-aac" ]
+  }
+
+  config("external_libldac") {
+    configs = [
+      ":pkg_libldacBT_enc",
+      ":pkg_libldacBT_abr",
+    ]
+  }
+
+  pkg_config("pkg_libldacBT_enc") {
+    pkg_deps = [ "ldacBT-enc" ]
+  }
+
+  pkg_config("pkg_libldacBT_abr") {
+    pkg_deps = [ "ldacBT-abr" ]
+  }
+}
diff --git a/system/audio_hal_interface/BUILD.gn b/system/audio_hal_interface/BUILD.gn
index 31e3856c3dd55b03bebedbe45a1d303acc18ad32..73d0b0cdd11501916e38eba752a130cff43a62b0 100644
--- a/system/audio_hal_interface/BUILD.gn
+++ b/system/audio_hal_interface/BUILD.gn
@@ -21,17 +21,17 @@ static_library("audio_hal_interface") {
   ]
 
   include_dirs = [
-    "//bt/bta/include",
-    "//bt/btif/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/gd/rust/shim",
+    "//bt/system/bta/include",
+    "//bt/system/btif/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/gd/rust/shim",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 
   deps = [
-    "//bt/common",
-    "//bt/osi:osi",
+    "//bt/system/common",
+    "//bt/system/osi:osi",
   ]
 }
diff --git a/system/bta/BUILD.gn b/system/bta/BUILD.gn
index 7fc7b92d48b048b0ca91531fc4cd947a2166e4e1..fcd0c4846fef1dcd103beb6ea45a2bbfb554ba0d 100644
--- a/system/bta/BUILD.gn
+++ b/system/bta/BUILD.gn
@@ -98,34 +98,34 @@ static_library("bta") {
     "hd",
     "include",
     "sys",
-    "//bt/",
-    "//bt/linux_include",
-    "//bt/bta",
-    "//bt/internal_include",
-    "//bt/btcore/include",
-    "//bt/hci/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/stack/btm",
-    "//bt/udrv/include",
-    "//bt/utils/include",
-    "//bt/vnd/include",
-    "//bt/btif/include",
-    "//bt/btif/avrcp",
-    "//bt/include/hardware/avrcp",
-    "//bt/profile/avrcp",
-    "//bt/packet/avrcp",
-    "//bt/packet/base",
+    "//bt/system/",
+    "//bt/system/linux_include",
+    "//bt/system/bta",
+    "//bt/system/internal_include",
+    "//bt/system/btcore/include",
+    "//bt/system/hci/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/stack/btm",
+    "//bt/system/udrv/include",
+    "//bt/system/utils/include",
+    "//bt/system/vnd/include",
+    "//bt/system/btif/include",
+    "//bt/system/btif/avrcp",
+    "//bt/system/include/hardware/avrcp",
+    "//bt/system/profile/avrcp",
+    "//bt/system/packet/avrcp",
+    "//bt/system/packet/base",
   ]
 
   configs += [
-    "//bt:target_defaults"
+    "//bt/system:target_defaults"
   ]
 
   deps = [
-    "//bt/gd/rust/shim:shim_bridge_header",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/gd/rust/shim:message_loop_thread_bridge_header",
+    "//bt/system/gd/rust/shim:shim_bridge_header",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/gd/rust/shim:message_loop_thread_bridge_header",
   ]
 }
 
@@ -140,22 +140,22 @@ if (use.test) {
 
     include_dirs = [
       "include",
-      "//bt/",
-      "//bt/bta",
-      "//bt/btcore/include",
-      "//bt/hci/include",
-      "//bt/internal_include",
-      "//bt/stack/btm",
+      "//bt/system/",
+      "//bt/system/bta",
+      "//bt/system/btcore/include",
+      "//bt/system/hci/include",
+      "//bt/system/internal_include",
+      "//bt/system/stack/btm",
     ]
 
     deps = [
-      "//bt/bta",
-      "//bt/types",
+      "//bt/system/bta",
+      "//bt/system/types",
     ]
 
     configs += [
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 }
diff --git a/system/btcore/BUILD.gn b/system/btcore/BUILD.gn
index ea0ded383b683496de4061e00af042226d9c7f1f..a80741651b785b9ae383c045a47ed026981783ff 100644
--- a/system/btcore/BUILD.gn
+++ b/system/btcore/BUILD.gn
@@ -25,40 +25,40 @@ static_library("btcore") {
 
   include_dirs = [
     "include",
-    "//bt",
+    "//bt/system",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 
   deps = [
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/gd/rust/shim:libbluetooth_rust_interop",
-    "//bt/gd/rust/shim:message_loop_thread_bridge_header",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/gd/rust/shim:libbluetooth_rust_interop",
+    "//bt/system/gd/rust/shim:message_loop_thread_bridge_header",
   ]
 }
 
 if (use.test) {
   executable("net_test_btcore") {
     sources = [
-      "//bt/osi/test/AllocationTestHarness.cc",
+      "//bt/system/osi/test/AllocationTestHarness.cc",
       "test/device_class_test.cc",
       "test/property_test.cc",
     ]
 
     include_dirs = [
       "include",
-      "//bt",
+      "//bt/system",
     ]
 
     deps = [
-      "//bt/btcore",
-      "//bt/osi",
-      "//bt/types",
+      "//bt/system/btcore",
+      "//bt/system/osi",
+      "//bt/system/types",
     ]
 
     configs += [
-      "//bt:external_gtest_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gtest_main",
+      "//bt/system:target_defaults",
     ]
 
     libs = [
diff --git a/system/btif/BUILD.gn b/system/btif/BUILD.gn
index 26be562c30bbeabcacd371ffb0400d649dbab182..46f49650774986c8376bab9454ca0cb94f3b641c 100644
--- a/system/btif/BUILD.gn
+++ b/system/btif/BUILD.gn
@@ -17,8 +17,8 @@
 static_library("btif") {
   sources = [
     # TODO(abps) - Do we need this?
-    "//bt/audio_a2dp_hw/src/audio_a2dp_hw_utils.cc",
-    "//bt/audio_hearing_aid_hw/src/audio_hearing_aid_hw_utils.cc",
+    "//bt/system/audio_a2dp_hw/src/audio_a2dp_hw_utils.cc",
+    "//bt/system/audio_hearing_aid_hw/src/audio_hearing_aid_hw_utils.cc",
 
     # AVRCP Target Service
     "avrcp/avrcp_service.cc",
@@ -91,39 +91,39 @@ static_library("btif") {
 
   include_dirs = [
     "include",
-    "//bt/",
-    "//bt/bta/dm",
-    "//bt/linux_include",
-    "//bt/audio_a2dp_hw/include",
-    "//bt/audio_hearing_aid_hw/include",
-    "//bt/bta/include",
-    "//bt/bta/sys",
-    "//bt/btcore/include",
-    "//bt/device/include",
-    "//bt/embdrv/sbc/encoder/include",
-    "//bt/embdrv/sbc/decoder/include",
-    "//bt/gd",
-    "//bt/hci/include",
-    "//bt/stack/a2dp",
-    "//bt/stack/btm",
-    "//bt/stack/l2cap",
-    "//bt/stack/include",
-    "//bt/internal_include",
-    "//bt/udrv/include",
-    "//bt/utils/include",
-    "//bt/vnd/include",
-    "//bt/profile/avrcp",
+    "//bt/system/",
+    "//bt/system/bta/dm",
+    "//bt/system/linux_include",
+    "//bt/system/audio_a2dp_hw/include",
+    "//bt/system/audio_hearing_aid_hw/include",
+    "//bt/system/bta/include",
+    "//bt/system/bta/sys",
+    "//bt/system/btcore/include",
+    "//bt/system/device/include",
+    "//bt/system/embdrv/sbc/encoder/include",
+    "//bt/system/embdrv/sbc/decoder/include",
+    "//bt/system/gd",
+    "//bt/system/hci/include",
+    "//bt/system/stack/a2dp",
+    "//bt/system/stack/btm",
+    "//bt/system/stack/l2cap",
+    "//bt/system/stack/include",
+    "//bt/system/internal_include",
+    "//bt/system/udrv/include",
+    "//bt/system/utils/include",
+    "//bt/system/vnd/include",
+    "//bt/system/profile/avrcp",
   ]
 
   deps = [
-    "//bt:libbt-platform-protos-lite",
-    "//bt/common",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/profile/avrcp:profile_avrcp",
+    "//bt/system:libbt-platform-protos-lite",
+    "//bt/system/common",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/profile/avrcp:profile_avrcp",
   ]
 
   configs += [
-    "//bt:target_defaults",
-    "//bt:external_tinyxml2",
+    "//bt/system:target_defaults",
+    "//bt/system:external_tinyxml2",
   ]
 }
diff --git a/system/common/BUILD.gn b/system/common/BUILD.gn
index 306fbe9df849d9d64d5201fd5fdb8796b68758af..3fe239f0af30ab8b69e26a200dc7ad36c0de4fd0 100644
--- a/system/common/BUILD.gn
+++ b/system/common/BUILD.gn
@@ -28,18 +28,18 @@ static_library("common") {
   ]
 
   include_dirs = [
-    "//bt/",
-    "//bt/stack/include",
-    "//bt/linux_include",
-    "//bt/internal_include",
+    "//bt/system/",
+    "//bt/system/stack/include",
+    "//bt/system/linux_include",
+    "//bt/system/internal_include",
   ]
 
   deps = [
-    "//bt:libbt-platform-protos-lite",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system:libbt-platform-protos-lite",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
 
 if (use.test) {
@@ -51,16 +51,16 @@ if (use.test) {
     ]
 
     include_dirs = [
-      "//bt/",
-      "//bt/common",
+      "//bt/system/",
+      "//bt/system/common",
     ]
 
-    deps = [ "//bt/common" ]
+    deps = [ "//bt/system/common" ]
 
     configs += [
-      "//bt:external_gtest_main",
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gtest_main",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
 
     libs = [
diff --git a/system/device/BUILD.gn b/system/device/BUILD.gn
index 27abaaa54111fccc4d3f11d6927153151cbf7252..c9a0ef19ca1649b6b7d9f98b20bb6db5d510d587 100644
--- a/system/device/BUILD.gn
+++ b/system/device/BUILD.gn
@@ -22,41 +22,41 @@ static_library("device") {
   ]
 
   include_dirs = [
-    "//bt/",
-    "//bt/btcore/include",
-    "//bt/hci/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
+    "//bt/system/",
+    "//bt/system/btcore/include",
+    "//bt/system/hci/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 
   deps = [
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/gd/rust/shim:libbluetooth_rust_interop",
-    "//bt/gd/rust/shim:message_loop_thread_bridge_header",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/gd/rust/shim:libbluetooth_rust_interop",
+    "//bt/system/gd/rust/shim:message_loop_thread_bridge_header",
   ]
 }
 
 if (use.test) {
   executable("net_test_device") {
     sources = [
-      "//bt/osi/test/AllocationTestHarness.cc",
+      "//bt/system/osi/test/AllocationTestHarness.cc",
     ]
 
-    include_dirs = [ "//bt" ]
+    include_dirs = [ "//bt/system" ]
 
     deps = [
-      "//bt/device",
-      "//bt/btcore",
-      "//bt/osi",
+      "//bt/system/device",
+      "//bt/system/btcore",
+      "//bt/system/osi",
     ]
 
     configs += [
-      "//bt:external_gtest_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gtest_main",
+      "//bt/system:target_defaults",
     ]
 
     libs = [
diff --git a/system/embdrv/g722/BUILD.gn b/system/embdrv/g722/BUILD.gn
index aa5e06ea2bc6e232af9fab15e94e8b2ecee4d061..ae522a87c78a13c3d149a24c764f1fad3eda82d3 100644
--- a/system/embdrv/g722/BUILD.gn
+++ b/system/embdrv/g722/BUILD.gn
@@ -21,5 +21,5 @@ static_library("g722") {
   ]
 
   defines = [ "G722_SUPPORT_MALLOC" ]
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
diff --git a/system/embdrv/sbc/BUILD.gn b/system/embdrv/sbc/BUILD.gn
index ce85245823e3473de45eed169363daf01fa794cf..061cd8138239a94d70040c03be7aedfbfffd936b 100644
--- a/system/embdrv/sbc/BUILD.gn
+++ b/system/embdrv/sbc/BUILD.gn
@@ -34,7 +34,7 @@ source_set("sbc_decoder") {
 
   include_dirs = [ "decoder/include" ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
 
 source_set("sbc_encoder") {
@@ -51,11 +51,11 @@ source_set("sbc_encoder") {
 
   include_dirs = [
     "encoder/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
 
 static_library("sbc") {
diff --git a/system/gd/BUILD.gn b/system/gd/BUILD.gn
index d12a3802d4b885552c14cbd5300d086a5c581d53..1e13749cdd10c1055d4924ad2ae21d3c923aeb25 100644
--- a/system/gd/BUILD.gn
+++ b/system/gd/BUILD.gn
@@ -13,8 +13,8 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-import("//bt/gd/dumpsys/bundler/bundler.gni")
-import("//bt/gd/packet/parser/packetgen.gni")
+import("//bt/system/gd/dumpsys/bundler/bundler.gni")
+import("//bt/system/gd/packet/parser/packetgen.gni")
 import("//common-mk/flatbuffer.gni")
 
 config("gd_defaults") {
@@ -36,8 +36,8 @@ config("gd_defaults") {
     "crypto",
   ]
 
-  include_dirs = [ "//bt/gd" ]
-  configs = [ "//bt:target_defaults" ]
+  include_dirs = [ "//bt/system/gd" ]
+  configs = [ "//bt/system:target_defaults" ]
 }
 
 config("rust_defaults") {
@@ -46,10 +46,10 @@ config("rust_defaults") {
 
 group("gd_default_deps") {
   deps = [
-    "//bt/gd:BluetoothGeneratedDumpsysDataSchema_h",
-    "//bt/gd:BluetoothGeneratedPackets_h",
-    "//bt/gd/dumpsys:libbluetooth-dumpsys",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/gd:BluetoothGeneratedDumpsysDataSchema_h",
+    "//bt/system/gd:BluetoothGeneratedPackets_h",
+    "//bt/system/gd/dumpsys:libbluetooth-dumpsys",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
   ]
 }
 
@@ -62,21 +62,21 @@ static_library("libbluetooth_gd") {
   include_dirs = [ "." ]
   configs += [ ":gd_defaults" ]
   deps = [
-    "//bt/gd/rust/topshim:libbluetooth_topshim",
-    "//bt/gd/rust/shim:libbluetooth_rust_interop",
-    "//bt/gd:BluetoothGeneratedPackets_h",
-    "//bt/gd/att:BluetoothAttSources",
-    "//bt/gd/common:BluetoothCommonSources",
-    "//bt/gd/crypto_toolbox:BluetoothCryptoToolboxSources",
-    "//bt/gd/dumpsys:BluetoothDumpsysSources",
-    "//bt/gd/btaa:BluetoothBtaaSources_linux",
-    "//bt/gd/hal:BluetoothHalSources",
-    "//bt/gd/hal:BluetoothHalSources_hci_host",
-    "//bt/gd/l2cap:BluetoothL2capSources",
-    "//bt/gd/neighbor:BluetoothNeighborSources",
-    "//bt/gd/security:BluetoothSecuritySources",
-    "//bt/gd/shim:BluetoothShimSources",
-    "//bt/gd/storage:BluetoothStorageSources",
+    "//bt/system/gd/rust/topshim:libbluetooth_topshim",
+    "//bt/system/gd/rust/shim:libbluetooth_rust_interop",
+    "//bt/system/gd:BluetoothGeneratedPackets_h",
+    "//bt/system/gd/att:BluetoothAttSources",
+    "//bt/system/gd/common:BluetoothCommonSources",
+    "//bt/system/gd/crypto_toolbox:BluetoothCryptoToolboxSources",
+    "//bt/system/gd/dumpsys:BluetoothDumpsysSources",
+    "//bt/system/gd/btaa:BluetoothBtaaSources_linux",
+    "//bt/system/gd/hal:BluetoothHalSources",
+    "//bt/system/gd/hal:BluetoothHalSources_hci_host",
+    "//bt/system/gd/l2cap:BluetoothL2capSources",
+    "//bt/system/gd/neighbor:BluetoothNeighborSources",
+    "//bt/system/gd/security:BluetoothSecuritySources",
+    "//bt/system/gd/shim:BluetoothShimSources",
+    "//bt/system/gd/storage:BluetoothStorageSources",
   ]
 }
 
@@ -103,7 +103,7 @@ bt_flatc_binary_schema("BluetoothGeneratedDumpsysBinarySchema_bfbs") {
     "shim/dumpsys.fbs",
   ]
 
-  include_dir = "bt/gd"
+  include_dir = "system/gd"
 }
 
 packetgen_py("BluetoothGeneratedPackets_python3_cc") {
@@ -113,7 +113,7 @@ packetgen_py("BluetoothGeneratedPackets_python3_cc") {
     "security/smp_packets.pdl",
   ]
 
-  include = "bt/gd"
+  include = "system/gd"
   source_root = "../.."
   shards = 10
 }
@@ -125,7 +125,7 @@ packetgen_headers("BluetoothGeneratedPackets_h") {
     "security/smp_packets.pdl",
   ]
 
-  include = "bt/gd"
+  include = "system/gd"
   source_root = "../.."
 }
 
diff --git a/system/gd/att/BUILD.gn b/system/gd/att/BUILD.gn
index fd16937510f861785e24ed4eb319070215b16ae3..28a2a1c713d1986ed674aadd5f8db01abf1ffc7f 100644
--- a/system/gd/att/BUILD.gn
+++ b/system/gd/att/BUILD.gn
@@ -17,6 +17,6 @@
 source_set("BluetoothAttSources") {
   sources = [ "att_module.cc" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
diff --git a/system/gd/btaa/BUILD.gn b/system/gd/btaa/BUILD.gn
index 342a4e3dc44bb4cd36642de2e97e5d6528940a18..9beaf1e5acbaf5f3be15865379f59e2e1a7dfe30 100644
--- a/system/gd/btaa/BUILD.gn
+++ b/system/gd/btaa/BUILD.gn
@@ -17,6 +17,6 @@
 source_set("BluetoothBtaaSources_linux") {
   sources = [ "linux/activity_attribution.cc" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
diff --git a/system/gd/common/BUILD.gn b/system/gd/common/BUILD.gn
index fb4dad973d378bface72b2bcc0d2cbd664987c07..7941b7a72d5005284f2542559a0f974d7c676192 100644
--- a/system/gd/common/BUILD.gn
+++ b/system/gd/common/BUILD.gn
@@ -22,9 +22,9 @@ source_set("BluetoothCommonSources") {
     "strings.cc",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
   deps = [
-    "//bt/gd:gd_default_deps",
-    "//bt:libbt-platform-protos-lite",
+    "//bt/system/gd:gd_default_deps",
+    "//bt/system:libbt-platform-protos-lite",
   ]
 }
diff --git a/system/gd/crypto_toolbox/BUILD.gn b/system/gd/crypto_toolbox/BUILD.gn
index 4bca591f5766852f5759a33999792917103c9788..7dd35a8f11d49efccde3c1e8c85ba8ff463de877 100644
--- a/system/gd/crypto_toolbox/BUILD.gn
+++ b/system/gd/crypto_toolbox/BUILD.gn
@@ -20,5 +20,5 @@ source_set("BluetoothCryptoToolboxSources") {
     "crypto_toolbox.cc",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
 }
diff --git a/system/gd/dumpsys/BUILD.gn b/system/gd/dumpsys/BUILD.gn
index a280ec8e1b7707d2967166ac8ec76db0184f24b9..82849ddde4d7cacf7b4648e1b5e2a294f0cdd615 100644
--- a/system/gd/dumpsys/BUILD.gn
+++ b/system/gd/dumpsys/BUILD.gn
@@ -13,7 +13,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-import("//bt/gd/dumpsys/bundler/bundler.gni")
+import("//bt/system/gd/dumpsys/bundler/bundler.gni")
 
 source_set("BluetoothDumpsysSources") {
   sources = [
@@ -25,14 +25,14 @@ source_set("BluetoothDumpsysSources") {
 
   cflags_cc = [ "-Wno-enum-compare-switch" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
 
 bt_flatc_bundler("libbluetooth-dumpsys") {
   root_name = "bluetooth.DumpsysData"
   filename = "generated_dumpsys_bundled_schema"
   namespace = "bluetooth::dumpsys"
-  deps = [ "//bt/gd:BluetoothGeneratedDumpsysBinarySchema_bfbs" ]
-  configs = [ "//bt/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:BluetoothGeneratedDumpsysBinarySchema_bfbs" ]
+  configs = [ "//bt/system/gd:gd_defaults" ]
 }
diff --git a/system/gd/dumpsys/bundler/BUILD.gn b/system/gd/dumpsys/bundler/BUILD.gn
index 9d149dc62c3b87be18e640aa6123188b8595701a..4be41331c2e892712135b2932c3590b22465f5c8 100644
--- a/system/gd/dumpsys/bundler/BUILD.gn
+++ b/system/gd/dumpsys/bundler/BUILD.gn
@@ -13,12 +13,12 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
-import("//bt/gd/dumpsys/bundler/bundler.gni")
+import("//bt/system/gd/dumpsys/bundler/bundler.gni")
 import("//common-mk/flatbuffer.gni")
 
 bt_flatc_binary_schema("BluetoothGeneratedBundlerSchema_h_bfbs") {
   sources = [ "bundler_schema.fbs" ]
-  include_dir = "bt/gd"
+  include_dir = "bt/system/gd"
   gen_header = true
 }
 
diff --git a/system/gd/dumpsys/bundler/bundler.gni b/system/gd/dumpsys/bundler/bundler.gni
index 20207d5e5b167239e149ddd501efcd21607d4e1c..2942bbee1dec98fd16ade7fb7b99271ed6d0d8c8 100644
--- a/system/gd/dumpsys/bundler/bundler.gni
+++ b/system/gd/dumpsys/bundler/bundler.gni
@@ -126,7 +126,7 @@ template("bt_flatc_bundler") {
       files_list += [ "${gen_dir}/${name}.files" ]
     }
 
-    script = "//bt/gd/dumpsys/bundler/extract_files_and_call.py"
+    script = "//bt/system/gd/dumpsys/bundler/extract_files_and_call.py"
     binfile = "${root_out_dir}/bluetooth_flatbuffer_bundler"
     args = files_list
     args += [
diff --git a/system/gd/hal/BUILD.gn b/system/gd/hal/BUILD.gn
index 9ed814a7c8c1a1b14a5c43797034d3f072cdb143..4cbeba3ad99b0775e95e26f81b9db0db76d9f41d 100644
--- a/system/gd/hal/BUILD.gn
+++ b/system/gd/hal/BUILD.gn
@@ -17,13 +17,13 @@
 source_set("BluetoothHalSources") {
   sources = [ "snoop_logger.cc" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
 
 source_set("BluetoothHalSources_hci_host") {
   sources = [ "hci_hal_host.cc" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
diff --git a/system/gd/hci/BUILD.gn b/system/gd/hci/BUILD.gn
index c424bbfb4eb87ec8e5854419996f3aa2ee56dfca..034540c49d57ddfbe14aeb0dbb6f3a92276ce9d7 100644
--- a/system/gd/hci/BUILD.gn
+++ b/system/gd/hci/BUILD.gn
@@ -34,12 +34,12 @@ source_set("BluetoothHciSources") {
     "vendor_specific_event_manager.cc",
   ]
 
-  include_dirs = [ "//bt/gd" ]
+  include_dirs = [ "//bt/system/gd" ]
 
   deps = [
-    "//bt:libbt-platform-protos-lite",
-    "//bt/gd:gd_default_deps",
+    "//bt/system:libbt-platform-protos-lite",
+    "//bt/system/gd:gd_default_deps",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
diff --git a/system/gd/l2cap/BUILD.gn b/system/gd/l2cap/BUILD.gn
index f5350f5052b537cf449cea5d2be35a72d30de1d7..5eccbc5864758f47344c37f2142e3746d58af98e 100644
--- a/system/gd/l2cap/BUILD.gn
+++ b/system/gd/l2cap/BUILD.gn
@@ -55,6 +55,6 @@ source_set("BluetoothL2capSources") {
     "le/link_options.cc",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
diff --git a/system/gd/neighbor/BUILD.gn b/system/gd/neighbor/BUILD.gn
index 02e4d79237dbd849f2cb0aa44339b83ba5b1f7a5..696d34c9d1ecdb06f2c2fd75747925119974c1c4 100644
--- a/system/gd/neighbor/BUILD.gn
+++ b/system/gd/neighbor/BUILD.gn
@@ -24,7 +24,7 @@ source_set("BluetoothNeighborSources") {
     "scan.cc",
   ]
 
-  deps = [ "//bt/gd:gd_default_deps" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
 }
diff --git a/system/gd/os/BUILD.gn b/system/gd/os/BUILD.gn
index 2d5f2b34e2c8a4715b077aef89fdf150fa3ada12..790da5ed6b5352d4939ff4d05f8f561067cd19a2 100644
--- a/system/gd/os/BUILD.gn
+++ b/system/gd/os/BUILD.gn
@@ -21,8 +21,8 @@ source_set("BluetoothOsSources_linux") {
     "syslog.cc",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt:libbt-platform-protos-lite" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system:libbt-platform-protos-lite" ]
 }
 
 source_set("BluetoothOsSources_linux_generic") {
@@ -37,6 +37,6 @@ source_set("BluetoothOsSources_linux_generic") {
     "linux_generic/wakelock_manager.cc",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ ":BluetoothOsSources_linux", "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ ":BluetoothOsSources_linux", "//bt/system/gd:gd_default_deps" ]
 }
diff --git a/system/gd/packet/BUILD.gn b/system/gd/packet/BUILD.gn
index 6d786b7c3c8145879ef2d2da28d62fe3f38f928b..11eed8d9a51711dfc209d030ada191086d247408 100644
--- a/system/gd/packet/BUILD.gn
+++ b/system/gd/packet/BUILD.gn
@@ -26,7 +26,7 @@ source_set("BluetoothPacketSources") {
     "view.cc",
   ]
 
-  include_dirs = [ "//bt/gd" ]
+  include_dirs = [ "//bt/system/gd" ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
diff --git a/system/gd/packet/parser/BUILD.gn b/system/gd/packet/parser/BUILD.gn
index dd4f3b097100e7a14870d79d7b30d4035f8e50ef..931d32df724edd6c48398e776715d483b37b1b79 100644
--- a/system/gd/packet/parser/BUILD.gn
+++ b/system/gd/packet/parser/BUILD.gn
@@ -18,7 +18,7 @@ import("flex.gni")
 import("bison.gni")
 
 config("pktgen_configs") {
-  include_dirs = [ "//bt/gd/packet/parser" ]
+  include_dirs = [ "//bt/system/gd/packet/parser" ]
 
   cflags = [ "-fPIC" ]
 
@@ -67,7 +67,7 @@ executable("bluetooth_packetgen") {
     "struct_parser_generator.cc",
   ]
 
-  include_dirs = [ "//bt/gd/packet/parser" ]
+  include_dirs = [ "//bt/system/gd/packet/parser" ]
 
   deps = [
     ":pktlexer",
diff --git a/system/gd/rust/common/BUILD.gn b/system/gd/rust/common/BUILD.gn
index 13ea11380953f44ef20d6f74bdbd554bbc3bf531..80d5a231ed69616fab2a1da11706c64ed9d64a72 100644
--- a/system/gd/rust/common/BUILD.gn
+++ b/system/gd/rust/common/BUILD.gn
@@ -21,15 +21,15 @@ rust_library("libbt_common") {
   sources = [ "src/lib.rs" ]
 
   configs = [
-    "//bt/gd/rust/shim:rust_libs",
-    "//bt/gd:rust_defaults",
+    "//bt/system/gd/rust/shim:rust_libs",
+    "//bt/system/gd:rust_defaults",
   ]
 }
 
 cxxbridge_cc("libbt_common_sys_prop_bridge_code") {
   sources = [ "src/sys_prop.rs" ]
 
-  configs = [ "//bt/gd:gd_defaults" ]
+  configs = [ "//bt/system/gd:gd_defaults" ]
 }
 
 static_library("libbt_common_sys_prop_cxx") {
@@ -39,5 +39,5 @@ static_library("libbt_common_sys_prop_cxx") {
 
   deps = [ ":libbt_common_sys_prop_bridge_code" ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
 }
diff --git a/system/gd/rust/facade/BUILD.gn b/system/gd/rust/facade/BUILD.gn
index 0140825c2f715a4f94f91cf2cc0b315f2008015c..6a15d344cca7d5ca32ca23ce36c9ffd95084218e 100644
--- a/system/gd/rust/facade/BUILD.gn
+++ b/system/gd/rust/facade/BUILD.gn
@@ -20,7 +20,7 @@ rust_library("libbt_facade_helpers") {
   ]
 
   configs = [
-    "//bt/gd/rust/shim:rust_libs",
-    "//bt/gd:rust_defaults",
+    "//bt/system/gd/rust/shim:rust_libs",
+    "//bt/system/gd:rust_defaults",
   ]
 }
diff --git a/system/gd/rust/shim/BUILD.gn b/system/gd/rust/shim/BUILD.gn
index 9402ac25905897060b7e0b61b583366d534ee58a..8def8d50877d39128fa9f44d7886c2152c79cb7e 100644
--- a/system/gd/rust/shim/BUILD.gn
+++ b/system/gd/rust/shim/BUILD.gn
@@ -17,7 +17,7 @@
 import("//common-mk/cxxbridge.gni")
 
 config("rust_shim_config") {
-  include_dirs = [ "//bt/gd/rust/shim" ]
+  include_dirs = [ "//bt/system/gd/rust/shim" ]
 }
 
 cxxbridge_header("shim_bridge_header") {
@@ -29,7 +29,7 @@ cxxbridge_header("shim_bridge_header") {
 cxxbridge_cc("shim_bridge_code") {
   sources = [ "src/bridge.rs" ]
   deps = [ ":shim_bridge_header" ]
-  configs = [ "//bt/gd:gd_defaults" ]
+  configs = [ "//bt/system/gd:gd_defaults" ]
 }
 
 cxxbridge_header("init_flags_bridge_header") {
@@ -41,7 +41,7 @@ cxxbridge_header("init_flags_bridge_header") {
 cxxbridge_cc("init_flags_bridge_code") {
   sources = [ "src/init_flags.rs" ]
   deps = [ ":init_flags_bridge_header" ]
-  configs = [ "//bt/gd:gd_defaults" ]
+  configs = [ "//bt/system/gd:gd_defaults" ]
 }
 
 cxxbridge_header("message_loop_thread_bridge_header") {
@@ -53,7 +53,7 @@ cxxbridge_header("message_loop_thread_bridge_header") {
 cxxbridge_cc("message_loop_thread_bridge_code") {
   sources = [ "src/message_loop_thread.rs" ]
   deps = [ ":message_loop_thread_bridge_header" ]
-  configs = [ "//bt/gd:gd_defaults" ]
+  configs = [ "//bt/system/gd:gd_defaults" ]
 }
 
 cxxbridge_libheader("cxxlibheader") {
diff --git a/system/gd/rust/topshim/BUILD.gn b/system/gd/rust/topshim/BUILD.gn
index bf986cb4b1f581d325de536eaca37b6df3ca31c1..ceb646e14a737987ac1a67a7b41361d25cf058ec 100644
--- a/system/gd/rust/topshim/BUILD.gn
+++ b/system/gd/rust/topshim/BUILD.gn
@@ -18,7 +18,7 @@ import("//common-mk/cxxbridge.gni")
 
 config("rust_topshim_config") {
   include_dirs = [
-    "//bt/gd/rust/topshim"
+    "//bt/system/gd/rust/topshim"
   ]
 }
 
@@ -44,8 +44,8 @@ cxxbridge_cc("btif_bridge_code") {
     "src/profiles/gatt.rs",
     "src/controller.rs",
   ]
-  deps = [":btif_bridge_header", "//bt/gd:BluetoothGeneratedPackets_h"]
-  configs = [ "//bt/gd:gd_defaults" ]
+  deps = [":btif_bridge_header", "//bt/system/gd:BluetoothGeneratedPackets_h"]
+  configs = [ "//bt/system/gd:gd_defaults" ]
 }
 
 source_set("btif_cxx_bridge_code") {
@@ -58,8 +58,8 @@ source_set("btif_cxx_bridge_code") {
     "controller/controller_shim.cc",
   ]
 
-  deps = [":btif_bridge_header", "//bt/gd:BluetoothGeneratedPackets_h"]
-  configs += ["//bt/gd:gd_defaults"]
+  deps = [":btif_bridge_header", "//bt/system/gd:BluetoothGeneratedPackets_h"]
+  configs += ["//bt/system/gd:gd_defaults"]
 }
 
 cxxbridge_libheader("cxxlibheader") {
diff --git a/system/gd/rust/topshim/build.rs b/system/gd/rust/topshim/build.rs
index 420ad5f8d086b1c4a337e77cb98cdfc5e5b156bf..371170395c55094faf887d6cac6418a98d02d416 100644
--- a/system/gd/rust/topshim/build.rs
+++ b/system/gd/rust/topshim/build.rs
@@ -18,7 +18,13 @@ fn main() {
         .collect::<Vec<String>>();
 
     let search_root = env::var("CXX_ROOT_PATH").unwrap();
-    let paths = vec!["/", "/btcore", "/include", "/include/hardware", "/types"];
+    let paths = vec![
+        "/system/",
+        "/system/btcore",
+        "/system/include",
+        "/system/include/hardware",
+        "/system/types",
+    ];
 
     let bt_searches =
         paths.iter().map(|tail| format!("-I{}{}", search_root, tail)).collect::<Vec<String>>();
diff --git a/system/gd/security/BUILD.gn b/system/gd/security/BUILD.gn
index 1280311f874691034a65740f19da0c2bd730e366..02e04bed5572b67e33212a29943b666fb648e68b 100644
--- a/system/gd/security/BUILD.gn
+++ b/system/gd/security/BUILD.gn
@@ -15,20 +15,20 @@
 
 source_set("BluetoothSecurityChannelSources") {
   sources = [ "channel/security_manager_channel.cc" ]
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
 
 source_set("BluetoothSecurityPairingSources") {
   sources = [ "pairing/classic_pairing_handler.cc" ]
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
 
 source_set("BluetoothSecurityRecordSources") {
   sources = [ "record/security_record_storage.cc" ]
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
 
 source_set("BluetoothSecuritySources") {
@@ -50,8 +50,8 @@ source_set("BluetoothSecuritySources") {
     ":BluetoothSecurityChannelSources",
     ":BluetoothSecurityPairingSources",
     ":BluetoothSecurityRecordSources",
-    "//bt/gd:gd_default_deps",
+    "//bt/system/gd:gd_default_deps",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
 }
diff --git a/system/gd/shim/BUILD.gn b/system/gd/shim/BUILD.gn
index 39d46017c299519d41fed1b8dc6bef188558ad60..f7944e7a902842976eb24269de56f316340ab1fe 100644
--- a/system/gd/shim/BUILD.gn
+++ b/system/gd/shim/BUILD.gn
@@ -20,12 +20,12 @@ source_set("BluetoothShimSources") {
   ]
 
   deps = [
-    "//bt/gd/dumpsys:libbluetooth-dumpsys",
-    "//bt/gd/dumpsys/bundler:BluetoothGeneratedBundlerSchema_h_bfbs",
+    "//bt/system/gd/dumpsys:libbluetooth-dumpsys",
+    "//bt/system/gd/dumpsys/bundler:BluetoothGeneratedBundlerSchema_h_bfbs",
   ]
 
   configs += [
-    "//bt/gd:gd_defaults",
-    "//bt:external_flatbuffers",
+    "//bt/system/gd:gd_defaults",
+    "//bt/system:external_flatbuffers",
   ]
 }
diff --git a/system/gd/storage/BUILD.gn b/system/gd/storage/BUILD.gn
index c7864e4bd54958e62e5e3fbfaa4e7f71f9705c0e..9e1db0778eaf4258f365c14eee86337c473120df 100644
--- a/system/gd/storage/BUILD.gn
+++ b/system/gd/storage/BUILD.gn
@@ -27,6 +27,6 @@ source_set("BluetoothStorageSources") {
     "storage_module.cc",
   ]
 
-  configs += [ "//bt/gd:gd_defaults" ]
-  deps = [ "//bt/gd:gd_default_deps" ]
+  configs += [ "//bt/system/gd:gd_defaults" ]
+  deps = [ "//bt/system/gd:gd_default_deps" ]
 }
diff --git a/system/hci/BUILD.gn b/system/hci/BUILD.gn
index b83f9bd29eaebcc7bd65217666f6fc92228936b8..e0debe1387a2acf3798d465bc872bf0976df187a 100644
--- a/system/hci/BUILD.gn
+++ b/system/hci/BUILD.gn
@@ -28,48 +28,48 @@ static_library("hci") {
 
   include_dirs = [
     "include",
-    "//bt/",
-    "//bt/internal_include",
-    "//bt/bta/include",
-    "//bt/btcore/include",
-    "//bt/stack/include",
+    "//bt/system/",
+    "//bt/system/internal_include",
+    "//bt/system/bta/include",
+    "//bt/system/btcore/include",
+    "//bt/system/stack/include",
   ]
 
   deps = [
-    "//bt/common",
+    "//bt/system/common",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 }
 
 if (use.test) {
   executable("net_test_hci") {
     sources = [
-      "//bt/osi/test/AllocationTestHarness.cc",
-      "//bt/osi/test/AlarmTestHarness.cc",
+      "//bt/system/osi/test/AllocationTestHarness.cc",
+      "//bt/system/osi/test/AlarmTestHarness.cc",
       "test/packet_fragmenter_test.cc",
     ]
 
     include_dirs = [
-      "//bt/",
-      "//bt/internal_include",
-      "//bt/btcore/include",
-      "//bt/hci/include",
-      "//bt/osi/test",
-      "//bt/stack/include",
+      "//bt/system/",
+      "//bt/system/internal_include",
+      "//bt/system/btcore/include",
+      "//bt/system/hci/include",
+      "//bt/system/osi/test",
+      "//bt/system/stack/include",
     ]
 
     deps = [
-      "//bt/hci",
-      "//bt/osi",
-      "//bt/btcore",
+      "//bt/system/hci",
+      "//bt/system/osi",
+      "//bt/system/btcore",
     ]
 
     configs += [
-      "//bt:target_defaults",
-      "//bt:external_gtest_main",
+      "//bt/system:target_defaults",
+      "//bt/system:external_gtest_main",
     ]
 
     libs = [
diff --git a/system/main/BUILD.gn b/system/main/BUILD.gn
index 9604f597beda95f4da1e156646d5e85d7605d293..b3ebdc44b5b5c3d890ed0025c01feab1a82b20e2 100644
--- a/system/main/BUILD.gn
+++ b/system/main/BUILD.gn
@@ -23,12 +23,12 @@ static_library("bluetooth-static") {
   complete_static_lib = true
 
   sources = [
-    "//bt/service/hal/bluetooth_interface.cc",
-    "//bt/service/logging_helpers.cc",
+    "//bt/system/service/hal/bluetooth_interface.cc",
+    "//bt/system/service/logging_helpers.cc",
   ]
 
   configs += [
-    "//bt:target_defaults"
+    "//bt/system:target_defaults"
   ]
 
   deps = [
@@ -57,53 +57,53 @@ target(lib_type, "bluetooth") {
   public_configs = [ ":libbluetooth_config" ]
 
   include_dirs = [
-    "//bt/",
-    "//bt/bta/include",
-    "//bt/bta/sys",
-    "//bt/bta/dm",
-    "//bt/btcore/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/stack/l2cap",
-    "//bt/stack/a2dp",
-    "//bt/stack/btm",
-    "//bt/stack/avdt",
-    "//bt/hci",
-    "//bt/hci/include",
-    "//bt/udrv/include",
-    "//bt/btif/include",
-    "//bt/btif/co",
-    "//bt/hci/includ",
-    "//bt/vnd/include",
-    "//bt/brcm/include",
-    "//bt/embdrv/sbc/encoder/include",
-    "//bt/embdrv/sbc/decoder/include",
-    "//bt/utils/include",
-    "//bt/test/suite",
+    "//bt/system/",
+    "//bt/system/bta/include",
+    "//bt/system/bta/sys",
+    "//bt/system/bta/dm",
+    "//bt/system/btcore/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/stack/l2cap",
+    "//bt/system/stack/a2dp",
+    "//bt/system/stack/btm",
+    "//bt/system/stack/avdt",
+    "//bt/system/hci",
+    "//bt/system/hci/include",
+    "//bt/system/udrv/include",
+    "//bt/system/btif/include",
+    "//bt/system/btif/co",
+    "//bt/system/hci/includ",
+    "//bt/system/vnd/include",
+    "//bt/system/brcm/include",
+    "//bt/system/embdrv/sbc/encoder/include",
+    "//bt/system/embdrv/sbc/decoder/include",
+    "//bt/system/utils/include",
+    "//bt/system/test/suite",
   ]
 
   deps = [
-    "//bt/audio_hal_interface",
-    "//bt/bta",
-    "//bt/btcore",
-    "//bt/btif",
-    "//bt/device",
-    "//bt/embdrv/g722",
-    "//bt/embdrv/sbc",
-    "//bt/gd:libbluetooth_gd",
-    "//bt/hci",
-    "//bt/main/shim:LibBluetoothShimSources",
-    "//bt/osi",
-    "//bt/packet",
-    "//bt/stack",
-    "//bt/udrv",
-    "//bt/utils",
+    "//bt/system/audio_hal_interface",
+    "//bt/system/bta",
+    "//bt/system/btcore",
+    "//bt/system/btif",
+    "//bt/system/device",
+    "//bt/system/embdrv/g722",
+    "//bt/system/embdrv/sbc",
+    "//bt/system/gd:libbluetooth_gd",
+    "//bt/system/hci",
+    "//bt/system/main/shim:LibBluetoothShimSources",
+    "//bt/system/osi",
+    "//bt/system/packet",
+    "//bt/system/stack",
+    "//bt/system/udrv",
+    "//bt/system/utils",
   ]
 
   configs += [
-    "//bt:target_defaults",
-    "//bt:external_tinyxml2",
-    "//bt:external_flatbuffers",
+    "//bt/system:target_defaults",
+    "//bt/system:external_tinyxml2",
+    "//bt/system:external_flatbuffers",
   ]
 
   cflags_c = [
diff --git a/system/main/shim/BUILD.gn b/system/main/shim/BUILD.gn
index 5e6485898fef955218892e4c80472002b4f19557..8362dd8c95f2a7a34cca59efdb5451bc194b41ba 100644
--- a/system/main/shim/BUILD.gn
+++ b/system/main/shim/BUILD.gn
@@ -38,29 +38,29 @@ source_set("LibBluetoothShimSources") {
   ]
 
   include_dirs = [
-    "//bt",
-    "//bt/btif/include",
-    "//bt/gd",
-    "//bt/gd/rust/shim",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/types",
+    "//bt/system",
+    "//bt/system/btif/include",
+    "//bt/system/gd",
+    "//bt/system/gd/rust/shim",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/types",
   ]
 
   deps = [
-    "//bt/gd:BluetoothGeneratedDumpsysDataSchema_h",
-    "//bt/gd:BluetoothGeneratedPackets_h",
-    "//bt/gd/common:BluetoothCommonSources",
-    "//bt/gd/dumpsys/bundler:BluetoothGeneratedBundlerSchema_h_bfbs",
-    "//bt/gd/hci:BluetoothHciSources",
-    "//bt/gd/os:BluetoothOsSources_linux_generic",
-    "//bt/gd/packet:BluetoothPacketSources",
-    "//bt/gd/rust/shim:libbluetooth_rust_interop",
-    "//bt/gd/rust/topshim:libbluetooth_topshim",
-    "//bt/osi",
-    "//bt/stack",
-    "//bt/types",
+    "//bt/system/gd:BluetoothGeneratedDumpsysDataSchema_h",
+    "//bt/system/gd:BluetoothGeneratedPackets_h",
+    "//bt/system/gd/common:BluetoothCommonSources",
+    "//bt/system/gd/dumpsys/bundler:BluetoothGeneratedBundlerSchema_h_bfbs",
+    "//bt/system/gd/hci:BluetoothHciSources",
+    "//bt/system/gd/os:BluetoothOsSources_linux_generic",
+    "//bt/system/gd/packet:BluetoothPacketSources",
+    "//bt/system/gd/rust/shim:libbluetooth_rust_interop",
+    "//bt/system/gd/rust/topshim:libbluetooth_topshim",
+    "//bt/system/osi",
+    "//bt/system/stack",
+    "//bt/system/types",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
diff --git a/system/osi/BUILD.gn b/system/osi/BUILD.gn
index 75470b62c8076537580234a5b2ca299fe78c8bdb..ceb30da4963d447c5b72859e0f1246fc3c08b30c 100644
--- a/system/osi/BUILD.gn
+++ b/system/osi/BUILD.gn
@@ -44,20 +44,20 @@ static_library("osi") {
   ]
 
   include_dirs = [
-    "//bt/",
-    "//bt/linux_include",
-    "//bt/internal_include",
-    "//bt/utils/include",
-    "//bt/stack/include",
+    "//bt/system/",
+    "//bt/system/linux_include",
+    "//bt/system/internal_include",
+    "//bt/system/utils/include",
+    "//bt/system/stack/include",
   ]
 
   deps = [
-    "//bt/common",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/common",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 }
 
@@ -82,18 +82,18 @@ if (use.test) {
     ]
 
     include_dirs = [
-      "//bt/",
-      "//bt/osi/test",
+      "//bt/system/",
+      "//bt/system/osi/test",
     ]
 
     deps = [
-      "//bt/osi",
+      "//bt/system/osi",
     ]
 
     configs += [
-      "//bt:external_gtest_main",
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gtest_main",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
 
     libs = [
diff --git a/system/packet/BUILD.gn b/system/packet/BUILD.gn
index cc2c0d8502443fa303ae1ffb0390c0c0ecbfc64a..50c29ec010560db50ce6ccda3ccd3b79d680b7bb 100644
--- a/system/packet/BUILD.gn
+++ b/system/packet/BUILD.gn
@@ -16,14 +16,14 @@
 
 config("packet_config") {
   include_dirs = [
-    "//bt/",
-    "//bt/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/profile/avrcp",
+    "//bt/system/",
+    "//bt/system/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/profile/avrcp",
   ]
 
-  configs = [ "//bt:target_defaults" ]
+  configs = [ "//bt/system:target_defaults" ]
 }
 
 static_library("packet") {
@@ -81,12 +81,12 @@ if (use.test) {
     ]
 
     include_dirs = [
-      "//bt/packet/avrcp",
-      "//bt/packet/base",
-      "//bt/packet/include",
-      "//bt/packet/tests",
-      "//bt/packet/tests/avrcp",
-      "//bt/packet/tests/base",
+      "//bt/system/packet/avrcp",
+      "//bt/system/packet/base",
+      "//bt/system/packet/include",
+      "//bt/system/packet/tests",
+      "//bt/system/packet/tests/avrcp",
+      "//bt/system/packet/tests/base",
     ]
 
     deps = [
@@ -95,7 +95,7 @@ if (use.test) {
 
     configs += [
       ":packet_config",
-      "//bt:external_gmock_main",
+      "//bt/system:external_gmock_main",
     ]
   }
 }
diff --git a/system/profile/avrcp/BUILD.gn b/system/profile/avrcp/BUILD.gn
index 5e54fff6041cc708b553487a36b2a36adb432b23..63bc97c05eb6ccb6a3d0c2802e2df8a1a422f1fc 100644
--- a/system/profile/avrcp/BUILD.gn
+++ b/system/profile/avrcp/BUILD.gn
@@ -16,17 +16,17 @@
 
 config("avrcp_config") {
   include_dirs = [
-    "//bt/",
-    "//bt/btcore/include",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/profile/avrcp",
-    "//bt/packet",
-    "//bt/packet/include",
-    "//bt/include/hardware/avrcp",
+    "//bt/system/",
+    "//bt/system/btcore/include",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/profile/avrcp",
+    "//bt/system/packet",
+    "//bt/system/packet/include",
+    "//bt/system/include/hardware/avrcp",
   ]
 
-  configs = ["//bt:target_defaults"]
+  configs = ["//bt/system:target_defaults"]
 }
 
 static_library("profile_avrcp") {
@@ -36,7 +36,7 @@ static_library("profile_avrcp") {
   ]
 
   deps = [
-    "//bt/gd/rust/shim:message_loop_thread_bridge_header",
+    "//bt/system/gd/rust/shim:message_loop_thread_bridge_header",
   ]
 
   configs += [
@@ -53,14 +53,14 @@ if (use.test) {
 
     deps = [
       ":profile_avrcp",
-      "//bt/device:device",
-      "//bt/osi:osi",
-      "//bt/packet:packet",
-      "//bt/types:types",
+      "//bt/system/device:device",
+      "//bt/system/osi:osi",
+      "//bt/system/packet:packet",
+      "//bt/system/types:types",
     ]
 
     configs += [
-      "//bt:external_gmock_main",
+      "//bt/system:external_gmock_main",
       ":avrcp_config",
     ]
   }
diff --git a/system/service/BUILD.gn b/system/service/BUILD.gn
index 83f92d34872c3521aeba3c8bd7c571df6eaa3546..71ecdff87b84101256e9fa8efc4647490c12bb5a 100644
--- a/system/service/BUILD.gn
+++ b/system/service/BUILD.gn
@@ -16,14 +16,14 @@
 
 config("service_config") {
   include_dirs = [
-    "//bt/",
-    "//bt/linux_include",
-    "//bt/include",
-    "//bt/service",
-    "//bt/service/common",
+    "//bt/system/",
+    "//bt/system/linux_include",
+    "//bt/system/include",
+    "//bt/system/service",
+    "//bt/system/service/common",
   ]
 
-  configs = [ "//bt:target_defaults" ]
+  configs = [ "//bt/system:target_defaults" ]
 }
 
 source_set("service_daemon_src") {
@@ -51,9 +51,9 @@ source_set("service_daemon_src") {
   ]
 
   deps = [
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/osi",
-    "//bt/types",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/osi",
+    "//bt/system/types",
   ]
 
   configs += [ ":service_config" ]
@@ -68,9 +68,9 @@ source_set("service_linux_src") {
   ]
 
   deps = [
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/osi",
-    "//bt/types",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/osi",
+    "//bt/system/types",
   ]
 
   configs += [ ":service_config" ]
@@ -98,9 +98,9 @@ static_library("service") {
   deps = [
     ":service_daemon_src",
     ":service_linux_src",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/osi",
-    "//bt/types",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/osi",
+    "//bt/system/types",
   ]
 
   configs += [ ":service_config" ]
@@ -111,8 +111,8 @@ executable("bluetoothtbd") {
 
   deps = [
     ":service",
-    "//bt/btcore",
-    "//bt/main:bluetooth",
+    "//bt/system/btcore",
+    "//bt/system/main:bluetooth",
   ]
 
   configs += [ ":service_config" ]
@@ -160,11 +160,11 @@ if (use.test) {
       ":service_base_test_src",
       ":service_daemon_src",
       ":service_linux_src",
-      "//bt/service/common:libbluetooth_common",
+      "//bt/system/service/common:libbluetooth_common",
     ]
 
     configs += [
-      "//bt:external_gmock_main",
+      "//bt/system:external_gmock_main",
       ":service_config",
     ]
   }
diff --git a/system/service/common/BUILD.gn b/system/service/common/BUILD.gn
index 2aee90b64d0036c8ac9fafb6ca61fdc063594991..06101d766468d47e51cc327cf1b0046df1e3238d 100644
--- a/system/service/common/BUILD.gn
+++ b/system/service/common/BUILD.gn
@@ -35,8 +35,8 @@ source_set("libbluetooth_common") {
 
   include_dirs = [
     ".",
-    "//bt",
+    "//bt/system",
   ]
 
-  configs += ["//bt:target_defaults"]
+  configs += ["//bt/system:target_defaults"]
 }
diff --git a/system/stack/BUILD.gn b/system/stack/BUILD.gn
index a0c1b6be410f50c00ca5e0780df5e6503eec8d40..56eb989e58461d662b6b0aaca78d399f571d3d57 100644
--- a/system/stack/BUILD.gn
+++ b/system/stack/BUILD.gn
@@ -21,9 +21,9 @@ static_library("crypto_toolbox") {
     "crypto_toolbox/crypto_toolbox.cc",
   ]
 
-  include_dirs = [ "//bt/" ]
+  include_dirs = [ "//bt/system/" ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
 
 source_set("nonstandard_codecs") {
@@ -44,20 +44,20 @@ source_set("nonstandard_codecs") {
     ]
 
     include_dirs = [
-      "//bt",
-      "//bt/bta/include",
-      "//bt/btif/include",
-      "//bt/internal_include",
-      "//bt/stack/include",
-      "//bt/utils/include",
+      "//bt/system",
+      "//bt/system/bta/include",
+      "//bt/system/btif/include",
+      "//bt/system/internal_include",
+      "//bt/system/stack/include",
+      "//bt/system/utils/include",
     ]
 
-    deps = [ "//bt/gd/rust/shim:init_flags_bridge_header" ]
+    deps = [ "//bt/system/gd/rust/shim:init_flags_bridge_header" ]
 
     configs += [
-      "//bt:target_defaults",
-      "//bt:external_libldac",
-      "//bt:external_aac",
+      "//bt/system:target_defaults",
+      "//bt/system:external_libldac",
+      "//bt/system:external_aac",
     ]
   }
 }
@@ -202,34 +202,34 @@ source_set("stack") {
     "sdp",
     "smp",
     "srvc",
-    "//bt/types",
-    "//bt/linux_include",
-    "//bt/internal_include",
-    "//bt/btcore/include",
-    "//bt/vnd/include",
-    "//bt/vnd/ble",
-    "//bt/btif/include",
-    "//bt/hci/include",
-    "//bt/udrv/include",
-    "//bt/rpc/include",
-    "//bt/hcis",
-    "//bt/ctrlr/include",
-    "//bt/bta/include",
-    "//bt/bta/sys",
-    "//bt/utils/include",
-    "//bt/",
+    "//bt/system/types",
+    "//bt/system/linux_include",
+    "//bt/system/internal_include",
+    "//bt/system/btcore/include",
+    "//bt/system/vnd/include",
+    "//bt/system/vnd/ble",
+    "//bt/system/btif/include",
+    "//bt/system/hci/include",
+    "//bt/system/udrv/include",
+    "//bt/system/rpc/include",
+    "//bt/system/hcis",
+    "//bt/system/ctrlr/include",
+    "//bt/system/bta/include",
+    "//bt/system/bta/sys",
+    "//bt/system/utils/include",
+    "//bt/system/",
   ]
 
   deps = [
     ":crypto_toolbox",
     ":nonstandard_codecs",
-    "//bt:libbt-platform-protos-lite",
-    "//bt/gd/rust/shim:init_flags_bridge_header",
-    "//bt/types",
-    "//bt/types",
+    "//bt/system:libbt-platform-protos-lite",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/types",
+    "//bt/system/types",
   ]
 
-  configs += [ "//bt:target_defaults" ]
+  configs += [ "//bt/system:target_defaults" ]
 }
 
 if (use.test) {
@@ -246,18 +246,18 @@ if (use.test) {
       "btm",
       "include",
       "test/common",
-      "//bt/internal_include",
-      "//bt/packet/tests",
+      "//bt/system/internal_include",
+      "//bt/system/packet/tests",
     ]
 
     deps = [
-      "//bt/common",
-      "//bt/osi",
+      "//bt/system/common",
+      "//bt/system/osi",
     ]
 
     configs += [
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 }
@@ -271,20 +271,20 @@ if (defined(use.android) && use.android) {
 
     include_dirs = [
       "include",
-      "//bt/",
-      "//bt/bta/eatt",
-      "//bt/bta/include",
-      "//bt/bta/sys",
-      "//bt/btcore/include",
-      "//bt/embdrv/sbc/encoder/include",
-      "//bt/hci/include",
-      "//bt/internal_include",
-      "//bt/stack/a2dp",
-      "//bt/stack/btm",
-      "//bt/stack/include",
-      "//bt/udrv/include",
-      "//bt/utils/include",
-      "//bt/vnd/include",
+      "//bt/system/",
+      "//bt/system/bta/eatt",
+      "//bt/system/bta/include",
+      "//bt/system/bta/sys",
+      "//bt/system/btcore/include",
+      "//bt/system/embdrv/sbc/encoder/include",
+      "//bt/system/hci/include",
+      "//bt/system/internal_include",
+      "//bt/system/stack/a2dp",
+      "//bt/system/stack/btm",
+      "//bt/system/stack/include",
+      "//bt/system/udrv/include",
+      "//bt/system/utils/include",
+      "//bt/system/vnd/include",
     ]
 
     libs = [
@@ -297,33 +297,33 @@ if (defined(use.android) && use.android) {
 
     deps = [
       ":stack",
-      "//bt/btcore",
-      "//bt/device",
-      "//bt/embdrv/g722",
-      "//bt/embdrv/sbc",
-      "//bt/hci",
-      "//bt/main:bluetooth",
-      "//bt/osi",
-      "//bt/types",
+      "//bt/system/btcore",
+      "//bt/system/device",
+      "//bt/system/embdrv/g722",
+      "//bt/system/embdrv/sbc",
+      "//bt/system/hci",
+      "//bt/system/main:bluetooth",
+      "//bt/system/osi",
+      "//bt/system/types",
     ]
 
     configs += [
-      "//bt:external_tinyxml2",
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_tinyxml2",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 
   executable("net_test_stack_crypto_toolbox") {
     sources = [ "test/crypto_toolbox_test.cc" ]
 
-    include_dirs = [ "//bt/" ]
+    include_dirs = [ "//bt/system/" ]
 
     deps = [ ":crypto_toolbox" ]
 
     configs += [
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 
@@ -340,25 +340,25 @@ if (defined(use.android) && use.android) {
     ]
 
     include_dirs = [
-      "//bt/",
-      "//bt/linux_include",
-      "//bt/internal_include",
-      "//bt/btcore/include",
-      "//bt/hci/include",
-      "//bt/utils/include",
-      "//bt/bta/include",
-      "//bt/bta/sys",
-      "//bt/btcore/include",
-      "//bt/embdrv/sbc/encoder/include",
-      "//bt/hci/include",
-      "//bt/internal_include",
-      "//bt/stack/a2dp",
-      "//bt/stack/l2cap",
-      "//bt/stack/btm",
-      "//bt/stack/include",
-      "//bt/udrv/include",
-      "//bt/utils/include",
-      "//bt/vnd/include",
+      "//bt/system/",
+      "//bt/system/linux_include",
+      "//bt/system/internal_include",
+      "//bt/system/btcore/include",
+      "//bt/system/hci/include",
+      "//bt/system/utils/include",
+      "//bt/system/bta/include",
+      "//bt/system/bta/sys",
+      "//bt/system/btcore/include",
+      "//bt/system/embdrv/sbc/encoder/include",
+      "//bt/system/hci/include",
+      "//bt/system/internal_include",
+      "//bt/system/stack/a2dp",
+      "//bt/system/stack/l2cap",
+      "//bt/system/stack/btm",
+      "//bt/system/stack/include",
+      "//bt/system/udrv/include",
+      "//bt/system/utils/include",
+      "//bt/system/vnd/include",
     ]
 
     libs = [
@@ -371,14 +371,14 @@ if (defined(use.android) && use.android) {
 
     deps = [
       ":crypto_toolbox",
-      "//bt/osi",
-      "//bt/types",
+      "//bt/system/osi",
+      "//bt/system/types",
     ]
 
     configs += [
-      "//bt:external_tinyxml2",
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_tinyxml2",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 
@@ -390,11 +390,11 @@ if (defined(use.android) && use.android) {
 
     include_dirs = [
       "include",
-      "//bt/",
-      "//bt/btcore/include",
-      "//bt/hci/include",
-      "//bt/internal_include",
-      "//bt/stack/btm",
+      "//bt/system/",
+      "//bt/system/btcore/include",
+      "//bt/system/hci/include",
+      "//bt/system/internal_include",
+      "//bt/system/stack/btm",
     ]
 
     libs = [
@@ -405,11 +405,11 @@ if (defined(use.android) && use.android) {
       "z",
     ]
 
-    deps = [ "//bt/types" ]
+    deps = [ "//bt/system/types" ]
 
     configs += [
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 }
diff --git a/system/test/suite/BUILD.gn b/system/test/suite/BUILD.gn
index 20b65d0aa7607784347b5a0f036f95ac5468cf75..aad70a45b3e39eb95df8b71c53465f4f9f2f0038 100644
--- a/system/test/suite/BUILD.gn
+++ b/system/test/suite/BUILD.gn
@@ -22,22 +22,22 @@ if (defined(use.android) && use.android) {
     ]
 
     include_dirs = [
-      "//bt",
-      "//bt/test/suite",
+      "//bt/system",
+      "//bt/system/test/suite",
     ]
 
     deps = [
-      "//bt/btcore",
-      "//bt/main:bluetooth",
-      "//bt/service:service",
-      "//bt/service:service_unittests",
-      "//bt/types:types_unittests",
-      "//bt/osi",
+      "//bt/system/btcore",
+      "//bt/system/main:bluetooth",
+      "//bt/system/service:service",
+      "//bt/system/service:service_unittests",
+      "//bt/system/types:types_unittests",
+      "//bt/system/osi",
     ]
 
     configs += [
-      "//bt:target_defaults",
-      "//bt:external_gtest_main",
+      "//bt/system:target_defaults",
+      "//bt/system:external_gtest_main",
     ]
 
     libs = [
diff --git a/system/types/BUILD.gn b/system/types/BUILD.gn
index 08a47b6484307f7e78b44062d4a3f24463aa7b44..407c12b9eeab2d75ec654093cc22b0e3455f75f6 100644
--- a/system/types/BUILD.gn
+++ b/system/types/BUILD.gn
@@ -26,11 +26,11 @@ static_library("types") {
   ]
 
   include_dirs = [
-    "//bt/",
+    "//bt/system/",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 }
 
@@ -43,7 +43,7 @@ if (use.test) {
     ]
 
     include_dirs = [
-      "//bt/",
+      "//bt/system/",
     ]
 
     libs = [
@@ -66,8 +66,8 @@ if (use.test) {
     ]
 
     configs += [
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 }
diff --git a/system/udrv/BUILD.gn b/system/udrv/BUILD.gn
index 87868bf5ccfcaf2c0af41e85da773d8b501b8e00..711e4d0311b69feb22996393f7939091bfcc3c41 100644
--- a/system/udrv/BUILD.gn
+++ b/system/udrv/BUILD.gn
@@ -22,17 +22,17 @@ source_set("udrv") {
   include_dirs = [
     "include",
     "uipc",
-    "//bt/",
-    "//bt/internal_include",
-    "//bt/stack/include",
-    "//bt/utils/include",
+    "//bt/system/",
+    "//bt/system/internal_include",
+    "//bt/system/stack/include",
+    "//bt/system/utils/include",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 
   deps = [
-    "//bt/gd:gd_default_deps"
+    "//bt/system/gd:gd_default_deps"
   ]
 }
diff --git a/system/utils/BUILD.gn b/system/utils/BUILD.gn
index 23bc66054e67f53bd96a495c3b6b381974106cb1..2c19192ab695f4d86d4cec29cfaa26ee2e754c4a 100644
--- a/system/utils/BUILD.gn
+++ b/system/utils/BUILD.gn
@@ -21,15 +21,15 @@ static_library("utils") {
 
   include_dirs = [
     "include",
-    "//bt/",
-    "//bt/stack/include",
+    "//bt/system/",
+    "//bt/system/stack/include",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 
   deps = [
-    "//bt/gd/rust/shim:init_flags_bridge_header",
+    "//bt/system/gd/rust/shim:init_flags_bridge_header",
   ]
 }
diff --git a/system/vendor_libs/test_vendor_lib/types/BUILD.gn b/system/vendor_libs/test_vendor_lib/types/BUILD.gn
index f5f7e1e7c5ee2e78332af024a91c07576b1e96e3..8629d3be76c3ae915490f40766d1261f996b0078 100644
--- a/system/vendor_libs/test_vendor_lib/types/BUILD.gn
+++ b/system/vendor_libs/test_vendor_lib/types/BUILD.gn
@@ -26,11 +26,11 @@ static_library("types") {
   ]
 
   include_dirs = [
-    "//bt",
+    "//bt/system",
   ]
 
   configs += [
-    "//bt:target_defaults",
+    "//bt/system:target_defaults",
   ]
 }
 
@@ -42,7 +42,7 @@ if (use.test) {
     ]
 
     include_dirs = [
-      "//bt",
+      "//bt/system",
     ]
 
     libs = [
@@ -54,12 +54,12 @@ if (use.test) {
     ]
 
     deps = [
-      "//bt/types",
+      "//bt/system/types",
     ]
 
     configs += [
-      "//bt:external_gmock_main",
-      "//bt:target_defaults",
+      "//bt/system:external_gmock_main",
+      "//bt/system:target_defaults",
     ]
   }
 }