diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
index 74b7c3142b06876e4ffd041b775273d43340eaf6..7653bbb59505e7c56fcaa0eb880e6caa114613ce 100755
--- a/.vscode/c_cpp_properties.json
+++ b/.vscode/c_cpp_properties.json
@@ -2,11 +2,10 @@
     "env": {
         "defaultDefines": [
             "_MIOSIX",
-            "DEBUG",
-            "__cplusplus=201402L"
+            "DEBUG"
         ],
         "defaultIncludePaths": [
-            "${workspaceFolder}/skyward-boardcore/libs/Catch2/include",
+            "${workspaceFolder}/skyward-boardcore/libs/Catch2/single_include",
             "${workspaceFolder}/skyward-boardcore/libs/eigen",
             "${workspaceFolder}/skyward-boardcore/libs/fmt/include",
             "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
@@ -18,32 +17,11 @@
             "${workspaceFolder}/skyward-boardcore/src/shared",
             "${workspaceFolder}/skyward-boardcore/src/tests",
             "${workspaceFolder}/src/boards",
+            "${workspaceFolder}/src/tests",
             "${workspaceFolder}/src"
         ]
     },
     "configurations": [
-        {
-            "name": "stm32f205rc_skyward_ciuti",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f205RC_skyward_ciuti",
-                "_BOARD_STM32F205RC_SKYWARD_CIUTI",
-                "_ARCH_CORTEXM3_STM32F2",
-                "STM32F205xx",
-                "HSE_VALUE=25000000",
-                "SYSCLK_FREQ_120MHz=120000000",
-                "V_DDA_VOLTAGE=3.3f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM3_stm32f2/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM3_stm32f2/stm32f205rc_skyward_ciuti",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM3_stm32f2/stm32f205rc_skyward_ciuti"
-            ]
-        },
         {
             "name": "stm32f407vg_stm32f4discovery",
             "cStandard": "c11",
@@ -63,41 +41,19 @@
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery"
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f407vg_stm32f4discovery",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/default/"
             ]
         },
         {
-            "name": "stm32f429zi_hre_test_stand",
+            "name": "stm32f429zi_death_stack_v3",
             "cStandard": "c11",
             "cppStandard": "c++14",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
                 "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_hre_test_stand",
-                "_BOARD_STM32F429ZI_HRE_TEST_STAND",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.0f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_hre_test_stand",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_hre_test_stand"
-            ]
-        },
-        {
-            "name": "stm32f429zi_skyward_death_stack_v3",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_death_stack_v3",
-                "_BOARD_STM32F429ZI_SKYWARD_DEATHST_X",
+                "_MIOSIX_BOARDNAME=stm32f429zi_death_stack_v3",
+                "_BOARD_STM32F429ZI_DEATH_STACK_V3",
                 "_ARCH_CORTEXM4_STM32F4",
                 "STM32F429xx",
                 "HSE_VALUE=8000000",
@@ -108,8 +64,7 @@
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f429zi_death_stack_v3/**"
             ]
         },
         {
@@ -122,63 +77,23 @@
                 "_MIOSIX_BOARDNAME=stm32f767zi_compute_unit",
                 "_BOARD_STM32F767ZI_COMPUTE_UNIT",
                 "_ARCH_CORTEXM7_STM32F7",
-                "STM32F769xx",
+                "STM32F767xx",
                 "HSE_VALUE=25000000",
                 "SYSCLK_FREQ_216MHz=216000000",
                 "__ENABLE_XRAM",
                 "V_DDA_VOLTAGE=3.3f"
             ],
             "includePath": [
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix",
-                "${workspaceFolder}/skyward-boardcore/libs/Catch2/single_include",
-                "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                "${workspaceFolder}/skyward-boardcore/libs/fmt/include",
-                "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                "${workspaceFolder}/skyward-boardcore/libs",
-                "${workspaceFolder}/skyward-boardcore/src/shared",
-                "${workspaceFolder}/skyward-boardcore/src/tests",
-                "${workspaceFolder}/src/hardware_in_the_loop",
-                "${workspaceFolder}/src/boards",
-                "${workspaceFolder}/src/tests",
-                "${workspaceFolder}/src"
-            ],
-            "browse": {
-                "path": [
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/stdlib_integration",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/interfaces",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/filesystem",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/kernel",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/util",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/e20",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/*",
-                    "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                    "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                    "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                    "${workspaceFolder}/skyward-boardcore/libs/mxgui",
-                    "${workspaceFolder}/skyward-boardcore/libs/fmt",
-                    "${workspaceFolder}/skyward-boardcore/src/shared",
-                    "${workspaceFolder}/skyward-boardcore/src/tests",
-                    "${workspaceFolder}/src/hardware_in_the_loop",
-                    "${workspaceFolder}/src/boards",
-                    "${workspaceFolder}/src/tests"
-                ],
-                "limitSymbolsToIncludedHeaders": true
-            }
+                "${defaultIncludePaths}",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_compute_unit/**"
+            ]
         },
         {
             "name": "stm32f767zi_compute_unit_HIL",
             "cStandard": "c11",
             "cppStandard": "c++14",
-            "compilerPath": "C://arm-miosix-eabi/bin/arm-miosix-eabi-g++",
+            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
                 "{defaultDefines}",
                 "_MIOSIX_BOARDNAME=stm32f767zi_compute_unit",
@@ -192,173 +107,54 @@
                 "HILTest"
             ],
             "includePath": [
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix",
-                "${workspaceFolder}/skyward-boardcore/libs/Catch2/single_include",
-                "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                "${workspaceFolder}/skyward-boardcore/libs/fmt/include",
-                "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                "${workspaceFolder}/skyward-boardcore/libs",
-                "${workspaceFolder}/skyward-boardcore/src/shared",
-                "${workspaceFolder}/skyward-boardcore/src/tests",
-                "${workspaceFolder}/src/hardware_in_the_loop",
-                "${workspaceFolder}/src/boards",
-                "${workspaceFolder}/src/tests",
-                "${workspaceFolder}/src"
-            ],
-            "browse": {
-                "path": [
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_v3",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/stdlib_integration",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/interfaces",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/filesystem",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/kernel",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/util",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/e20",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/*",
-                    "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                    "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                    "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                    "${workspaceFolder}/skyward-boardcore/libs/mxgui",
-                    "${workspaceFolder}/skyward-boardcore/libs/fmt",
-                    "${workspaceFolder}/skyward-boardcore/src/shared",
-                    "${workspaceFolder}/skyward-boardcore/src/tests",
-                    "${workspaceFolder}/src/hardware_in_the_loop",
-                    "${workspaceFolder}/src/boards",
-                    "${workspaceFolder}/src/tests"
-                ],
-                "limitSymbolsToIncludedHeaders": true
-            }
+                "${defaultIncludePaths}",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_compute_unit/**",
+                "${workspaceFolder}/src/hardware_in_the_loop"
+            ]
         },
         {
-            "name": "stm32f767zi_skyward_death_stack_v4",
+            "name": "stm32f767zi_death_stack_v4",
             "cStandard": "c11",
             "cppStandard": "c++14",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
                 "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_death_stack_v4",
-                "_BOARD_STM32F429ZI_SKYWARD_DEATHST_V4",
                 "_ARCH_CORTEXM7_STM32F7",
-                "_BOARD_STM32F767ZI_SKYWARD_DEATHST_V4",
-                "_MIOSIX_BOARDNAME=stm32f767zi_skyward_death_stack_v4",
+                "_BOARD_STM32F767ZI_DEATH_STACK_V4",
+                "_MIOSIX_BOARDNAME=stm32f767zi_death_stack_v4",
                 "HSE_VALUE=8000000",
                 "SYSCLK_FREQ_168MHz=168000000",
-                "_MIOSIX",
-                "__cplusplus=201402L",
-                "HILSimulation",
                 "ROCCARASO"
             ],
             "includePath": [
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
+                "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix",
-                "${workspaceFolder}/skyward-boardcore/libs/Catch2/single_include",
-                "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                "${workspaceFolder}/skyward-boardcore/libs/fmt/include",
-                "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                "${workspaceFolder}/skyward-boardcore/libs",
-                "${workspaceFolder}/skyward-boardcore/src/shared",
-                "${workspaceFolder}/skyward-boardcore/src/tests",
-                "${workspaceFolder}/src/boards",
-                "${workspaceFolder}/src",
-                "${workspaceFolder}/src/hardware_in_the_loop"
-            ],
-            "browse": {
-                "path": [
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/stdlib_integration",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/interfaces",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/filesystem",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/kernel",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/util",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/e20",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/*",
-                    "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                    "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                    "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                    "${workspaceFolder}/skyward-boardcore/libs/mxgui",
-                    "${workspaceFolder}/skyward-boardcore/libs/fmt",
-                    "${workspaceFolder}/skyward-boardcore/src/shared",
-                    "${workspaceFolder}/skyward-boardcore/src/tests",
-                    "${workspaceFolder}/src/boards"
-                ],
-                "limitSymbolsToIncludedHeaders": true
-            }
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_death_stack_v4/**"
+            ]
         },
         {
-            "name": "stm32f767zi_skyward_death_stack_v4_HIL",
+            "name": "stm32f767zi_death_stack_v4_HIL",
             "cStandard": "c11",
             "cppStandard": "c++14",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
-                "DEBUG",
+                "{defaultDefines}",
                 "_ARCH_CORTEXM7_STM32F7",
-                "_BOARD_STM32F767ZI_SKYWARD_DEATHST_V4",
-                "_MIOSIX_BOARDNAME=stm32f767zi_skyward_death_stack_v4",
+                "_BOARD_STM32F767ZI_DEATH_STACK_V4",
+                "_MIOSIX_BOARDNAME=stm32f767zi_death_stack_v4",
                 "HSE_VALUE=8000000",
                 "SYSCLK_FREQ_168MHz=168000000",
-                "_MIOSIX",
-                "__cplusplus=201103L",
-                "HILSimulation",
                 "ROCCARASO",
+                "HILSimulation",
                 "HILMain"
             ],
             "includePath": [
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
+                "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix",
-                "${workspaceFolder}/skyward-boardcore/libs/Catch2/single_include",
-                "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                "${workspaceFolder}/skyward-boardcore/libs/fmt/include",
-                "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                "${workspaceFolder}/skyward-boardcore/libs",
-                "${workspaceFolder}/skyward-boardcore/src/shared",
-                "${workspaceFolder}/skyward-boardcore/src/tests",
-                "${workspaceFolder}/src/boards",
-                "${workspaceFolder}/src",
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_death_stack_v4/**",
                 "${workspaceFolder}/src/hardware_in_the_loop"
-            ],
-            "browse": {
-                "path": [
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/stdlib_integration",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/interfaces",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/filesystem",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/kernel",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/util",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/e20",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/*",
-                    "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                    "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                    "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                    "${workspaceFolder}/skyward-boardcore/libs/mxgui",
-                    "${workspaceFolder}/skyward-boardcore/libs/fmt",
-                    "${workspaceFolder}/skyward-boardcore/src/shared",
-                    "${workspaceFolder}/skyward-boardcore/src/tests",
-                    "${workspaceFolder}/src/boards"
-                ],
-                "limitSymbolsToIncludedHeaders": true
-            }
+            ]
         },
         {
             "name": "stm32f429zi_skyward_pyxis_auxiliary",
@@ -366,184 +162,51 @@
             "cppStandard": "c++14",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
-                "DEBUG",
-                "_ARCH_CORTEXM4_STM32F4",
-                "_BOARD_STM32F429ZI_SKYWARD_PYXIS_AUXILIARY",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_pyxis_auxiliary",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "_MIOSIX",
-                "__cplusplus=201103L"
-            ],
-            "includePath": [
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_pyxis_auxiliary",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_pyxis_auxiliary",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix",
-                "${workspaceFolder}/skyward-boardcore/libs/Catch2/single_include",
-                "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                "${workspaceFolder}/skyward-boardcore/libs/fmt/include",
-                "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                "${workspaceFolder}/skyward-boardcore/libs",
-                "${workspaceFolder}/skyward-boardcore/src/shared",
-                "${workspaceFolder}/skyward-boardcore/src/tests",
-                "${workspaceFolder}/src/hardware_in_the_loop",
-                "${workspaceFolder}/src/boards",
-                "${workspaceFolder}/src/tests",
-                "${workspaceFolder}/src"
-            ],
-            "browse": {
-                "path": [
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_pyxis_auxiliary",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_pyxis_auxiliary",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/stdlib_integration",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/common",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/interfaces",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/filesystem",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/kernel",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/util",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/e20",
-                    "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/*",
-                    "${workspaceFolder}/skyward-boardcore/libs/mavlink-skyward-lib",
-                    "${workspaceFolder}/skyward-boardcore/libs/eigen",
-                    "${workspaceFolder}/skyward-boardcore/libs/tscpp",
-                    "${workspaceFolder}/skyward-boardcore/libs/mxgui",
-                    "${workspaceFolder}/skyward-boardcore/libs/fmt",
-                    "${workspaceFolder}/skyward-boardcore/src/shared",
-                    "${workspaceFolder}/skyward-boardcore/src/tests",
-                    "${workspaceFolder}/src/hardware_in_the_loop",
-                    "${workspaceFolder}/src/boards",
-                    "${workspaceFolder}/src/tests"
-                ],
-                "limitSymbolsToIncludedHeaders": true
-            }
-        },
-        {
-            "name": "stm32f205rc_skyward_ciuti",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "DEBUG",
-                "_ARCH_CORTEXM3_STM32F2",
-                "_BOARD_STM32F205RC_SKYWARD_CIUTI",
-                "_MIOSIX_BOARDNAME=stm32f205RC_skyward_ciuti",
-                "HSE_VALUE=25000000",
-                "SYSCLK_FREQ_216MHz=216000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.3f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_skyward_death_stack_v4",
-            ],
-        },
-        {
-            "name": "stm32f429zi_skyward_death_stack_x",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_death_stack_x",
-                "_BOARD_STM32F429ZI_SKYWARD_DEATHST_X",
+                "${defaultDefines}",
                 "_ARCH_CORTEXM4_STM32F4",
+                "_BOARD_STM32F429ZI_PYXIS_AUXILIARY",
+                "_MIOSIX_BOARDNAME=stm32f429zi_pyxis_auxiliary",
                 "STM32F429xx",
                 "HSE_VALUE=8000000",
                 "SYSCLK_FREQ_168MHz=168000000",
-                "__ENABLE_XRAM",
                 "V_DDA_VOLTAGE=3.3f"
             ],
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_x",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_x"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f429zi_pyxis_auxiliary/**"
             ]
         },
         {
-            "name": "stm32f429zi_skyward_death_stack_x_maker_faire",
+            "name": "stm32f205rc_ciuti",
             "cStandard": "c11",
             "cppStandard": "c++14",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_death_stack_x_maker_faire",
-                "_BOARD_STM32F429ZI_SKYWARD_DEATHST_X_MAKER_FAIRE",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
+                "${defaultDefines}",
+                "_ARCH_CORTEXM3_STM32F2",
+                "_BOARD_STM32F205RC_CIUTI",
+                "_MIOSIX_BOARDNAME=stm32f205RC_ciuti",
+                "HSE_VALUE=25000000",
+                "SYSCLK_FREQ_216MHz=216000000",
                 "__ENABLE_XRAM",
                 "V_DDA_VOLTAGE=3.3f"
             ],
             "includePath": [
                 "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_x_maker_faire",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_death_stack_x_maker_faire"
-            ]
-        },
-        {
-            "name": "stm32f429zi_skyward_groundstation",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_groundstation",
-                "_BOARD_STM32F429ZI_SKYWARD_GS",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.0f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation"
-            ]
-        },
-        {
-            "name": "stm32f429zi_skyward_groundstation_parafoil",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_groundstation_parafoil",
-                "D_BOARD_STM32F429ZI_SKYWARD_GS_PARAFOIL",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.0f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation_parafoil",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation_parafoil"
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM3_stm32f2/common",
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f205rc_ciuti/**"
             ]
         },
         {
-            "name": "stm32f429zi_skyward_groundstation_v2",
+            "name": "stm32f429zi_parafoil",
             "cStandard": "c11",
             "cppStandard": "c++14",
             "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
                 "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_groundstation_v2",
-                "_BOARD_STM32F429ZI_SKYWARD_GS_V2",
+                "_MIOSIX_BOARDNAME=stm32f429zi_parafoil",
+                "_BOARD_STM32F429ZI_PARAFOIL",
                 "_ARCH_CORTEXM4_STM32F4",
                 "STM32F429xx",
                 "HSE_VALUE=8000000",
@@ -554,19 +217,17 @@
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation_v2",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation_v2"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f429zi_parafoil/**"
             ]
         },
         {
-            "name": "stm32f429zi_skyward_parafoil",
+            "name": "stm32f429zi_rig",
             "cStandard": "c11",
             "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
             "defines": [
                 "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_parafoil",
-                "_BOARD_STM32F429ZI_SKYWARD_PARAFOIL",
+                "_MIOSIX_BOARDNAME=stm32f429zi_rig",
+                "_BOARD_STM32F429ZI_RIG",
                 "_ARCH_CORTEXM4_STM32F4",
                 "STM32F429xx",
                 "HSE_VALUE=8000000",
@@ -577,53 +238,7 @@
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_parafoil",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_parafoil"
-            ]
-        },
-        {
-            "name": "stm32f429zi_skyward_pyxis_auxiliary",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_pyxis_auxiliary",
-                "_BOARD_STM32F429ZI_SKYWARD_PYXIS_AUXILIARY",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "V_DDA_VOLTAGE=3.3f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_pyxis_auxiliary",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_pyxis_auxiliary"
-            ]
-        },
-        {
-            "name": "stm32f429zi_skyward_rig",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_rig",
-                "_BOARD_STM32F429ZI_SKYWARD_RIG",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.0f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_rig",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_rig"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f429zi_rig/**"
             ]
         },
         {
@@ -646,30 +261,8 @@
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_stm32f4discovery",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_stm32f4discovery"
-            ]
-        },
-        {
-            "name": "stm32f767zi_compute_unit",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f767zi_compute_unit",
-                "_BOARD_STM32F767ZI_COMPUTE_UNIT",
-                "_ARCH_CORTEXM7_STM32F7",
-                "STM32F767xx",
-                "HSE_VALUE=25000000",
-                "SYSCLK_FREQ_216MHz=216000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.3f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_compute_unit",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_compute_unit"
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_stm32f4discovery",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/default/"
             ]
         },
         {
@@ -691,8 +284,7 @@
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_gemini_motor",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_gemini_motor"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_gemini_motor/**"
             ]
         },
         {
@@ -703,7 +295,7 @@
             "defines": [
                 "{defaultDefines}",
                 "_MIOSIX_BOARDNAME=stm32f756zg_nucleo",
-                "D_BOARD_STM32F756ZG_NUCLEO",
+                "_BOARD_STM32F756ZG_NUCLEO",
                 "_ARCH_CORTEXM7_STM32F7",
                 "STM32F756xx",
                 "HSE_VALUE=25000000",
@@ -714,8 +306,7 @@
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f756zg_nucleo",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f756zg_nucleo"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f756zg_nucleo/**"
             ]
         },
         {
@@ -726,7 +317,7 @@
             "defines": [
                 "{defaultDefines}",
                 "_MIOSIX_BOARDNAME=stm32f767zi_nucleo",
-                "D_BOARD_STM32F767ZI_NUCLEO",
+                "_BOARD_STM32F767ZI_NUCLEO",
                 "_ARCH_CORTEXM7_STM32F7",
                 "STM32F767xx",
                 "HSE_VALUE=25000000",
@@ -738,7 +329,8 @@
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_nucleo",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_nucleo"
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_nucleo",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/default/"
             ]
         },
         {
@@ -761,7 +353,8 @@
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f769ni_discovery",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f769ni_discovery"
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f769ni_discovery",
+                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/default/"
             ]
         },
         {
@@ -783,31 +376,7 @@
             "includePath": [
                 "${defaultIncludePaths}",
                 "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM7_stm32f7/stm32f767zi_gemini_gs",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM7_stm32f7/stm32f767zi_gemini_gs"
-            ]
-        },
-        {
-            "name": "stm32f429zi_skyward_groundstation_v2",
-            "cStandard": "c11",
-            "cppStandard": "c++14",
-            "compilerPath": "/opt/arm-miosix-eabi/bin/arm-miosix-eabi-g++",
-            "defines": [
-                "{defaultDefines}",
-                "_MIOSIX_BOARDNAME=stm32f429zi_skyward_groundstation_v2",
-                "_BOARD_STM32F429ZI_SKYWARD_GS_V2",
-                "_ARCH_CORTEXM4_STM32F4",
-                "STM32F429xx",
-                "HSE_VALUE=8000000",
-                "SYSCLK_FREQ_168MHz=168000000",
-                "__ENABLE_XRAM",
-                "V_DDA_VOLTAGE=3.0f"
-            ],
-            "includePath": [
-                "${defaultIncludePaths}",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/common",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation_v2",
-                "${workspaceFolder}/skyward-boardcore/libs/miosix-kernel/miosix/config/arch/cortexM4_stm32f4/stm32f429zi_skyward_groundstation_v2"
+                "${workspaceFolder}/skyward-boardcore/src/bsps/stm32f767zi_gemini_gs/**"
             ]
         }
     ],
diff --git a/.vscode/settings.json b/.vscode/settings.json
index a51e6cc187fb81ae22cabe4c3fa1497faa877e3e..ad62c26731816d98d09c56c75bab66a64d314265 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -169,7 +169,7 @@
         "VREF",
         "Xbee"
     ],
-    "C_Cpp.errorSquiggles": "Enabled",
+    "C_Cpp.errorSquiggles": "enabled",
     "cmake.configureSettings": {
         "CMAKE_C_COMPILER_LAUNCHER": "ccache",
         "CMAKE_CXX_COMPILER_LAUNCHER": "ccache"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bb34a759c97938be60a951c975b88d18189764c6..ec35b72dba4edc0662b46e7382712148cd0f21b6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,6 +22,7 @@
 cmake_minimum_required(VERSION 3.16)
 enable_testing()
 include(skyward-boardcore/cmake/sbs.cmake)
+include(cmake/dependencies.cmake)
 
 # -----------------------------------------------------------------------------#
 #                                    Project                                   #
@@ -40,27 +41,27 @@ sbs_target(test-hil stm32f767zi_compute_unit)
 
 add_executable(main-entry src/entrypoints/Main/main-entry.cpp ${MAIN_COMPUTER})
 target_include_directories(main-entry PRIVATE ${OBSW_INCLUDE_DIRS})
-sbs_target(main-entry stm32f767zi_skyward_death_stack_v4)
+sbs_target(main-entry stm32f767zi_death_stack_v4)
 
 add_executable(main-entry-roccaraso src/entrypoints/Main/main-entry.cpp ${MAIN_COMPUTER})
 target_include_directories(main-entry-roccaraso PRIVATE ${OBSW_INCLUDE_DIRS})
 target_compile_definitions(main-entry-roccaraso PRIVATE ROCCARASO)
-sbs_target(main-entry-roccaraso stm32f767zi_skyward_death_stack_v4)
+sbs_target(main-entry-roccaraso stm32f767zi_death_stack_v4)
 
 add_executable(main-entry-euroc src/entrypoints/Main/main-entry.cpp ${MAIN_COMPUTER})
 target_include_directories(main-entry-euroc PRIVATE ${OBSW_INCLUDE_DIRS})
 target_compile_definitions(main-entry-euroc PRIVATE EUROC)
-sbs_target(main-entry-euroc stm32f767zi_skyward_death_stack_v4)
+sbs_target(main-entry-euroc stm32f767zi_death_stack_v4)
 
 add_executable(payload-entry-roccaraso src/entrypoints/Payload/payload-entry.cpp ${PAYLOAD_COMPUTER})
 target_include_directories(payload-entry-roccaraso PRIVATE ${OBSW_INCLUDE_DIRS})
 target_compile_definitions(payload-entry-roccaraso PRIVATE ROCCARASO)
-sbs_target(payload-entry-roccaraso stm32f767zi_skyward_death_stack_v4)
+sbs_target(payload-entry-roccaraso stm32f767zi_death_stack_v4)
 
 add_executable(payload-entry-euroc src/entrypoints/Payload/payload-entry.cpp ${PAYLOAD_COMPUTER})
 target_include_directories(payload-entry-euroc PRIVATE ${OBSW_INCLUDE_DIRS})
 target_compile_definitions(payload-entry-euroc PRIVATE EUROC)
-sbs_target(payload-entry-euroc stm32f767zi_skyward_death_stack_v4)
+sbs_target(payload-entry-euroc stm32f767zi_death_stack_v4)
 
 add_executable(motor-entry src/entrypoints/Motor/motor-entry.cpp ${MOTOR_SOURCES})
 target_include_directories(motor-entry PRIVATE ${OBSW_INCLUDE_DIRS})
@@ -68,7 +69,7 @@ sbs_target(motor-entry stm32f767zi_gemini_motor)
 
 add_executable(rig-entry src/entrypoints/RIG/rig-entry.cpp ${RIG_COMPUTER})
 target_include_directories(rig-entry PRIVATE ${OBSW_INCLUDE_DIRS})
-sbs_target(rig-entry stm32f429zi_skyward_rig)
+sbs_target(rig-entry stm32f429zi_rig)
 
 add_executable(con_rig-entry src/entrypoints/con_RIG/con_rig-entry.cpp ${CON_RIG_COMPUTER})
 target_include_directories(con_rig-entry PRIVATE ${OBSW_INCLUDE_DIRS})
@@ -86,4 +87,4 @@ add_executable(nokia-groundstation-entry
     ${GROUNDSTATION_COMMON} ${GROUNDSTATION_NOKIA}
 )
 target_include_directories(nokia-groundstation-entry PRIVATE ${OBSW_INCLUDE_DIRS})
-sbs_target(nokia-groundstation-entry stm32f429zi_skyward_groundstation_v2)
+sbs_target(nokia-groundstation-entry stm32f429zi_nokia)
diff --git a/skyward-boardcore b/skyward-boardcore
index c0c732f55291f08ffb25360dd5f98cb63184b620..ca0d670eacd36291ba477565604f20c979146969 160000
--- a/skyward-boardcore
+++ b/skyward-boardcore
@@ -1 +1 @@
-Subproject commit c0c732f55291f08ffb25360dd5f98cb63184b620
+Subproject commit ca0d670eacd36291ba477565604f20c979146969
diff --git a/src/boards/Groundstation/Common/Radio/RadioBase.cpp b/src/boards/Groundstation/Common/Radio/RadioBase.cpp
index 22be5ff3b345e82f6ab3be4e18705317eec2b7c1..2ff68656c97562e9c05ded77bc908384c89aca03 100644
--- a/src/boards/Groundstation/Common/Radio/RadioBase.cpp
+++ b/src/boards/Groundstation/Common/Radio/RadioBase.cpp
@@ -108,7 +108,7 @@ void RadioBase::run()
         miosix::Thread::sleep(AUTOMATIC_FLUSH_PERIOD);
 
         // If enough time has passed, automatically flush.
-        if (miosix::getTick() > last_eot_packet_ts + AUTOMATIC_FLUSH_DELAY)
+        if (Kernel::getOldTick() > last_eot_packet_ts + AUTOMATIC_FLUSH_DELAY)
         {
             flush();
         }
@@ -144,7 +144,7 @@ void RadioBase::handleMsg(const mavlink_message_t& msg)
 
     if (isEndOfTransmissionPacket(msg))
     {
-        last_eot_packet_ts = miosix::getTick();
+        last_eot_packet_ts = Kernel::getOldTick();
         flush();
     }
 }
diff --git a/src/boards/Motor/Actuators/Actuators.cpp b/src/boards/Motor/Actuators/Actuators.cpp
index 4e7050ac4d3dd718f004002a5f482ace632ebf59..33f67891047c5de4edc21543490221973ccd18a1 100644
--- a/src/boards/Motor/Actuators/Actuators.cpp
+++ b/src/boards/Motor/Actuators/Actuators.cpp
@@ -27,6 +27,7 @@
 #include <common/Topics.h>
 #include <drivers/timer/TimestampTimer.h>
 #include <miosix.h>
+#include <utils/KernelTime.h>
 
 #include "ActuatorsData.h"
 
@@ -96,8 +97,8 @@ void Actuators::openServoAtomic(ServosList servo, uint32_t time)
         // Open the valve if it's closed
         if (timings[servo] == 0)
         {
-            timings[servo] = getTick() + time;
-            setFlag[servo] = getTick();
+            timings[servo] = Kernel::getOldTick() + time;
+            setFlag[servo] = Kernel::getOldTick();
         }
     }
 }
@@ -112,7 +113,7 @@ void Actuators::closeServo(ServosList servo)
         if (timings[servo] > 0)
         {
             timings[servo] = 0;
-            setFlag[servo] = getTick();
+            setFlag[servo] = Kernel::getOldTick();
         }
     }
 }
@@ -153,7 +154,7 @@ Servo* Actuators::getServo(ServosList servo)
 
 void Actuators::checkTimings()
 {
-    uint64_t currentTick = getTick();
+    uint64_t currentTick = Kernel::getOldTick();
 
     // Enter in protected zone where the timings should be checked and changed
     // and the servo should be positioned atomically over all the threads. A
diff --git a/src/boards/Motor/Actuators/Actuators.h b/src/boards/Motor/Actuators/Actuators.h
index 61caeefedd26475d715467d7621aba1d709d8a28..837a7040226075c589aeaaad882c9661065095cc 100644
--- a/src/boards/Motor/Actuators/Actuators.h
+++ b/src/boards/Motor/Actuators/Actuators.h
@@ -95,14 +95,14 @@ private:
     void checkTimings();
 
     // Create the list of timings for every servo
-    uint64_t timings[ServosList::ServosList_ENUM_END] = {0};
+    uint64_t timings[ServosList::ServosList_ENUM_END] = {0};  // [ms]
 
     // This set of flags helps the controller to know when the servo have been
     // set, in order to change slightly their angle after CONSTANT time, to
     // avoid over consumption
-    uint64_t setFlag[ServosList::ServosList_ENUM_END]      = {0};
+    uint64_t setFlag[ServosList::ServosList_ENUM_END]      = {0};  // [ms]
     float openings[ServosList::ServosList_ENUM_END]        = {0};
-    uint64_t openingTimes[ServosList::ServosList_ENUM_END] = {0};
+    uint64_t openingTimes[ServosList::ServosList_ENUM_END] = {0};  // [ms]
 
     // This set represents the events to throw at opening/closing of valves
     uint8_t openingEvents[ServosList::ServosList_ENUM_END] = {0};
diff --git a/src/boards/RIG/Actuators/Actuators.cpp b/src/boards/RIG/Actuators/Actuators.cpp
index 0273849a869ffe503fa76eda11a5d61b6ac51adf..0fb5eadbe8f71fb04f73637e425bb794958674e2 100644
--- a/src/boards/RIG/Actuators/Actuators.cpp
+++ b/src/boards/RIG/Actuators/Actuators.cpp
@@ -193,7 +193,7 @@ void Actuators::setServoPosition(ServosList servo, float position)
 
 void Actuators::checkTimings()
 {
-    uint64_t currentTick = getTick();
+    uint64_t currentTick = Kernel::getOldTick();
 
     // Enter in protected zone where the timings should be checked and changed
     // and the servo should be positioned atomically over all the threads. A
@@ -265,7 +265,7 @@ void Actuators::toggleServo(ServosList servo)
         if (timings[servo] > 0)
         {
             timings[servo] = 0;
-            setFlag[servo] = getTick();
+            setFlag[servo] = Kernel::getOldTick();
 
             {
                 RestartKernelLock l(lock);
@@ -282,8 +282,8 @@ void Actuators::toggleServo(ServosList servo)
         }
         else
         {
-            timings[servo] = getTick() + openingTimes[servo];
-            setFlag[servo] = getTick();
+            timings[servo] = Kernel::getOldTick() + openingTimes[servo];
+            setFlag[servo] = Kernel::getOldTick();
 
             {
                 RestartKernelLock l(lock);
@@ -311,7 +311,7 @@ void Actuators::openServoAtomic(ServosList servo, uint32_t time)
         if (timings[servo] > 0)
         {
             timings[servo] = 0;
-            setFlag[servo] = getTick();
+            setFlag[servo] = Kernel::getOldTick();
 
             {
                 RestartKernelLock l(lock);
@@ -328,8 +328,8 @@ void Actuators::openServoAtomic(ServosList servo, uint32_t time)
         }
         else
         {
-            timings[servo] = getTick() + time;
-            setFlag[servo] = getTick();
+            timings[servo] = Kernel::getOldTick() + time;
+            setFlag[servo] = Kernel::getOldTick();
 
             {
                 RestartKernelLock l(lock);
@@ -358,7 +358,7 @@ void Actuators::closeAllServo()
         {
             // Make the timings expire
             timings[i] = 0;
-            setFlag[i] = getTick();
+            setFlag[i] = Kernel::getOldTick();
 
             // Publish the command also into the CAN bus
             ModuleManager::getInstance().get<CanHandler>()->sendCanServoCommand(
diff --git a/src/boards/RIG/Actuators/Actuators.h b/src/boards/RIG/Actuators/Actuators.h
index b6e2118eedaf08af26518087343f709920934948..bc98af801139b25f822b99e8e4cef6181d26689c 100644
--- a/src/boards/RIG/Actuators/Actuators.h
+++ b/src/boards/RIG/Actuators/Actuators.h
@@ -133,15 +133,15 @@ private:
     void checkTimings();
 
     // Create the list of timings for every servo
-    uint64_t timings[ServosList::ServosList_ENUM_END] = {0};
+    uint64_t timings[ServosList::ServosList_ENUM_END] = {0};  // [ms]
 
     // This set of flags helps the controller to know when the servo have been
     // set, in order to change slightly their angle after CONSTANT time, to
     // avoid over consumption
-    uint64_t setFlag[ServosList::ServosList_ENUM_END]      = {0};
+    uint64_t setFlag[ServosList::ServosList_ENUM_END]      = {0};  // [ms]
     float openings[ServosList::ServosList_ENUM_END]        = {1};
     uint64_t openingTimes[ServosList::ServosList_ENUM_END] = {
-        100000};  // Default 100s
+        100000};  // Default 100s [ms]
 
     // This set represents the events to throw at opening/closing of valves
     uint8_t openingEvents[ServosList::ServosList_ENUM_END] = {0};
diff --git a/src/boards/RIG/Radio/Radio.cpp b/src/boards/RIG/Radio/Radio.cpp
index 3febc05c03b92e5878092eec5f7a67abf165b43b..bf3be8a30547760c3d9bef3077070e61070237ed 100644
--- a/src/boards/RIG/Radio/Radio.cpp
+++ b/src/boards/RIG/Radio/Radio.cpp
@@ -239,8 +239,9 @@ void Radio::handleMavlinkMessage(const mavlink_message_t& msg)
             // Extract the buttons data and if there is a slope post the event
             if (previousState.arm_switch == 0 && state.arm_switch == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_MANUAL_ACTION,
                                                     Common::TOPIC_TARS);
@@ -249,84 +250,90 @@ void Radio::handleMavlinkMessage(const mavlink_message_t& msg)
                     modules.get<CanHandler>()->sendEvent(
                         Common::CanConfig::EventId::ARM);
 
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
             if (previousState.filling_valve_btn == 0 &&
                 state.filling_valve_btn == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_MANUAL_ACTION,
                                                     Common::TOPIC_TARS);
                     modules.get<Actuators>()->toggleServo(
                         ServosList::FILLING_VALVE);
 
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
             if (previousState.ignition_btn == 0 && state.ignition_btn == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_MANUAL_ACTION,
                                                     Common::TOPIC_TARS);
                     EventBroker::getInstance().post(Common::MOTOR_IGNITION,
                                                     Common::TOPIC_MOTOR);
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
             if (previousState.quick_connector_btn == 0 &&
                 state.quick_connector_btn == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_MANUAL_ACTION,
                                                     Common::TOPIC_TARS);
                     modules.get<Actuators>()->toggleServo(
                         ServosList::DISCONNECT_SERVO);
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
             if (previousState.release_pressure_btn == 0 &&
                 state.release_pressure_btn == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_MANUAL_ACTION,
                                                     Common::TOPIC_TARS);
                     modules.get<Actuators>()->toggleServo(
                         ServosList::RELEASE_VALVE);
 
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
             if (previousState.start_tars_btn == 0 && state.start_tars_btn == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_START_TARS,
                                                     Common::TOPIC_TARS);
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
             if (previousState.venting_valve_btn == 0 &&
                 state.venting_valve_btn == 1)
             {
-                if (getTick() > lastManualCommand +
-                                    Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
+                if (Kernel::getOldTick() >
+                    lastManualCommand +
+                        Config::Radio::RADIO_LAST_COMMAND_THRESHOLD)
                 {
                     EventBroker::getInstance().post(Common::MOTOR_MANUAL_ACTION,
                                                     Common::TOPIC_TARS);
                     modules.get<Actuators>()->toggleServo(
                         ServosList::VENTING_VALVE);
 
-                    lastManualCommand = getTick();
+                    lastManualCommand = Kernel::getOldTick();
                 }
             }
 
@@ -339,7 +346,7 @@ void Radio::handleMavlinkMessage(const mavlink_message_t& msg)
                 modules.get<CanHandler>()->sendEvent(
                     Common::CanConfig::EventId::DISARM);
 
-                lastManualCommand = getTick();
+                lastManualCommand = Kernel::getOldTick();
             }
 
             previousState = state;
diff --git a/src/boards/RIG/Radio/Radio.h b/src/boards/RIG/Radio/Radio.h
index 7f91e498ed11d0e89f11f46965523013103212c6..bf45c6ef668f71508bafc2e9160666261509114c 100644
--- a/src/boards/RIG/Radio/Radio.h
+++ b/src/boards/RIG/Radio/Radio.h
@@ -94,8 +94,8 @@ private:
         buffer;
     std::thread radioBackupDIO;
 
-    long long int lastManualCommand =
-        0;  // Specifies the last tick [ms] in which a command is executed
+    long long lastManualCommand =
+        0;  // Timestamp of the last command execution [ms]
     Boardcore::Logger& SDlogger   = Boardcore::Logger::getInstance();
     Boardcore::PrintLogger logger = Boardcore::Logging::getLogger("Radio");
 };
diff --git a/src/boards/RIG/StatesMonitor/StatesMonitor.cpp b/src/boards/RIG/StatesMonitor/StatesMonitor.cpp
index 65144b1ac369098e0c8d75758fb016874c791173..32c287881890cc3ad23247439bbb0e8dc7a0cadc 100644
--- a/src/boards/RIG/StatesMonitor/StatesMonitor.cpp
+++ b/src/boards/RIG/StatesMonitor/StatesMonitor.cpp
@@ -52,7 +52,7 @@ void StatesMonitor::update()
     for (int i = 0; i < Config::StatesMonitor::BOARDS_NUMBER; i++)
     {
         // Check if the time since the last config expires
-        if (getTick() >
+        if (Kernel::getOldTick() >
             updateTimestamps[i] + Config::StatesMonitor::MAX_TIMEOUT)
         {
             boardStatuses[i] = 0;
@@ -70,7 +70,7 @@ void StatesMonitor::setBoardStatus(Common::CanConfig::Board board,
     if (index < Config::StatesMonitor::BOARDS_NUMBER)
     {
         boardStatuses[index]    = status;
-        updateTimestamps[index] = getTick();
+        updateTimestamps[index] = Kernel::getOldTick();
     }
 }