diff --git a/CMakeLists.txt b/CMakeLists.txt
index 05fe458e68468a795a6244782fde8a7479f40af8..947b1442c66aeec478d27715994bfd7b9ae0c95d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,8 +35,9 @@ include(${BOARDCORE_PATH}/cmake/boardcore.cmake)
 
 # ### DEFAULT
 
-# # Define the miosix library with kernel and architecture sources
-# add_library(skyward-boardcore STATIC ${EXCLUDE_SRC} ${PROTECT_SRC} ${TO_DUPLICATE_SRC})
+# # Define the miosix library with kernel and architecture sources 
+# add_library(skyward-boardcore STATIC ${EXCLUDE_SRC} ${GRAY_AREA_SRC} ${TO_DUPLICATE_SRC} ${TO_HARDEN_SRC})
+# target_compile_options(skyward-boardcore PRIVATE -O3)
 # link_boardcore_submodules(skyward-boardcore PUBLIC)
 # link_boardcore_libraries(skyward-boardcore PUBLIC)
 
@@ -44,11 +45,18 @@ include(${BOARDCORE_PATH}/cmake/boardcore.cmake)
 ### ASPIS
 
 # Create a library for the duplications
-add_library(to_protect_lib STATIC EXCLUDE_FROM_ALL ${PROTECT_SRC})
-target_compile_options(to_protect_lib PRIVATE -S -emit-llvm -O3)
-# add_options_boardcore_library(to_protect_lib PUBLIC ${BOARD_NAME})
-link_boardcore_submodules(to_protect_lib PUBLIC)
-link_boardcore_libraries(to_protect_lib PUBLIC)
+add_library(to_harden_lib STATIC EXCLUDE_FROM_ALL ${TO_HARDEN_SRC})
+target_compile_options(to_harden_lib PRIVATE -S -emit-llvm -O3)
+# add_options_boardcore_library(to_harden_lib PUBLIC ${BOARD_NAME})
+link_boardcore_submodules(to_harden_lib PUBLIC)
+link_boardcore_libraries(to_harden_lib PUBLIC)
+
+# Create a library for the board
+add_library(to_duplicate_lib STATIC EXCLUDE_FROM_ALL ${TO_DUPLICATE_SRC})
+target_compile_options(to_duplicate_lib PRIVATE -S -emit-llvm -O3)
+# add_options_boardcore_library(to_duplicate_lib PUBLIC ${BOARD_NAME})
+link_boardcore_submodules(to_duplicate_lib PUBLIC)
+link_boardcore_libraries(to_duplicate_lib PUBLIC)
 
 # Create a library for the board
 add_library(external_lib STATIC EXCLUDE_FROM_ALL ${EXCLUDE_SRC})
@@ -58,15 +66,14 @@ link_boardcore_submodules(external_lib PUBLIC)
 link_boardcore_libraries(external_lib PUBLIC)
 
 # Create a library for the board
-add_library(to_duplicate_lib STATIC EXCLUDE_FROM_ALL ${TO_DUPLICATE_SRC})
-target_compile_options(to_duplicate_lib PRIVATE -S -emit-llvm -O3)
-# add_options_boardcore_library(to_duplicate_lib PUBLIC ${BOARD_NAME})
-link_boardcore_submodules(to_duplicate_lib PUBLIC)
-link_boardcore_libraries(to_duplicate_lib PUBLIC)
+add_library(gray_area_lib STATIC EXCLUDE_FROM_ALL ${GRAY_AREA_SRC})
+target_compile_options(gray_area_lib PRIVATE -S -emit-llvm -O3)
+# add_options_boardcore_library(gray_area_lib PUBLIC ${BOARD_NAME})
+link_boardcore_submodules(gray_area_lib PUBLIC)
+link_boardcore_libraries(gray_area_lib PUBLIC)
 
 get_property(CXXFLAGS_RET TARGET miosix PROPERTY TARGET_CXX_FLAGS)
