diff --git a/callback-manager b/callback-manager
new file mode 120000
index 0000000..fd2f4fe
--- /dev/null
+++ b/callback-manager
@@ -0,0 +1 @@
+subprojects/callback-manager/
\ No newline at end of file
diff --git a/hsbp-manager b/hsbp-manager
new file mode 120000
index 0000000..4663e38
--- /dev/null
+++ b/hsbp-manager
@@ -0,0 +1 @@
+subprojects/hsbp-manager/
\ No newline at end of file
diff --git a/meson.build b/meson.build
index 99c3ca7..96ed4ef 100644
--- a/meson.build
+++ b/meson.build
@@ -7,4 +7,5 @@
 )
 
 #Add subproject for hsbp-manager
-subdir('hsbp-manager')
+subproject('hsbp-manager')
+subproject('callback-manager')
diff --git a/callback-manager/.gitignore b/subprojects/callback-manager/.gitignore
similarity index 100%
rename from callback-manager/.gitignore
rename to subprojects/callback-manager/.gitignore
diff --git a/callback-manager/LICENCE b/subprojects/callback-manager/LICENCE
similarity index 100%
rename from callback-manager/LICENCE
rename to subprojects/callback-manager/LICENCE
diff --git a/callback-manager/README.md b/subprojects/callback-manager/README.md
similarity index 100%
rename from callback-manager/README.md
rename to subprojects/callback-manager/README.md
diff --git a/callback-manager/include/callback_manager.hpp b/subprojects/callback-manager/include/callback_manager.hpp
similarity index 97%
rename from callback-manager/include/callback_manager.hpp
rename to subprojects/callback-manager/include/callback_manager.hpp
index 78a70a0..e4776c8 100644
--- a/callback-manager/include/callback_manager.hpp
+++ b/subprojects/callback-manager/include/callback_manager.hpp
@@ -24,9 +24,9 @@
 
 struct AssociationManager
 {
-    AssociationManager(sdbusplus::asio::object_server& objectServer,
-                       std::shared_ptr<sdbusplus::asio::connection>& conn) :
-        objectServer(objectServer),
+    AssociationManager(sdbusplus::asio::object_server& objectServerIn,
+                       std::shared_ptr<sdbusplus::asio::connection>& /*conn*/) :
+        objectServer(objectServerIn),
         association(objectServer.add_interface(rootPath, associationIface)),
         sensorAssociation(
             objectServer.add_interface(sensorPath, associationIface))
diff --git a/callback-manager/meson.build b/subprojects/callback-manager/meson.build
similarity index 64%
rename from callback-manager/meson.build
rename to subprojects/callback-manager/meson.build
index cb0fe0a..78bd22b 100644
--- a/callback-manager/meson.build
+++ b/subprojects/callback-manager/meson.build
@@ -1,3 +1,11 @@
+project(
+    'callback-manager',
+    'cpp',
+    version: '1.1.1',
+    meson_version: '>=1.1.1',
+    default_options: ['cpp_std=c++23'],
+)
+
 # Compiler flags
 cpp_args = [
     '-Werror',
@@ -22,9 +30,6 @@
     '-fno-rtti',
 ]
 
-# Boost library
-boost_dep = dependency('boost', required: true)
-
 # Definitions
 add_project_arguments(
     '-DBOOST_ERROR_CODE_HEADER_ONLY',
@@ -39,31 +44,19 @@
 # Include directories
 inc = include_directories('include')
 
-# Executable
-
-
-boost = dependency('boost', version: '1.73.0', required: false)
-sdbusplus = dependency('sdbusplus', required: false)
+boost = dependency('boost', version: '1.86.0', required: false)
+sdbusplus = dependency('sdbusplus', required: true)
 
 executable(
     'callback-manager',
     'src/callback_manager.cpp',
     include_directories: inc,
     cpp_args: cpp_args,
-    dependencies: [boost_dep],
-    link_with: ['systemd', 'i2c', 'sdbusplus', 'stdc++fs', 'gpiodcxx'],
+    dependencies: [boost, sdbusplus],
 )
 
-systemd_dep = dependency('systemd', required: true)
-incdir = include_directories('include')
-executable(
-    'callback-manager',
-    'src/callback_manager.cpp',
-    include_directories: incdir,
-    dependencies: [boost, sdbusplus, systemd_dep],
-)
 # Systemd service files
-systemd_system_unit_dir = systemd_dep.get_pkgconfig_variable(
+systemd_system_unit_dir = dependency('systemd').get_variable(
     'systemdsystemunitdir',
 )
 
diff --git a/callback-manager/service_files/callback-manager.service b/subprojects/callback-manager/service_files/callback-manager.service
similarity index 100%
rename from callback-manager/service_files/callback-manager.service
rename to subprojects/callback-manager/service_files/callback-manager.service
diff --git a/callback-manager/src/callback_manager.cpp b/subprojects/callback-manager/src/callback_manager.cpp
similarity index 98%
rename from callback-manager/src/callback_manager.cpp
rename to subprojects/callback-manager/src/callback_manager.cpp
index 97f74f1..4d54ffe 100644
--- a/callback-manager/src/callback_manager.cpp
+++ b/subprojects/callback-manager/src/callback_manager.cpp
@@ -184,6 +184,9 @@
                 ledsToSet.push_back(std::make_pair(okLedPath, true));
                 break;
             }
+            case (StatusSetting::none):
+            default:
+                break;
         }
     }
 
