diff --git a/.clang-format b/.clang-format
index bc951c7539c78c4fa00efde0030dcf12b126686a..f168e3f62a8ddb6211b470268455920cffa6b445 100644
--- a/.clang-format
+++ b/.clang-format
@@ -6,7 +6,7 @@ AccessModifierOffset: -2
 AlignAfterOpenBracket: Align
 AlignConsecutiveAssignments: true
 AlignConsecutiveDeclarations: true
-AlignEscapedNewlines: Left
+AlignEscapedNewlines: Right
 AlignOperands: true
 AlignTrailingComments: true
 AllowAllParametersOfDeclarationOnNextLine: false
@@ -97,6 +97,7 @@ PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 200
 PointerAlignment: Left
 ReflowComments: true
+SeparateDefinitionBlocks: Always
 SortIncludes: false
 SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
diff --git a/.gitignore b/.gitignore
index 2a19e53e62aaa9c251b2f92657392e589597f1d6..98abfb268fb417b12c408b65d53b9b1e7c5c4a83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,7 +34,5 @@ src/examples/map_apriltag_save.yaml
 
 \.vscode/
 .clangd
-wolfcore.found
-/wolf.found
 .ccls*
 compile_commands.json
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e69a3926a1a15adc529a45d8c37c7aa3a5437ff5..6cedf3a4a9752de28b14ebde80a0a32b385448b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@ SET(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY FALSE)
 SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
 SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
 SET(LIB_INSTALL_DIR lib)
-SET(INCLUDE_INSTALL_DIR include/iri-algorithms/wolf)
+SET(INCLUDE_INSTALL_DIR include/wolf)
 
 # Build type
 IF (NOT CMAKE_BUILD_TYPE)
@@ -80,6 +80,7 @@ option(_WOLF_TRACE "Enable wolf tracing macro" ON)
 FIND_PACKAGE(Threads REQUIRED MODULE)
 FIND_PACKAGE(Ceres REQUIRED CONFIG)
 FIND_PACKAGE(Eigen3 3.3 REQUIRED CONFIG)
+FIND_PACKAGE(spdlog REQUIRED CONFIG)
 if(${EIGEN3_VERSION_STRING} VERSION_LESS 3.3)
   message(FATAL_ERROR "Wolf requires Eigen >= 3.3. Found Eigen ${EIGEN3_VERSION_STRING}")
 endif()
@@ -89,7 +90,7 @@ FIND_PACKAGE(yaml-cpp REQUIRED CONFIG)
 set(_WOLF_ROOT_DIR ${CMAKE_SOURCE_DIR})
 set(_WOLF_LIB_DIR ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR})
 # Define the directory where will be the configured config.h
-SET(WOLF_CONFIG_DIR ${PROJECT_BINARY_DIR}/conf/core/internal)
+SET(WOLF_CONFIG_DIR ${PROJECT_BINARY_DIR}/conf/${PROJECT_NAME}/internal)
 
 # Create the specified output directory if it does not exist.
 IF(NOT EXISTS "${WOLF_CONFIG_DIR}")
@@ -106,151 +107,142 @@ message(STATUS "WOLF CONFIG DIRECTORY ${WOLF_CONFIG_DIR}")
 message(STATUS "WOLF CONFIG FILE      ${WOLF_CONFIG_DIR}/config.h")
 include_directories("${PROJECT_BINARY_DIR}/conf")
 