-
-apply_aspis_passes(to_protect_lib external_lib to_duplicate_lib skyward-boardcore "${CXXFLAGS_RET}")
+apply_aspis_passes(to_harden_lib to_duplicate_lib external_lib gray_area_lib skyward-boardcore "${CXXFLAGS_RET}")
 # add_options_boardcore_library(skyward-boardcore INTERFACE ${BOARD_NAME})
 
 link_boardcore_submodules(skyward-boardcore INTERFACE)
diff --git a/cmake/boardcore.cmake b/cmake/boardcore.cmake
index 58e36bc5de74dc048a8ef81a73af297ee2b830e9..646a361fa02f6062aaf2be9536978a6fb7892837 100644
--- a/cmake/boardcore.cmake
+++ b/cmake/boardcore.cmake
@@ -124,7 +124,7 @@ set(EXCLUDE_SRC
     ${BOARDCORE_PATH}/src/shared/utils/Registry/Backend/FileBackend.cpp
 )
 
-set(PROTECT_SRC
+set(GRAY_AREA_SRC
     ${BOARDCORE_PATH}/src/shared/aspis/aspis.cpp
 
     # Calibration
@@ -161,6 +161,11 @@ set(TO_DUPLICATE_SRC
     ${BOARDCORE_PATH}/src/shared/events/EventBroker.cpp
 )
 
+
+set(TO_HARDEN_SRC
+    ${BOARDCORE_PATH}/src/shared/aspis/dummy.cpp
+)
+
 function(link_boardcore_submodules TARGET TYPE)
     # Only one include directory for Boardcore!
     target_include_directories(${TARGET} ${TYPE} ${BOARDCORE_PATH}/src/shared)
@@ -197,30 +202,38 @@ endfunction()
 set(ASPIS_PASSES_PATH /home/streben/Documenti/ASPIS/build/passes)
 
 # Given two libs, it creates a static library
-function(apply_aspis_passes TO_PROTECT_LIB EXTERNAL_LIB TO_DUPLICATE_LIB OUTLIBRARY CXXFLAGS_RET)
+
+function(apply_aspis_passes TO_HARDEN_LIB TO_DUPLICATE_LIB EXTERNAL_LIB GRAY_AREA_LIB OUTLIBRARY CXXFLAGS_RET)
     # Getting the sources of the two libraries
-    get_property(TO_PROTECT_SRC TARGET ${TO_PROTECT_LIB} PROPERTY SOURCES)
-    get_property(TO_DUPLICATE_SRC TARGET ${TO_DUPLICATE_LIB} PROPERTY SOURCES)
-    get_property(EXTERNAL_SRC TARGET ${EXTERNAL_LIB} PROPERTY SOURCES)
+    get_property(TO_HARDEN_SRC_PROPERTY TARGET ${TO_HARDEN_LIB} PROPERTY SOURCES)
+    get_property(_PROPERTY TARGET ${TO_DUPLICATE_LIB} PROPERTY SOURCES)
+    get_property(EXTERNAL_SRC_PROPERTY TARGET ${EXTERNAL_LIB} PROPERTY SOURCES)
+    get_property(GRAY_AREA_SRC_PROPERTY TARGET ${GRAY_AREA_LIB} PROPERTY SOURCES)
 
     # Create list of compiled protected sources for each board
-    set(PROTECT_COMPILED_SOURCES TO_PROTECT_COMPILED)
-    list(TRANSFORM TO_PROTECT_SRC APPEND ".o" OUTPUT_VARIABLE PROTECT_COMPILED_SOURCES)
-    list(TRANSFORM PROTECT_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
-    list(TRANSFORM PROTECT_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_PROTECT_LIB}.dir/)
+    set(TO_HARDEN_COMPILED_SOURCES TO_HARDEN_COMPILED)
+    list(TRANSFORM TO_HARDEN_SRC_PROPERTY APPEND ".o" OUTPUT_VARIABLE TO_HARDEN_COMPILED_SOURCES)
+    list(TRANSFORM TO_HARDEN_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
+    list(TRANSFORM TO_HARDEN_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_HARDEN_LIB}.dir/)
     
     # Create list of compiled boardcore sources for each board
     set(TO_DUPLICATE_COMPILED_SOURCES EXTERNAL_COMPILED)
-    list(TRANSFORM TO_DUPLICATE_SRC APPEND ".o" OUTPUT_VARIABLE TO_DUPLICATE_COMPILED_SOURCES)
+    list(TRANSFORM _PROPERTY APPEND ".o" OUTPUT_VARIABLE TO_DUPLICATE_COMPILED_SOURCES)
     list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
     list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_DUPLICATE_LIB}.dir/)
     
     # Create list of compiled boardcore sources for each board
     set(EXTERNAL_COMPILED_SOURCES EXTERNAL_COMPILED)