@@ -351,7 +354,7 @@
         });
 }
 
-int main(int argc, char** argv)
+int main(int /*argc*/, char** /*argv*/)
 {
     boost::asio::io_context io;
     auto conn = std::make_shared<sdbusplus::asio::connection>(io);
diff --git a/hsbp-manager/.gitignore b/subprojects/hsbp-manager/.gitignore
similarity index 100%
rename from hsbp-manager/.gitignore
rename to subprojects/hsbp-manager/.gitignore
diff --git a/hsbp-manager/LICENCE b/subprojects/hsbp-manager/LICENCE
similarity index 100%
rename from hsbp-manager/LICENCE
rename to subprojects/hsbp-manager/LICENCE
diff --git a/hsbp-manager/include/utils.hpp b/subprojects/hsbp-manager/include/utils.hpp
similarity index 100%
rename from hsbp-manager/include/utils.hpp
rename to subprojects/hsbp-manager/include/utils.hpp
diff --git a/hsbp-manager/meson.build b/subprojects/hsbp-manager/meson.build
similarity index 81%
rename from hsbp-manager/meson.build
rename to subprojects/hsbp-manager/meson.build
index 6e0ef67..c757d26 100644
--- a/hsbp-manager/meson.build
+++ b/subprojects/hsbp-manager/meson.build
@@ -1,3 +1,11 @@
+project(
+    'hsbp-manager',
+    'cpp',
+    version: '1.1.1',
+    meson_version: '>=1.1.1',
+    default_options: ['cpp_std=c++23'],
+)
+
 # Compiler flags
 cpp_args = [
     '-lstdc++fs',
@@ -23,10 +31,6 @@
     '-fno-rtti',
 ]
 
-# Boost library
-#boost_dep = dependency('boost', required : true)
-#i2c_dep = dependency('i2c-tools', required : true)
-
 # Definitions
 add_project_arguments(
     '-DBOOST_ERROR_CODE_HEADER_ONLY',
@@ -44,7 +48,6 @@
 cpp = meson.get_compiler('cpp')
 boost = dependency('boost', version: '1.86.0', required: false)
 sdbusplus = dependency('sdbusplus', required: true)
-systemd_dep = dependency('systemd', required: true)
 i2c_dep = cpp.find_library('i2c')
 gpiodcxx = dependency('libgpiodcxx', default_options: ['bindings=cxx'])
 
@@ -54,10 +57,10 @@
     'hsbp-manager',
     'src/hsbp_manager.cpp',
     include_directories: incdir,
-    dependencies: [boost, i2c_dep, sdbusplus, systemd_dep, gpiodcxx],
+    dependencies: [boost, i2c_dep, sdbusplus, gpiodcxx],
 )
 # Systemd service files
-systemd_system_unit_dir = systemd_dep.get_pkgconfig_variable(
+systemd_system_unit_dir = dependency('systemd').get_variable(
     'systemdsystemunitdir',
 )
 
diff --git a/hsbp-manager/service_files/hsbp-manager.service b/subprojects/hsbp-manager/service_files/hsbp-manager.service
similarity index 100%
rename from hsbp-manager/service_files/hsbp-manager.service
rename to subprojects/hsbp-manager/service_files/hsbp-manager.service
diff --git a/hsbp-manager/src/hsbp_manager.cpp b/subprojects/hsbp-manager/src/hsbp_manager.cpp
similarity index 100%
rename from hsbp-manager/src/hsbp_manager.cpp
rename to subprojects/hsbp-manager/src/hsbp_manager.cpp