-# include spdlog (logging library)
-FIND_PATH(SPDLOG_INCLUDE_DIR spdlog.h /usr/local/include/spdlog /usr/include/spdlog)
-IF (SPDLOG_INCLUDE_DIR)
-  # INCLUDE_DIRECTORIES(${SPDLOG_INCLUDE_DIR})
-  MESSAGE(STATUS "Found spdlog: ${SPDLOG_INCLUDE_DIR}")
-ELSE (SPDLOG_INCLUDE_DIR)
- MESSAGE(FATAL_ERROR "Could not find spdlog")
-ENDIF (SPDLOG_INCLUDE_DIR)
-
 # ============ INCLUDES ============ 
 INCLUDE_DIRECTORIES("include") # In this same project
 
 # ============ HEADERS ============ 
 SET(HDRS_CAPTURE
-  include/core/capture/capture_base.h
-  include/core/capture/capture_motion.h
-  include/core/capture/capture_odom_2d.h
-  include/core/capture/capture_odom_3d.h
-  include/core/capture/capture_pose.h
-  include/core/capture/capture_void.h
-  include/core/capture/capture_diff_drive.h
+  include/${PROJECT_NAME}/capture/capture_base.h
+  include/${PROJECT_NAME}/capture/capture_motion.h
+  include/${PROJECT_NAME}/capture/capture_odom_2d.h
+  include/${PROJECT_NAME}/capture/capture_odom_3d.h
+  include/${PROJECT_NAME}/capture/capture_pose.h
+  include/${PROJECT_NAME}/capture/capture_void.h
+  include/${PROJECT_NAME}/capture/capture_diff_drive.h
   )
 SET(HDRS_COMMON
-  include/core/common/factory.h
-  include/core/common/node_base.h
-  include/core/common/time_stamp.h
-  include/core/common/wolf.h
-  include/core/common/params_base.h
+  include/${PROJECT_NAME}/common/factory.h
+  include/${PROJECT_NAME}/common/node_base.h
+  include/${PROJECT_NAME}/common/time_stamp.h
+  include/${PROJECT_NAME}/common/wolf.h
+  include/${PROJECT_NAME}/common/params_base.h
   )
 SET(HDRS_FACTOR
-  include/core/factor/factor_analytic.h
-  include/core/factor/factor_autodiff.h
-  include/core/factor/factor_base.h
-  include/core/factor/factor_block_absolute.h
-  include/core/factor/factor_block_difference.h
-  include/core/factor/factor_diff_drive.h
-  include/core/factor/factor_distance_3d.h
-  include/core/factor/factor_pose_2d.h
-  include/core/factor/factor_pose_3d.h
-  include/core/factor/factor_quaternion_absolute.h
-  include/core/factor/factor_relative_pose_2d.h
-  include/core/factor/factor_relative_pose_2d_with_extrinsics.h
-  include/core/factor/factor_relative_pose_3d.h
-  include/core/factor/factor_pose_3d_with_extrinsics.h
-  include/core/factor/factor_relative_pose_3d_with_extrinsics.h
-  include/core/factor/factor_velocity_local_direction_3d.h
+  include/${PROJECT_NAME}/factor/factor_analytic.h
+  include/${PROJECT_NAME}/factor/factor_autodiff.h
+  include/${PROJECT_NAME}/factor/factor_base.h
+  include/${PROJECT_NAME}/factor/factor_block_absolute.h
+  include/${PROJECT_NAME}/factor/factor_block_difference.h
+  include/${PROJECT_NAME}/factor/factor_diff_drive.h
+  include/${PROJECT_NAME}/factor/factor_distance_3d.h
+  include/${PROJECT_NAME}/factor/factor_pose_2d.h
+  include/${PROJECT_NAME}/factor/factor_pose_3d.h
+  include/${PROJECT_NAME}/factor/factor_quaternion_absolute.h
+  include/${PROJECT_NAME}/factor/factor_relative_pose_2d.h
+  include/${PROJECT_NAME}/factor/factor_relative_pose_2d_with_extrinsics.h
+  include/${PROJECT_NAME}/factor/factor_relative_pose_3d.h
+  include/${PROJECT_NAME}/factor/factor_pose_3d_with_extrinsics.h
+  include/${PROJECT_NAME}/factor/factor_relative_pose_3d_with_extrinsics.h
+  include/${PROJECT_NAME}/factor/factor_velocity_local_direction_3d.h
   )
 SET(HDRS_FEATURE
-  include/core/feature/feature_base.h
-  include/core/feature/feature_diff_drive.h
-  include/core/feature/feature_match.h
-  include/core/feature/feature_motion.h
-  include/core/feature/feature_odom_2d.h
-  include/core/feature/feature_pose.h
+  include/${PROJECT_NAME}/feature/feature_base.h
+  include/${PROJECT_NAME}/feature/feature_diff_drive.h
+  include/${PROJECT_NAME}/feature/feature_match.h
+  include/${PROJECT_NAME}/feature/feature_motion.h
+  include/${PROJECT_NAME}/feature/feature_odom_2d.h
+  include/${PROJECT_NAME}/feature/feature_pose.h
   )
 SET(HDRS_FRAME
-  include/core/frame/frame_base.h
+  include/${PROJECT_NAME}/frame/frame_base.h
   )
 SET(HDRS_HARDWARE
-  include/core/hardware/hardware_base.h
+  include/${PROJECT_NAME}/hardware/hardware_base.h
   )
 SET(HDRS_LANDMARK
-  include/core/landmark/landmark_base.h
-  include/core/landmark/landmark_match.h
+  include/${PROJECT_NAME}/landmark/landmark_base.h
+  include/${PROJECT_NAME}/landmark/landmark_match.h
   )
 SET(HDRS_MATH
-  include/core/math/SE2.h
-  include/core/math/SE3.h
-  include/core/math/rotations.h
-  include/core/math/covariance.h
+  include/${PROJECT_NAME}/math/SE2.h
+  include/${PROJECT_NAME}/math/SE3.h
+  include/${PROJECT_NAME}/math/rotations.h
+  include/${PROJECT_NAME}/math/covariance.h
   )
 SET(HDRS_MAP
-  include/core/map/factory_map.h
-  include/core/map/map_base.h
+  include/${PROJECT_NAME}/map/factory_map.h
+  include/${PROJECT_NAME}/map/map_base.h
   )
 SET(HDRS_PROBLEM
-  include/core/problem/problem.h
+  include/${PROJECT_NAME}/problem/problem.h
   )
 SET(HDRS_PROCESSOR
-  include/core/processor/motion_buffer.h
-  include/core/processor/motion_provider.h
-  include/core/processor/processor_base.h
-  include/core/processor/processor_diff_drive.h
-  include/core/processor/processor_fixed_wing_model.h
-  include/core/processor/factory_processor.h
-  include/core/processor/processor_loop_closure.h
-  include/core/processor/processor_motion.h
-  include/core/processor/processor_odom_2d.h
-  include/core/processor/processor_odom_3d.h
-  include/core/processor/processor_pose.h
-  include/core/processor/processor_tracker.h
-  include/core/processor/processor_tracker_feature.h
-  include/core/processor/processor_tracker_landmark.h
-  include/core/processor/track_matrix.h
+  include/${PROJECT_NAME}/processor/motion_buffer.h
+  include/${PROJECT_NAME}/processor/motion_provider.h
+  include/${PROJECT_NAME}/processor/processor_base.h
+  include/${PROJECT_NAME}/processor/processor_diff_drive.h
+  include/${PROJECT_NAME}/processor/processor_fixed_wing_model.h
+  include/${PROJECT_NAME}/processor/factory_processor.h
+  include/${PROJECT_NAME}/processor/processor_loop_closure.h
+  include/${PROJECT_NAME}/processor/processor_motion.h
+  include/${PROJECT_NAME}/processor/processor_odom_2d.h
+  include/${PROJECT_NAME}/processor/processor_odom_3d.h
+  include/${PROJECT_NAME}/processor/processor_pose.h
+  include/${PROJECT_NAME}/processor/processor_tracker.h
+  include/${PROJECT_NAME}/processor/processor_tracker_feature.h
+  include/${PROJECT_NAME}/processor/processor_tracker_landmark.h
+  include/${PROJECT_NAME}/processor/track_matrix.h
   )
 SET(HDRS_SENSOR
-  include/core/sensor/sensor_base.h
-  include/core/sensor/sensor_diff_drive.h
-  include/core/sensor/factory_sensor.h
-  include/core/sensor/sensor_motion_model.h
-  include/core/sensor/sensor_odom_2d.h
-  include/core/sensor/sensor_odom_3d.h
-  include/core/sensor/sensor_pose.h
+  include/${PROJECT_NAME}/sensor/sensor_base.h
+  include/${PROJECT_NAME}/sensor/sensor_diff_drive.h
+  include/${PROJECT_NAME}/sensor/factory_sensor.h
+  include/${PROJECT_NAME}/sensor/sensor_motion_model.h
+  include/${PROJECT_NAME}/sensor/sensor_odom_2d.h
+  include/${PROJECT_NAME}/sensor/sensor_odom_3d.h
+  include/${PROJECT_NAME}/sensor/sensor_pose.h
   )
 SET(HDRS_SOLVER
-  include/core/solver/solver_manager.h
-  include/core/solver/factory_solver.h
+  include/${PROJECT_NAME}/solver/solver_manager.h
+  include/${PROJECT_NAME}/solver/factory_solver.h
   )
 SET(HDRS_STATE_BLOCK
-  include/core/state_block/factory_state_block.h
-  include/core/state_block/has_state_blocks.h
-  include/core/state_block/local_parametrization_angle.h
-  include/core/state_block/local_parametrization_base.h
-  include/core/state_block/local_parametrization_homogeneous.h
-  include/core/state_block/local_parametrization_quaternion.h
-  include/core/state_block/state_angle.h
-  include/core/state_block/state_block.h
-  include/core/state_block/state_composite.h
-  include/core/state_block/state_homogeneous_3d.h
-  include/core/state_block/state_quaternion.h
+  include/${PROJECT_NAME}/state_block/factory_state_block.h
+  include/${PROJECT_NAME}/state_block/has_state_blocks.h
+  include/${PROJECT_NAME}/state_block/local_parametrization_angle.h
+  include/${PROJECT_NAME}/state_block/local_parametrization_base.h
+  include/${PROJECT_NAME}/state_block/local_parametrization_homogeneous.h
+  include/${PROJECT_NAME}/state_block/local_parametrization_quaternion.h
+  include/${PROJECT_NAME}/state_block/state_angle.h
+  include/${PROJECT_NAME}/state_block/state_block.h
+  include/${PROJECT_NAME}/state_block/state_composite.h
+  include/${PROJECT_NAME}/state_block/state_homogeneous_3d.h
+  include/${PROJECT_NAME}/state_block/state_quaternion.h
   )
 SET(HDRS_TRAJECTORY
-  include/core/trajectory/trajectory_base.h
+  include/${PROJECT_NAME}/trajectory/trajectory_base.h
   )
 SET(HDRS_TREE_MANAGER
-  include/core/tree_manager/factory_tree_manager.h
-  include/core/tree_manager/tree_manager_base.h
-  include/core/tree_manager/tree_manager_sliding_window.h
-  include/core/tree_manager/tree_manager_sliding_window_dual_rate.h
+  include/${PROJECT_NAME}/tree_manager/factory_tree_manager.h
+  include/${PROJECT_NAME}/tree_manager/tree_manager_base.h
+  include/${PROJECT_NAME}/tree_manager/tree_manager_sliding_window.h
+  include/${PROJECT_NAME}/tree_manager/tree_manager_sliding_window_dual_rate.h
   )
 SET(HDRS_UTILS
-  include/core/utils/check_log.h
-  include/core/utils/converter.h
-  include/core/utils/eigen_assert.h
-  include/core/utils/graph_search.h
-  include/core/utils/loader.h
-  include/core/utils/logging.h
-  include/core/utils/params_server.h
-  include/core/utils/singleton.h
-  include/core/utils/utils_gtest.h
-  include/core/utils/converter_utils.h
+  include/${PROJECT_NAME}/utils/check_log.h
+  include/${PROJECT_NAME}/utils/converter.h
+  include/${PROJECT_NAME}/utils/eigen_assert.h
+  include/${PROJECT_NAME}/utils/graph_search.h
+  include/${PROJECT_NAME}/utils/loader.h
+  include/${PROJECT_NAME}/utils/logging.h
+  include/${PROJECT_NAME}/utils/params_server.h
+  include/${PROJECT_NAME}/utils/singleton.h
+  include/${PROJECT_NAME}/utils/utils_gtest.h
+  include/${PROJECT_NAME}/utils/converter_utils.h
   )
 SET(HDRS_YAML
-  include/core/yaml/parser_yaml.h
-  include/core/yaml/yaml_conversion.h
+  include/${PROJECT_NAME}/yaml/parser_yaml.h
+  include/${PROJECT_NAME}/yaml/yaml_conversion.h
   )
   
 # ============ SOURCES ============ 
