diff --git a/CMakeLists.txt b/CMakeLists.txt
index 91de281b3779c42c55c3a68359c02e3bcadf24c7..d920cc8a3840fc704857f591bda8d4b0eed1c420 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -254,27 +254,25 @@ ENDIF(GLOG_FOUND)
 
 #HEADERS
 
-SET(HDRS_BASE
-  include/base/IMU_tools.h
-  )
 
 SET(HDRS_COMMON
-  include/base/factory.h
-  include/base/node_base.h
-  include/base/time_stamp.h
-  include/base/wolf.h
+  include/base/common/factory.h
+  include/base/common/node_base.h
+  include/base/common/time_stamp.h
+  include/base/common/wolf.h
   )
 SET(HDRS_MATH
-  include/base/pinhole_tools.h
-  include/base/make_unique.h
-  include/base/SE3.h
+  include/base/math/pinhole_tools.h
+  include/base/math/SE3.h
+  include/base/math/IMU_tools.h
+  include/base/math/rotations.h
   )
 SET(HDRS_UTILS
   include/base/utils/eigen_assert.h
   include/base/utils/eigen_predicates.h
-  include/base/rotations.h
-  include/base/logging.h
-  include/base/singleton.h
+  include/base/utils/logging.h
+  include/base/utils/singleton.h
+  include/base/utils/make_unique.h
   )
 SET(HDRS_PROBLEM
   include/base/problem/problem.h
@@ -294,14 +292,14 @@ SET(HDRS_FRAME
 SET(HDRS_STATE_BLOCK
   include/base/state_block/local_parametrization_angle.h
   include/base/state_block/local_parametrization_base.h
-  include/base/local_parametrization_homogeneous.h
-  include/base/local_parametrization_polyline_extreme.h
-  include/base/local_parametrization_quaternion.h
-  include/base/state_angle.h
-  include/base/state_block.h
-  include/base/state_homogeneous_3D.h
-  include/base/state_quaternion.h
-  include/base/local_parametrization_polyline_extreme.h
+  include/base/state_block/local_parametrization_homogeneous.h
+  include/base/state_block/local_parametrization_polyline_extreme.h
+  include/base/state_block/local_parametrization_quaternion.h
+  include/base/state_block/state_angle.h
+  include/base/state_block/state_block.h
+  include/base/state_block/state_homogeneous_3D.h
+  include/base/state_block/state_quaternion.h
+  include/base/state_block/local_parametrization_polyline_extreme.h
   )
 
 SET(HDRS_CAPTURE
@@ -760,58 +758,56 @@ ENDIF(BUILD_EXAMPLES)
 
 #=============================================================
 INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
-      RUNTIME DESTINATION bin
-      LIBRARY DESTINATION lib/iri-algorithms
-      ARCHIVE DESTINATION lib/iri-algorithms)
+  RUNTIME DESTINATION bin
+  LIBRARY DESTINATION lib/iri-algorithms
+  ARCHIVE DESTINATION lib/iri-algorithms)
 
 install(EXPORT ${PROJECT_NAME}Targets DESTINATION lib/cmake/${PROJECT_NAME})
 #install headers
 INSTALL(FILES ${HDRS_MATH}
-    DESTINATION include/iri-algorithms/wolf/base/math)
+  DESTINATION include/iri-algorithms/wolf/base/math)
 INSTALL(FILES ${HDRS_UTILS}
-    DESTINATION include/iri-algorithms/wolf/base/utils)
+  DESTINATION include/iri-algorithms/wolf/base/utils)
 INSTALL(FILES ${HDRS_PROBLEM}
-    DESTINATION include/iri-algorithms/wolf/base/problem)
+  DESTINATION include/iri-algorithms/wolf/base/problem)
 INSTALL(FILES ${HDRS_HARDWARE}
-    DESTINATION include/iri-algorithms/wolf/base/hardware)
+  DESTINATION include/iri-algorithms/wolf/base/hardware)
 INSTALL(FILES ${HDRS_TRAJECTORY}
-    DESTINATION include/iri-algorithms/wolf/base/trajectory)
+  DESTINATION include/iri-algorithms/wolf/base/trajectory)
 INSTALL(FILES ${HDRS_MAP}
-    DESTINATION include/iri-algorithms/wolf/base/map)
+  DESTINATION include/iri-algorithms/wolf/base/map)
 INSTALL(FILES ${HDRS_FRAME}
-    DESTINATION include/iri-algorithms/wolf/base/frame)
+  DESTINATION include/iri-algorithms/wolf/base/frame)
 INSTALL(FILES ${HDRS_STATE_BLOCK}
-    DESTINATION include/iri-algorithms/wolf/base/state_block)
+  DESTINATION include/iri-algorithms/wolf/base/state_block)
 INSTALL(FILES ${HDRS_COMMON}
-    DESTINATION include/iri-algorithms/wolf/base/common)
-INSTALL(FILES ${HDRS_BASE}
-    DESTINATION include/iri-algorithms/wolf/base)
+  DESTINATION include/iri-algorithms/wolf/base/common)
 INSTALL(FILES ${HDRS_DTASSC}
-   DESTINATION include/iri-algorithms/wolf/base/association)
+  DESTINATION include/iri-algorithms/wolf/base/association)
 INSTALL(FILES ${HDRS_CAPTURE}
-    DESTINATION include/iri-algorithms/wolf/base/capture)
+   DESTINATION include/iri-algorithms/wolf/base/capture)
 INSTALL(FILES ${HDRS_FACTOR}
-    DESTINATION include/iri-algorithms/wolf/base/factor)
+  DESTINATION include/iri-algorithms/wolf/base/factor)
 INSTALL(FILES ${HDRS_FEATURE}
-    DESTINATION include/iri-algorithms/wolf/base/feature)
+  DESTINATION include/iri-algorithms/wolf/base/feature)
 INSTALL(FILES ${HDRS_SENSOR}
-    DESTINATION include/iri-algorithms/wolf/base/sensor)
+  DESTINATION include/iri-algorithms/wolf/base/sensor)
 INSTALL(FILES ${HDRS_PROCESSOR}
-    DESTINATION include/iri-algorithms/wolf/base/processor)
+  DESTINATION include/iri-algorithms/wolf/base/processor)
 INSTALL(FILES ${HDRS_LANDMARK}
-    DESTINATION include/iri-algorithms/wolf/base/landmark)
+  DESTINATION include/iri-algorithms/wolf/base/landmark)
 INSTALL(FILES ${HDRS_WRAPPER}
-    DESTINATION include/iri-algorithms/wolf/base/ceres_wrapper)
+  DESTINATION include/iri-algorithms/wolf/base/ceres_wrapper)
 INSTALL(FILES ${HDRS_SOLVER_SUITESPARSE}
-   DESTINATION include/iri-algorithms/wolf/base/solver_suitesparse)
+  DESTINATION include/iri-algorithms/wolf/base/solver_suitesparse)
 INSTALL(FILES ${HDRS_SOLVER}
-    DESTINATION include/iri-algorithms/wolf/base/solver)
+  DESTINATION include/iri-algorithms/wolf/base/solver)
 INSTALL(FILES ${HDRS_SERIALIZATION}
-    DESTINATION include/iri-algorithms/wolf/base/serialization)
+  DESTINATION include/iri-algorithms/wolf/base/serialization)
 INSTALL(FILES ${HDRS_YAML}
-    DESTINATION include/iri-algorithms/wolf/base/yaml)
+  DESTINATION include/iri-algorithms/wolf/base/yaml)
 INSTALL(FILES "${CMAKE_SOURCE_DIR}/cmake_modules/Findwolf.cmake"
-    DESTINATION "lib/cmake/${PROJECT_NAME}")
+  DESTINATION "lib/cmake/${PROJECT_NAME}")
 
 #install Find*.cmake
 configure_file("${CMAKE_SOURCE_DIR}/cmake_modules/wolfConfig.cmake"
diff --git a/include/base/capture/capture_IMU.h b/include/base/capture/capture_IMU.h
index 6e2de9d9d91eee27afb6b46940f2c5558ee0fddb..9308c1bc0aa44a56b472fc8c67c74da449776318 100644
--- a/include/base/capture/capture_IMU.h
+++ b/include/base/capture/capture_IMU.h
@@ -2,7 +2,7 @@
 #define CAPTURE_IMU_H
 
 //Wolf includes
-#include "base/IMU_tools.h"
+#include "base/math/IMU_tools.h"
 #include "base/capture/capture_motion.h"
 
 namespace wolf {
diff --git a/include/base/IMU_tools.h b/include/base/math/IMU_tools.h
similarity index 100%
rename from include/base/IMU_tools.h
rename to include/base/math/IMU_tools.h
diff --git a/src/processor/processor_IMU.cpp b/src/processor/processor_IMU.cpp
index 3f1f5b2445ea42bda8b863beddaf52210bbf4c4c..2dfa2cd7de6b14c3aea08eab02782d30235c15df 100644
--- a/src/processor/processor_IMU.cpp
+++ b/src/processor/processor_IMU.cpp
@@ -1,7 +1,7 @@
 // wolf
 #include "base/processor/processor_IMU.h"
 #include "base/factor/factor_IMU.h"
-#include "base/IMU_tools.h"
+#include "base/math/IMU_tools.h"
 
 namespace wolf {
 
diff --git a/test/gtest_IMU_tools.cpp b/test/gtest_IMU_tools.cpp
index e41007154f27c8c6de6845db934215df22d7c382..3cc7d33e28f8149d33ee01d109357569e3dc44c5 100644
--- a/test/gtest_IMU_tools.cpp
+++ b/test/gtest_IMU_tools.cpp
@@ -5,7 +5,7 @@
  *      Author: jsola
  */
 
-#include "base/IMU_tools.h"
+#include "base/math/IMU_tools.h"
 #include "utils_gtest.h"
 
 using namespace Eigen;