-    list(TRANSFORM EXTERNAL_SRC APPEND ".o" OUTPUT_VARIABLE EXTERNAL_COMPILED_SOURCES)
+    list(TRANSFORM EXTERNAL_SRC_PROPERTY APPEND ".o" OUTPUT_VARIABLE EXTERNAL_COMPILED_SOURCES)
     list(TRANSFORM EXTERNAL_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
     list(TRANSFORM EXTERNAL_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${EXTERNAL_LIB}.dir/)
 
+    # Create list of compiled gray area sources for each board
+    set(GRAY_COMPILED_SOURCES GRAY_AREA_COMPILED)
+    list(TRANSFORM GRAY_AREA_SRC_PROPERTY APPEND ".o" OUTPUT_VARIABLE GRAY_COMPILED_SOURCES)
+    list(TRANSFORM GRAY_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
+    list(TRANSFORM GRAY_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${GRAY_AREA_LIB}.dir/)
+
     add_custom_target(
         ${OUTLIBRARY}-target
         BYPRODUCTS lib${OUTLIBRARY}.a
@@ -229,7 +242,9 @@ function(apply_aspis_passes TO_PROTECT_LIB EXTERNAL_LIB TO_DUPLICATE_LIB OUTLIBR
         COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-exclude" externals.bc -o externals.bc
         COMMAND ${MIOSIX_PREFIX}-link ${TO_DUPLICATE_COMPILED_SOURCES} -o to_duplicate.bc
         COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-duplicate" to_duplicate.bc -o to_duplicate.bc
-        COMMAND ${MIOSIX_PREFIX}-link -v ${PROTECT_COMPILED_SOURCES} externals.bc to_duplicate.bc -o out.bc
+        COMMAND ${MIOSIX_PREFIX}-link ${TO_HARDEN_COMPILED_SOURCES} -o to_harden.bc
+        COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-harden" to_harden.bc -o to_harden.bc
+        COMMAND ${MIOSIX_PREFIX}-link -v ${GRAY_COMPILED_SOURCES} externals.bc to_duplicate.bc to_harden.bc -o out.bc
         # COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libEDDI.so --passes="func-ret-to-ref" out.bc -o ret_to_ref.bc
         # COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libSEDDI.so --passes="eddi-verify" ret_to_ref.bc -o out.bc -debug
         # COMMAND ${CMAKE_OPT} --passes="dce,simplifycfg" out.bc -o out.bc
@@ -239,9 +254,10 @@ function(apply_aspis_passes TO_PROTECT_LIB EXTERNAL_LIB TO_DUPLICATE_LIB OUTLIBR
         COMMAND_EXPAND_LISTS
         COMMENT "Applying ASPIS passes and creating archive lib${OUTLIBRARY}.a"
     )
-    add_dependencies(${OUTLIBRARY}-target ${TO_PROTECT_LIB})
+    add_dependencies(${OUTLIBRARY}-target ${TO_HARDEN_LIB})
     add_dependencies(${OUTLIBRARY}-target ${TO_DUPLICATE_LIB})
     add_dependencies(${OUTLIBRARY}-target ${EXTERNAL_LIB})
+    add_dependencies(${OUTLIBRARY}-target ${GRAY_AREA_LIB})
 
     # Importing the just built library
     add_library(${OUTLIBRARY} STATIC IMPORTED)
@@ -251,20 +267,21 @@ endfunction()
 
 
 # Given two libs, it creates an executable
-function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE TO_DUPLICATE_LIB OUTEXECUTABLE CXXFLAGS_RET)
+function(apply_aspis_passes_exe TO_HARDEN_LIB TO_DUPLICATE_LIB EXTERNAL_LIB GRAY_AREA_LIB OUTEXECUTABLE CXXFLAGS_RET)
     # Getting the sources of the two libraries
-    get_property(TO_PROTECT_SRC TARGET ${TO_PROTECT_EXE} PROPERTY SOURCES)
+    get_property(TO_HARDEN_SRC TARGET ${TO_HARDEN_LIB} PROPERTY SOURCES)
     get_property(TO_DUPLICATE_SRC TARGET ${TO_DUPLICATE_LIB} PROPERTY SOURCES)
-    get_property(EXTERNAL_SRC TARGET ${EXTERNAL_EXE} PROPERTY SOURCES)
+    get_property(EXTERNAL_SRC TARGET ${EXTERNAL_LIB} PROPERTY SOURCES)
+    get_property(GRAY_AREA_SRC TARGET ${GRAY_AREA_LIB} PROPERTY SOURCES)
 
     # Create list of compiled protected sources for each board
-    set(PROTECT_COMPILED_SOURCES TO_PROTECT_COMPILED)
-    list(TRANSFORM TO_PROTECT_SRC APPEND ".o" OUTPUT_VARIABLE PROTECT_COMPILED_SOURCES)
-    list(TRANSFORM PROTECT_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
-    list(TRANSFORM PROTECT_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_PROTECT_EXE}.dir/)
+    set(TO_HARDEN_COMPILED_SOURCES TO_HARDEN_COMPILED)
+    list(TRANSFORM TO_HARDEN_SRC APPEND ".o" OUTPUT_VARIABLE TO_HARDEN_COMPILED_SOURCES)
+    list(TRANSFORM TO_HARDEN_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
+    list(TRANSFORM TO_HARDEN_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_HARDEN_LIB}.dir/)
     
     # Create list of compiled boardcore sources for each board
-    set(TO_DUPLICATE_COMPILED_SOURCES EXTERNAL_COMPILED)
+    set(TO_DUPLICATE_COMPILED_SOURCES TO_DUPLICATE_COMPILED)
     list(TRANSFORM TO_DUPLICATE_SRC APPEND ".o" OUTPUT_VARIABLE TO_DUPLICATE_COMPILED_SOURCES)
     list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
     list(TRANSFORM TO_DUPLICATE_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${TO_DUPLICATE_LIB}.dir/)
@@ -273,7 +290,13 @@ function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE TO_DUPLICATE_LIB OUT
     set(EXTERNAL_COMPILED_SOURCES EXTERNAL_COMPILED)
     list(TRANSFORM EXTERNAL_SRC APPEND ".o" OUTPUT_VARIABLE EXTERNAL_COMPILED_SOURCES)
     list(TRANSFORM EXTERNAL_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
-    list(TRANSFORM EXTERNAL_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${EXTERNAL_EXE}.dir/)
+    list(TRANSFORM EXTERNAL_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${EXTERNAL_LIB}.dir/)
+
+    # Create list of compiled gray area sources for each board
+    set(GRAY_COMPILED_SOURCES GRAY_AREA_COMPILED)
+    list(TRANSFORM GRAY_AREA_SRC APPEND ".o" OUTPUT_VARIABLE GRAY_COMPILED_SOURCES)
+    list(TRANSFORM GRAY_COMPILED_SOURCES REPLACE ${CMAKE_SOURCE_DIR} "")
+    list(TRANSFORM GRAY_COMPILED_SOURCES PREPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${GRAY_AREA_LIB}.dir/)
     
     add_custom_target(
         ${OUTEXECUTABLE}-target
@@ -283,7 +306,9 @@ function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE TO_DUPLICATE_LIB OUT
         COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-exclude" externals.bc -o externals.bc
         COMMAND ${MIOSIX_PREFIX}-link ${TO_DUPLICATE_COMPILED_SOURCES} -o to_duplicate.bc
         COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-duplicate" to_duplicate.bc -o to_duplicate.bc
-        COMMAND ${MIOSIX_PREFIX}-link -v ${CMAKE_BINARY_DIR}/skyward_boardcore.bc ${PROTECT_COMPILED_SOURCES} externals.bc to_duplicate.bc -o out.bc
+        COMMAND ${MIOSIX_PREFIX}-link ${TO_HARDEN_COMPILED_SOURCES} -o to_harden.bc
+        COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libAddAnnotation.so --passes="mark-to-harden" to_harden.bc -o to_harden.bc
+        COMMAND ${MIOSIX_PREFIX}-link -v ${CMAKE_BINARY_DIR}/skyward_boardcore.bc ${GRAY_COMPILED_SOURCES} externals.bc to_duplicate.bc to_harden.bc -o out.bc
         COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libEDDI.so --passes="func-ret-to-ref" out.bc -o ret_to_ref.bc
         COMMAND ${CMAKE_OPT} -load-pass-plugin=${ASPIS_PASSES_PATH}/libSEDDI.so --passes="eddi-verify" ret_to_ref.bc -o out.bc -debug
         COMMAND ${CMAKE_OPT} --passes="dce,simplifycfg" out.bc -o out.bc
@@ -293,12 +318,10 @@ function(apply_aspis_passes_exe TO_PROTECT_EXE EXTERNAL_EXE TO_DUPLICATE_LIB OUT
         COMMAND_EXPAND_LISTS
         COMMENT "Applying ASPIS passes and creating ${OUTEXECUTABLE}.elf"
     )
-    add_dependencies(${OUTEXECUTABLE}-target ${TO_PROTECT_EXE})
+    add_dependencies(${OUTEXECUTABLE}-target ${GRAY_AREA_LIB})
+    add_dependencies(${OUTEXECUTABLE}-target ${TO_HARDEN_LIB})
     add_dependencies(${OUTEXECUTABLE}-target ${TO_DUPLICATE_LIB})
-    add_dependencies(${OUTEXECUTABLE}-target ${EXTERNAL_EXE})
-
-# /usr/lib64/ccache/clang++ --target=arm-none-eabi --sysroot=/opt/arm-miosix-eabi/arm-miosix-eabi/lib -g -O0 -Wl,-Map,/home/streben/Documenti/POLIMI/TESI/obsw/src/entrypoints/Main/build/main-entry.map -Wl,-Map,/home/streben/Documenti/POLIMI/TESI/obsw/src/entrypoints/Main/build/skyward-boardcore.map -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -Wl,--gc-sections -Wl,-T/home/streben/Documenti/POLIMI/TESI/obsw/skyward-boardcore/src/bsps/stm32f767zi_gemini_motor/stm32_2m+16m_xram.ld -nostdlib -o main-entry.elf   -L/opt/arm-miosix-eabi/arm-miosix-eabi/lib/thumb/cm7/hardfp/fpv5  -L/opt/arm-miosix-eabi/lib/gcc/arm-miosix-eabi/9.2.0/thumb/cm7/hardfp/fpv5  libskyward-boardcore.a -Wl,--start-group libmiosix.a -lstdc++ -lc -lm -lgcc -latomic -Wl,--end-group
-
+    add_dependencies(${OUTEXECUTABLE}-target ${EXTERNAL_LIB})
 
     # Importing the just built library
     add_executable(${OUTEXECUTABLE} IMPORTED)
diff --git a/src/shared/aspis/dummy.cpp b/src/shared/aspis/dummy.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391