@@ -354,13 +346,13 @@ SET(SRCS_YAML
 IF (Ceres_FOUND)
     SET(HDRS_CERES_WRAPPER
       #ceres_wrapper/qr_manager.h
-      include/core/ceres_wrapper/cost_function_wrapper.h
-      include/core/ceres_wrapper/create_numeric_diff_cost_function.h
-      include/core/ceres_wrapper/local_parametrization_wrapper.h
-      include/core/ceres_wrapper/iteration_update_callback.h
-      include/core/ceres_wrapper/solver_ceres.h
-      include/core/solver/solver_manager.h
-      include/core/solver_suitesparse/sparse_utils.h
+      include/${PROJECT_NAME}/ceres_wrapper/cost_function_wrapper.h
+      include/${PROJECT_NAME}/ceres_wrapper/create_numeric_diff_cost_function.h
+      include/${PROJECT_NAME}/ceres_wrapper/local_parametrization_wrapper.h
+      include/${PROJECT_NAME}/ceres_wrapper/iteration_update_callback.h
+      include/${PROJECT_NAME}/ceres_wrapper/solver_ceres.h
+      include/${PROJECT_NAME}/solver/solver_manager.h
+      include/${PROJECT_NAME}/solver_suitesparse/sparse_utils.h
       )
     SET(SRCS_CERES_WRAPPER
       #ceres_wrapper/qr_manager.cpp
@@ -413,6 +405,7 @@ endif()
 TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC ${CMAKE_THREAD_LIBS_INIT} dl)
 TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC yaml-cpp)
 TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC Eigen3::Eigen)
+TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC spdlog::spdlog)
 IF (Ceres_FOUND)
     TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC ceres)
 ENDIF(Ceres_FOUND)
@@ -493,7 +486,7 @@ INSTALL(FILES ${HDRS_SENSOR}
 INSTALL(FILES ${HDRS_SOLVER}
   DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/solver)
 #INSTALL(FILES ${HDRS_SOLVER_SUITESPARSE}
-#  DESTINATION ${INCLUDE_INSTALL_DIR}/core/solver_suitesparse)
+#  DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/solver_suitesparse)
 INSTALL(FILES ${HDRS_STATE_BLOCK}
   DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/state_block)
 INSTALL(FILES ${HDRS_TRAJECTORY}
@@ -508,9 +501,6 @@ INSTALL(FILES ${HDRS_YAML}
 INSTALL(FILES "${WOLF_CONFIG_DIR}/config.h"
   DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/internal)
 
-
-INSTALL(DIRECTORY ${SPDLOG_INCLUDE_DIRS} DESTINATION "include/iri-algorithms/")
-
 export(PACKAGE ${PLUGIN_NAME})
 
 FIND_PACKAGE(Doxygen MODULE)
diff --git a/cmake_modules/wolfcoreConfig.cmake.in b/cmake_modules/wolfcoreConfig.cmake.in
index 735adef5984b0989b98947873a15e22a910172b4..749bc679d1abdfe403c3bfd3bb4115d5c2c19600 100644
--- a/cmake_modules/wolfcoreConfig.cmake.in
+++ b/cmake_modules/wolfcoreConfig.cmake.in
@@ -8,6 +8,7 @@ FIND_DEPENDENCY(Threads REQUIRED)
 FIND_DEPENDENCY(Ceres REQUIRED)
 FIND_DEPENDENCY(Eigen3 3.3 REQUIRED)
 FIND_DEPENDENCY(yaml-cpp REQUIRED)
+FIND_DEPENDENCY(spdlog REQUIRED)
 
 include("${CMAKE_CURRENT_LIST_DIR}/@PLUGIN_NAME@Targets.cmake")