diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index aa0a8a0f0b462e0d5da1e4a8a4c62366a1a7e027..1e27127f2cce97ca0d51599391e8a685b7046e0d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,10 +1,14 @@
 image: hpclib/hiepacs
 
+before_script:
+  - source /usr/share/modules/init/bash && source /usr/local/share/spack/setup-env.sh && spack load cmake@3.14.2
+
 variables:
   GIT_SUBMODULE_STRATEGY: normal
 
 stages:
   - build
+  - pages
   - test
   - sonar
 
@@ -19,8 +23,8 @@ build:
     - cd Build && cmake ..
         -DSCALFMM_USE_LOG=ON
         -DSCALFMM_USE_ASSERT=ON
-        -DSCALFMM_USE_SSE=OFF
-        -DSCALFMM_USE_AVX=OFF
+        -DINASTEMP_USE_AVX2=OFF
+        -DINASTEMP_USE_AVX=OFF
         -DSCALFMM_USE_BLAS=ON
         -DSCALFMM_USE_FFT=ON
         -DSCALFMM_USE_MPI=ON
@@ -29,8 +33,8 @@ build:
         -DSCALFMM_BUILD_TESTS=ON
         -DSCALFMM_BUILD_UTESTS=ON
         -DCMAKE_VERBOSE_MAKEFILE=ON
-        -DCMAKE_C_COMPILER=gcc-6
-        -DCMAKE_CXX_COMPILER=g++-6
+        -DCMAKE_C_COMPILER=gcc-7
+        -DCMAKE_CXX_COMPILER=g++-7
     - make -j5 2>&1 |tee scalfmm-build.log
 
 doc:
@@ -43,9 +47,22 @@ doc:
   script:
     - cd Build && cmake ..
         -DSCALFMM_BUILD_DOC=ON
-        -DCMAKE_C_COMPILER=gcc-6
-        -DCMAKE_CXX_COMPILER=g++-6
-    - make doc
+        -DCMAKE_C_COMPILER=gcc-7
+        -DCMAKE_CXX_COMPILER=g++-7
+    - make doc 
+
+pages:
+  stage: pages
+  dependencies:
+    - doc
+  artifacts:
+    paths:
+      - public
+  script:
+    - mkdir public
+    - mv Build/Doc/html/* public/
+  only:
+    - cmake-refurb
 
 test:
   stage: test
@@ -78,4 +95,4 @@ sonar:
     - source ./Utils/scripts/analysis.sh
     - sonar-scanner |tee sonar.log;
   only:
-    - develop@solverstack/ScalFMM
\ No newline at end of file
+    - develop@solverstack/ScalFMM
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ed7f57e3e14506361956484fc9bee9700d561b4..60dc2ec7a78612ea559ece2b8d020005b892dab2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,43 +1,50 @@
-cmake_minimum_required (VERSION 2.8.3 FATAL_ERROR)
+cmake_minimum_required (VERSION 3.10.0 FATAL_ERROR)
 
-if(CMAKE_MAJOR_VERSION GREATER 1 AND CMAKE_MINOR_VERSION GREATER 7 AND CMAKE_PATCH_VERSION GREATER 11)
-  cmake_policy(SET CMP0022 OLD)
-endif()
-
-cmake_policy(SET CMP0004 NEW)
-
-set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
-#===========================================================================
+#
 # Project Declaration
-#===========================================================================
-project(SCALFMM C CXX )
+#--------------------
+project(scalfmm CXX)
 # check if compiling into source directories
 string(COMPARE EQUAL "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" insource)
 if(insource)
   message(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto ./Build and tapes cmake ../")
 endif(insource)
 
-list(APPEND CMAKE_MODULE_PATH  ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/)
-SET(SCALFMM_CMAKE_MODULE_PATH  ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/)
 #
-# Adds the CMAKE_DEPENDENT_OPTION command
-INCLUDE(CMakeDependentOption)
-#===========================================================================
 # Version Number
-#===========================================================================
+# --------------
 
 # SCALFMM version number.  An even minor number corresponds to releases.
-set(SCALFMM_MAJOR_VERSION 2)
-set(SCALFMM_MINOR_VERSION 0)
-set(SCALFMM_PATCH_VERSION rc0)
-set(SCALFMM_VERSION  "${SCALFMM_MAJOR_VERSION}.${SCALFMM_MINOR_VERSION}.${SCALFMM_PATCH_VERSION}" )
+set(${CMAKE_PROJECT_NAME}_MAJOR_VERSION 2)
+set(${CMAKE_PROJECT_NAME}_MINOR_VERSION 0)
+set(${CMAKE_PROJECT_NAME}_PATCH_VERSION rc0)
+set(${CMAKE_PROJECT_NAME}_VERSION  "${${CMAKE_PROJECT_NAME}_MAJOR_VERSION}.${${CMAKE_PROJECT_NAME}_MINOR_VERSION}.${${CMAKE_PROJECT_NAME}_PATCH_VERSION}" )
 
-SET(CXX_STANDARD_REQUIRED ON)
-SET(CMAKE_CXX_STANDARD 14)
+#
+# Set global c++ support
+# ----------------------
+set(CMAKE_CXX_STANDARD 14)
 
-set( MORSE_DISTRIB_DIR "" CACHE PATH "Directory of MORSE distribution")
+#
+# Update cmake path
+# -----------------
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/)
 
-if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_cmake")
+#
+# Creating main lib
+# -----------------
+list(APPEND SCALFMM_SOURCES FAlgorithmTimers.cpp FLog.cpp FMemStats.cpp FSignalHandler.cpp)
+list(TRANSFORM SCALFMM_SOURCES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/src/")
+add_library(${CMAKE_PROJECT_NAME} STATIC ${SCALFMM_SOURCES})
+# Set library includes
+# --------------------
+target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC
+  $<BUILD_INTERFACE:${${CMAKE_PROJECT_NAME}_BINARY_DIR}/include>
+  $<BUILD_INTERFACE:${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/include>
+  $<INSTALL_INTERFACE:include>
+  )
+
+if(MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_cmake")
 
   # Add extra cmake module path and initialize morse cmake modules
   # --------------------------------------------------------------
@@ -48,8 +55,12 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_
     list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_cmake/modules)
     set(MORSE_CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_cmake/modules )
   endif()
+
   include(MorseInit)
+
   # Set the RPATH config
+  # These options allow all installed executables to run correctly
+  # when installed to the install diretory
   # --------------------
   # use, i.e. don't skip the full RPATH for the build tree
   set(CMAKE_SKIP_BUILD_RPATH  FALSE)
@@ -58,289 +69,192 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_
   set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
   # the RPATH to be used when installing
   set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
+  # add the automatically determined parts of the RPATH
+  # which point to directories outside the build tree to the install RPATH
+  set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
 
   # Build ScalFmm as static or dynamic lib
   # --------------------------------------
-  option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
+  # option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
   #
   # Options
   #
-  option( SCALFMM_USE_MPI              "Set to ON to build ScaFMM with MPI"          OFF )
-  option( SCALFMM_USE_BLAS             "Set to ON to build ScaFMM with BLAS"         ON )
-  option( SCALFMM_USE_FFT              "Set to ON to build ScaFMM with FFTW"         ON )
-  option( SCALFMM_BUILD_EXAMPLES       "Set to ON to compile examples "              ON  )
-  option( SCALFMM_BUILD_TESTS          "Set to ON to build functionalities Tests"    OFF )
-  option( SCALFMM_BUILD_UTESTS         "Set to ON to build UTests"                   OFF )
-  option( SCALFMM_INSTALL_DATA         "Set to ON to include the data when proceeding to the installtion " OFF )
+  # Cmake options for dependencies
+  option( SCALFMM_USE_MPI              "Set to ON to build ScaFMM with MPI"         OFF )
+  option( SCALFMM_USE_BLAS             "Set to ON to build ScaFMM with BLAS"        ON  )
+  option( SCALFMM_USE_FFT              "Set to ON to build ScaFMM with FFTW"        OFF )
+  option( SCALFMM_USE_STARPU           "Set to ON to build SCALFMM with StarPU"     OFF )
+
+  # Cmake options that impact the build tree
+  option( SCALFMM_BUILD_EXAMPLES       "Set to ON to compile examples "                ON  )
+  option( SCALFMM_BUILD_TESTS          "Set to ON to build functionalities Tests"      OFF )
+  option( SCALFMM_BUILD_UTESTS         "Set to ON to build UTests"                     OFF )
+  option( SCALFMM_BUILD_UTILS          "Set to ON to build utils Tests"                OFF )
   option( SCALFMM_BUILD_DOC            "Set to ON to build the Doxygen documentation " OFF )
-  option( SCALFMM_BUILD_DEBUG          "Set to ON to build in Debug"                 OFF )
+
+  # Cmake options to install additional content
+  option( SCALFMM_INSTALL_DATA         "Set to ON to include the data when proceeding to the installtion " OFF )
+
+  # Cmake options related to trace, logging and statistics
   option( SCALFMM_USE_LOG              "Set to ON to print output debug information" OFF )
   option( SCALFMM_USE_MEM_STATS        "Set to ON to profile memory"                 OFF )
-  option( SCALFMM_ATTACHE_SOURCE       "Set to ON to compile with -g"                OFF )
-  option( SCALFMM_USE_ADDONS           "Set to ON to compile add ons"                OFF )
-  option( SCALFMM_USE_SIGNALS          "Set to ON to catch various signal an print backtrace"  OFF )
   option( SCALFMM_USE_ASSERT           "Set to ON to enable safe tests during execution" ON  )
-  option( SCALFMM_USE_MIC_NATIVE       "Set to ON to compile in native mode for MIC" OFF  )
   option( SCALFMM_ONLY_DEVEL           "Set to ON to compile Development tools (only scalfmm team)" OFF )
-  option( SCALFMM_USE_EZTRACE          "Set to ON to compile with eztrace framwork" OFF )
-  option( SCALFMM_USE_STARPU           "Set to ON to build SCALFMM with StarPU"     OFF )
-  option( SCALFMM_BUILD_UTILS          "Set to ON to build utils Tests"             OFF )
+
+  # Cmake options related to the targeted architecture
+  option( SCALFMM_USE_MIC_NATIVE       "Set to ON to compile in native mode for MIC" OFF  )
+
 
 
-  if( SCALFMM_ONLY_DEVEL )
-    if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-      option( SCALFMM_USE_OMP4 "Set to ON to disable the gcc/intel omp4"    OFF )
-    else()
-      option( SCALFMM_USE_OMP4 "Set to ON to disable the gcc/intel omp4"    ON )
-    endif()
-    option( SCALFMM_TIME_OMPTASKS "Set to ON to time omp4 tasks and generate output file"    OFF )
-    # SIMGRID and peformance models options
-    option( SCALFMM_SIMGRID_NODATA "Set to ON to avoid the allocation of numerical parts in the group tree" OFF )
-    option( STARPU_SIMGRID_MLR_MODELS "Set to ON to enable MLR models need for calibration and simulation" OFF )
-    # OPENMP 4/5 support
-    message(WARNING "OpenMP_VERSION:  ${OpenMP_VERSION}")
-    option( OPENMP_SUPPORT_PRIORITY  "Set to ON to enable tasks priority (OMP4.x/KSTAR/StarPU compiler only)" OFF )
-    # STARPU options
-    CMAKE_DEPENDENT_OPTION(OPENMP_SUPPORT_COMMUTE        "Set to ON to let tasks commute (KSTAR/StarPU compiler only)" OFF
-      "SCALFMM_USE_STARPU" OFF)
-    CMAKE_DEPENDENT_OPTION(OPENMP_SUPPORT_TASK_NAME       "Set to ON to enable a taskname clause for tasks (KSTAR/StarPU compiler only)" OFF
-      "SCALFMM_USE_STARPU" OFF)
-    CMAKE_DEPENDENT_OPTION(SCALFMM_STARPU_USE_COMMUTE  "Set to ON to enable commute with StarPU" ON  "SCALFMM_USE_STARPU" OFF)
-    CMAKE_DEPENDENT_OPTION(SCALFMM_STARPU_USE_REDUX  "Set to ON to enable redux with StarPU"     OFF "SCALFMM_USE_STARPU" OFF)
-    CMAKE_DEPENDENT_OPTION(SCALFMM_STARPU_USE_PRIO  "Set to ON to enable priority with StarPU"   ON  "SCALFMM_USE_STARPU" OFF)
-    CMAKE_DEPENDENT_OPTION(SCALFMM_STARPU_FORCE_NO_SCHEDULER  "Set to ON to disable heteroprio even if supported" OFF "SCALFMM_USE_STARPU" OFF)
-    CMAKE_DEPENDENT_OPTION(SCALFMM_USE_STARPU_EXTRACT  "Set to ON to enable extract with StarPU mpi implicit" ON  "SCALFMM_USE_STARPU" OFF)
-  endif()
-  message(STATUS "AVANT  ${CMAKE_CXX_COMPILER_ID}" )
-  #
-  #  MPI
-  #
-  if( SCALFMM_USE_MPI )
-    try_compile(COMPILE_INTEL ${CMAKE_CURRENT_BINARY_DIR}
-      ${SCALFMM_CMAKE_MODULE_PATH}/compileTestIntel.cpp
-      COMPILE_DEFINITIONS "${CMAKE_CXX_FLAGS}")
-    if (COMPILE_INTEL)
-      set(CMAKE_CXX_COMPILER_ID  "Intel")
-    endif()
-  endif()
-  message(STATUS "CXX  ${CMAKE_CXX_COMPILER_ID}" )
-  # Set scalfmm to default libraries
-  set(SCALFMM_LIBRARIES "")
-  set(SCALFMM_CXX_FLAGS "-fpic -Wall")
-  #  set(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR}/Contribs")
-  #
-  #
-  # Test if openmp is here
-  #
-  find_package (OpenMP)
-  if(OPENMP_FOUND)
-    set(CMAKE_C_FLAGS          "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
-    set(CMAKE_CXX_FLAGS        "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
-  else(OPENMP_FOUND)
-    message(WARNING "OPENMP NOT FOUND")
-  endif(OPENMP_FOUND)
-  message(STATUS "SCALFMM_BUILD_DEBUG = ${SCALFMM_BUILD_DEBUG}" )
   #
-  if(CMAKE_SIZEOF_VOID_P EQUAL 8)
-    set(SCALFMM_CXX_FLAGS  "${SCALFMM_CXX_FLAGS} -m64")
-  endif()
-  ##############################################################################
-  #                           Inastemp                                         #
-  ##############################################################################
-
-  set(INASTEMP_JUST_LIB TRUE)
-  set(INASTEMP_DO_INSTALL TRUE)
-  # add the cmakelist directory
-  add_subdirectory(inastemp)
-  # use the filled variables from inastemp
-  INCLUDE_DIRECTORIES(
-           ${INASTEMP_BINARY_DIR}/Src
-           ${INASTEMP_SOURCE_DIR}/Src
-           ${INASTEMP_INCLUDE_DIR}
-           ${CMAKE_CURRENT_BINARY_DIR}/inastemp/Src
-      )
-  # propagate the flags to be able to compile
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${INASTEMP_CXX_FLAGS}")
-
-  ##############################################################################
-  #                           FUSE list                                        #
-  ##############################################################################
-  set(FUSE_LIST "")
-  #set(FUSE_LIST " MPI;BLAS;FFT;STARPU;CUDA;OPENCL;OMP4;SSE;AVX;AVX2;MIC;MPI2")
-  # then do list(APPEND FUSE_LIST "BLAS") to protect from FUSE_BLAS
-  #  list(APPEND FUSE_LIST "MPI")
-
-  ##############################################################################
-  #                        Debug      flags                                    #
-  ##############################################################################
+  # Set scalfmm global lists
+  # ------------------------
+  list(APPEND SCALFMM_CXX_FLAGS -fpic -Wall)
+
+  # TODO: Find new way to resolve dependencies...
+  # Set FUSE LIST
+  # -------------
+  set(FUSE_LIST "") # Construct during configure
+  set(FUSE_DEP_AVAILABLE "MPI;CUDA;STARPU;OMP4;BLAS;FFT;OPENCL") # List to compare against when compiling tests, etc...
   #
-  if( SCALFMM_BUILD_DEBUG )
-    #
-    # Compile Debug flags
-    #
-    set(CMAKE_BUILD_TYPE Debug)
-    ADD_DEFINITIONS(-O0)
-    if( APPLE )
-      set(SCALFMM_FLAGS_OPTI_DEBUG "-funroll-loops" CACHE STRING
-        "Set your optimization flags for debug mode.")
-    else(APPLE)
-      if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-        set(SCALFMM_FLAGS_OPTI_DEBUG "-fp-model strict  -funroll-loops" CACHE STRING
-          "Set your optimization flags for debug mode.")
-      else()
-        set(SCALFMM_FLAGS_OPTI_DEBUG "-funroll-loops" CACHE STRING
-          "Set your optimization flags for debug mode.")
+  # OpenMP
+  # ------
+  if(NOT OpenMP_CXX_FOUND)
+    find_package(OpenMP)
+    if(OpenMP_CXX_FOUND)
+      target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC OpenMP::OpenMP_CXX)
+      list(APPEND SCALFMM_LIBRARIES OpenMP)
+      if(OpenMP_CXX_VERSION_MAJOR GREATER_EQUAL 4)
+        list(APPEND FUSE_LIST OMP4)
       endif()
-    endif(APPLE)
-    #  ADD_DEFINITIONS(${SCALFMM_FLAGS_OPTI_DEBUG})
-    set(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS} ${SCALFMM_FLAGS_OPTI_DEBUG}")
-    set(CMAKE_CXX_FLAGS_TYPE "${CMAKE_CXX_FLAGS_DEBUG}")
+    else(OpenMP_CXX_FOUND)
+      message(WARNING "OPENMP NOT FOUND")
+    endif(OpenMP_CXX_FOUND)
+  endif(NOT OpenMP_CXX_FOUND)
+
+  #
+  # Inastemp
+  # --------
+  if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/inastemp")
+
+    # Set option() CMP0077 to old for inastemp...
+    set(CMAKE_POLICY_DEFAULT_CMP0077 OLD)
+    set(INASTEMP_JUST_LIB TRUE)
+    set(INASTEMP_DO_INSTALL TRUE)
+    # Create target
+    add_subdirectory(inastemp)
+    add_library(inastemp INTERFACE)
+    target_include_directories(inastemp INTERFACE
+      $<BUILD_INTERFACE:${INASTEMP_SOURCE_DIR}/Src>
+      $<BUILD_INTERFACE:${INASTEMP_BINARY_DIR}/Src>
+      $<INSTALL_INTERFACE:include>
+      )
+    string(REPLACE " -" ";-" INASTEMP_FLAGS "${INASTEMP_CXX_FLAGS}")
+    list(REMOVE_DUPLICATES INASTEMP_FLAGS)
+    target_compile_options(inastemp INTERFACE ${INASTEMP_FLAGS})
+    target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC inastemp)
+
+    message(STATUS "Inastemp flags : ${INASTEMP_FLAGS}")
+    message(WARNING "Inastemp configures compile flags according to the current architure "
+            "you are compiling on. If you target a different machine, be carefull "
+            "with the available SIMD instruction set supported."
+            "Thus, use INASTEMP_USE_XXX to target the correct instruction set.")
 
-  else()
-    ##############################################################################
-    #                          Release flags                                     #
-    ##############################################################################
+  else(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/inastemp")
 
-    set(CMAKE_BUILD_TYPE Release)
-    set(CMAKE_CXX_FLAGS_TYPE  "${CMAKE_CXX_FLAGS_RELEASE}")
-    # if compiler is intel add -ip
+    message(STATUS "Inastemp is not available.")
+    message(STATUS "Please, initialize all git submodule.")
+    message(FATAL_ERROR "Exit : Inastemp dependency not found.")
 
+  endif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/inastemp")
+
+  #
+  # Specific Debug flags
+  # --------------------
+  if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+    list(APPEND SCALFMM_CXX_FLAGS -funroll-loops)
     if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-      set(SCALFMM_CXX_FLAGS  "${SCALFMM_CXX_FLAGS} -ipo  -fstrict-aliasing ")# -no-prec-div -no-prec-sqrt")
+      list(APPEND SCALFMM_CXX_FLAGS -fp-model\ strict)
     endif()
-    # Compile optimization
-    if(APPLE)
-      set(SCALFMM_FLAGS_OPTI_RELEASE "-funroll-loops" CACHE STRING
-        "Set your optimization flags for release mode.")
-    else(APPLE)
-      # Not apple system - Check the compiler flags
+  endif()
+
+  #
+  # Specific Release flags
+  # ----------------------
+  if(CMAKE_BUILD_TYPE STREQUAL "Release")
+    list(APPEND SCALFMM_CXX_FLAGS -funroll-loops)
+    if(NOT APPLE)
+      list(APPEND -ftree-vectorize)
       if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-        #set(SCALFMM_FLAGS_OPTI_RELEASE "-fp-model precise -fp-model source -fimf-precision=low  -funroll-loops -ftree-vectorize"
-        set(SCALFMM_FLAGS_OPTI_RELEASE "-funroll-loops -ftree-vectorize"
-          CACHE STRING "Set your optimization flags for release mode.")
-        # set(SCALFMM_FLAGS_OPTI_RELEASE "-funroll-loops -ftree-vectorize" CACHE STRING
-        #   "Set your optimization flags for release mode.")
-      else()
-        set(SCALFMM_FLAGS_OPTI_RELEASE "-ffast-math -funroll-loops -ftree-vectorize" CACHE STRING
-          "Set your optimization flags for release mode.")
+        list(APPEND SCALFMM_CXX_FLAGS  -ipo  -fstrict-aliasing)
       endif()
-    endif(APPLE)
-    #
-    set(SCALFMM_CXX_FLAGS  "${SCALFMM_CXX_FLAGS} ${SCALFMM_FLAGS_OPTI_RELEASE}")
+      list(APPEND SCALFMM_CXX_FLAGS -ffast-math -ftree-vectorize)
+    endif(NOT APPLE)
   endif()
-  MESSAGE(STATUS   " %%%%%%%%%% SCALFMM_CXX_FLAGS  ${SCALFMM_CXX_FLAGS} %%%%%%%%%%%%%")
-  MESSAGE(STATUS   " %%%%%%%%%% CMAKE_CXX_FLAGS_RELEASE  ${CMAKE_CXX_FLAGS_RELEASE} %%%%%%%%%%%%%")
 
   #
-  ##############################################################################
-  #                Attach source code to exec                                  #
-  ##############################################################################
-  message(STATUS "SCALFMM_ATTACHE_SOURCE       = ${SCALFMM_ATTACHE_SOURCE}" )
-  if( SCALFMM_ATTACHE_SOURCE )
-    message(STATUS "Option -g is used, the code is attached to the binary." )
-    set(SCALFMM_CXX_FLAGS  "${SCALFMM_CXX_FLAGS} -g")
-  endif(SCALFMM_ATTACHE_SOURCE)
-  #
-  ##############################################################################
-  #                                 find MPI                                   #
-  ##############################################################################
-  #
-  if( SCALFMM_USE_MPI )
-    find_package(MPI REQUIRED)
-    if(MPI_FOUND)
-      if (MPI_CXX_FOUND)
-#	message("MPI_CXX is in the place")
-        if (MPI_CXX_INCLUDE_PATH)
-          include_directories( ${MPI_CXX_INCLUDE_PATH} )
-        endif()
-        if (MPI_CXX_COMPILE_FLAGS)
-          string(REPLACE ";" " " MPI_CXX_COMPILE_FLAGS "${MPI_CXX_COMPILE_FLAGS}")
-          set(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS} ${MPI_CXX_COMPILE_FLAGS}")
-        endif()
-        if (MPI_CXX_INCLUDE_PATH)
-          LIST(APPEND SCALFMM_INCLUDES  "${SCALFMM_INCLUDES};${MPI_CXX_INCLUDE_PATH}")
-        endif()
-        if (MPI_CXX_LINK_FLAGS)
-          list(APPEND "CMAKE_EXE_LINKER_FLAGS ${MPI_CXX_LINK_FLAGS}")
-        endif()
-        if (MPI_CXX_LIBRARIES)
-          set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${MPI_CXX_LIBRARIES}")
-        endif()
-      else (MPI_CXX_FOUND)
+  # MPI
+  # ---
+  if(SCALFMM_USE_MPI)
+    if(NOT MPI_FOUND)
+      try_compile(COMPILE_INTEL ${CMAKE_CURRENT_BINARY_DIR}
+      ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/compileTestIntel.cpp
+      COMPILE_DEFINITIONS "${CMAKE_CXX_FLAGS}")
+      if(COMPILE_INTEL)
+        set(CMAKE_CXX_COMPILER_ID  "Intel")
+      endif()
+      message(STATUS "CXX  ${CMAKE_CXX_COMPILER_ID}" )
+
+      find_package(MPI REQUIRED)
+      if(MPI_CXX_FOUND)
+        target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC MPI::MPI_CXX)
+        list(APPEND SCALFMM_LIBRARIES MPI)
+        list(APPEND FUSE_LIST MPI)
+	target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/FMpi.cpp)
+      else(MPI_CXX_FOUND)
         message(FATAL_ERROR "MPI_CXX is required but was not found. "
-          "Please provide an MPI compiler in your environment."
-          "Note that you can give the path to your MPI installation "
-          "by setting MPI_DIR cmake variable.")
-      endif (MPI_CXX_FOUND)
-    else(MPI_FOUND)
-    endif(MPI_FOUND)
-  endif( SCALFMM_USE_MPI)
-  list(APPEND FUSE_LIST "MPI")
-  #
-  ##############################################################################
-  #                             Blas option                                    #
-  ##############################################################################
+                "Please provide an MPI compiler in your environment."
+                "Note that you can give the path to your MPI installation "
+                "by setting MPI_DIR cmake variable.")
+      endif(MPI_CXX_FOUND)
+    endif(NOT MPI_FOUND)
+  endif(SCALFMM_USE_MPI)
   #
-  if( SCALFMM_USE_BLAS )
-#      if(APPLE) # In order to use QT-creator on macos
-#            list(APPEND CMAKE_REQUIRED_INCLUDES $ENV{MKLROOT}/include)
-#      endif()
-
-    #   include(FortranCInterface)
-    #    # Define a Fortran interface file (FCMangle.hpp)
-    #   FortranCInterface_HEADER( ${CMAKE_CURRENT_SOURCE_DIR}/Src/FCMangle.hpp
-    #                            MACRO_NAMESPACE "PM_"
-    #                           SYMBOL_NAMESPACE "PM_"
-    #                           SYMBOLS init testPPM:init)
-    message(STATUS "CMAKE_CXX_COMPILER_ID STREQUAL  ${CMAKE_CXX_COMPILER_ID}")
-
-    option( SCALFMM_USE_MKL_AS_BLAS  "Set to ON to use MKL BLAS/LAPACK" OFF )
-    option( SCALFMM_USE_ESSL_AS_BLAS "Set to ON to use ESSL BLAS/LAPACK" OFF )
+  # Blas options
+  # ------------
+  if(SCALFMM_USE_BLAS)
+
+    option( SCALFMM_USE_MKL_AS_BLAS   "Set to ON to use MKL BLAS/LAPACK" OFF )
+    option( SCALFMM_USE_ESSL_AS_BLAS  "Set to ON to use ESSL BLAS/LAPACK" OFF )
+    option( SCALFMM_USE_EXTERNAL_BLAS "Set to ON to use external BLAS. Please, set BLAS_LIBRARIES variable." OFF )
 
     if( SCALFMM_USE_MKL_AS_BLAS )
       set(BLA_VENDOR "Intel10_64lp_seq")
       find_package(BLAS ) # not REQUIRED
-      unset(LAPACK_LIBRARIES)
-      if (BLAS_LIBRARIES)
-        set(BLASLAPACK_LIBRARIES ${BLAS_LIBRARIES})
-      endif()
     elseif(SCALFMM_USE_ESSL_AS_BLAS)
       set(BLA_VENDOR "IBMESSL")
       find_package(BLAS   QUIET) # not REQUIRED
       find_package(LAPACK QUIET) # not REQUIRED
-      if (LAPACK_LIBRARIES)
-        set(BLASLAPACK_LIBRARIES "${LAPACK_LIBRARIES}")
-      endif()
-      if (BLAS_LIBRARIES)
-        list(APPEND BLASLAPACK_LIBRARIES ${BLAS_LIBRARIES})
-      endif()
     elseif(SCALFMM_USE_EXTERNAL_BLAS)
       message(STATUS "BLAS SET BY EXTERNAL PROGRAM = ${BLAS_LIBRARIES}")
       list(APPEND BLASLAPACK_LIBRARIES "${BLAS_LIBRARIES}")
     else()
       find_package(BLAS)  # not REQUIRED
       find_package(LAPACK)  # not REQUIRED
-      set(BLASLAPACK_LIBRARIES)
-      if (LAPACK_LIBRARIES)
-        set(BLASLAPACK_LIBRARIES "${LAPACK_LIBRARIES}")
-      endif()
-      if (BLAS_LIBRARIES)
-        list(APPEND BLASLAPACK_LIBRARIES "${BLAS_LIBRARIES}")
-      endif()
     endif()
 
     if(BLAS_FOUND)
-      set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${BLASLAPACK_LIBRARIES}")
-      if(BLAS_LIBRARY_DIRS)
-        # the RPATH to be used when installing
-        list(APPEND CMAKE_INSTALL_RPATH "${BLAS_LIBRARY_DIRS}")
-      endif()
-      if(LAPACK_FOUND AND LAPACK_LIBRARY_DIRS)
-        # the RPATH to be used when installing
-        list(APPEND CMAKE_INSTALL_RPATH "${LAPACK_LIBRARY_DIRS}")
+      target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC blas::blas)
+      list(APPEND SCALFMM_LIBRARIES BLAS)
+      list(APPEND FUSE_LIST BLAS)
+
+      if(LAPACK_FOUND)
+        target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC lapack::lapack)
+        list(APPEND SCALFMM_LIBRARIES LAPACK)
       endif()
-      message (STATUS "check BLAS Fortran mangling")
+
+      message (STATUS "Check BLAS Fortran mangling")
       # add options to let the user be able to force a behavior
       option( SCALFMM_BLAS_ADD_     "Set to ON to force calls to BLAS Fortran symbols with _ (ex: dgemm_)"        ON )
       option( SCALFMM_BLAS_UPCASE   "Set to ON to force calls to BLAS Fortran symbols in capital (ex: DGEMM)"     OFF )
@@ -389,7 +303,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_
         endif()
       endif (NOT SCALFMM_BLAS_ADD_ AND NOT SCALFMM_BLAS_UPCASE AND NOT SCALFMM_BLAS_NOCHANGE)
     else()
-      MESSAGE(WARNING "BLAS: ${BLAS-FOUND}")
+      MESSAGE(WARNING "BLAS: ${BLAS_FOUND}")
 
       message(WARNING "BLAS has not been found, SCALFMM will continue to compile but some applications will be disabled.")
       message(WARNING "If you have BLAS set BLAS_LIBDIR, BLAS_INCDIR or BLAS_DIR (CMake variables using -D or environment variables).")
@@ -397,52 +311,42 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_
     endif()
 
   endif(SCALFMM_USE_BLAS)
-  list(APPEND FUSE_LIST "BLAS")
-  #
-  # FFT option
+
   #
+  # FFT options
+  # -----------
   CMAKE_DEPENDENT_OPTION(SCALFMM_USE_MKL_AS_FFTW  "Set to ON to use MKL FFTW"  ON  "SCALFMM_USE_FFT;SCALFMM_USE_MKL_AS_BLAS"  OFF )
   CMAKE_DEPENDENT_OPTION(SCALFMM_USE_ESSL_AS_FFTW "Set to ON to use ESSL FFTW" ON  "SCALFMM_USE_FFT;SCALFMM_USE_ESSL_AS_BLAS" OFF )
-  if( SCALFMM_USE_FFT )
+
+  if(SCALFMM_USE_FFT)
     message(STATUS "SCALFMM USE FFT Configure:")
 
     # The package find_package(FFTW) can be used with the following COMPONENTS:
     # MKL, ESSL, THREADS|OMP and/or SIMPLE|LONG|QUAD
     # Default will find the real double precision fftw library version without THREADS|OMP
-    if( SCALFMM_USE_MKL_AS_FFTW )
-
+    if(SCALFMM_USE_MKL_AS_FFTW)
       message(STATUS "         SCALFMM USE FFT from MKL")
-      find_package(FFTW COMPONENTS MKL)
+      set(BLA_VENDOR "Intel10_64lp_seq")
+      if(NOT TARGET blas::blas)
+        find_package(FFTW COMPONENTS MKL)
+      else()
+        set(FFTW_FOUND 1)
+        find_package(FFTW COMPONENTS MKL QUIET)
+        target_include_directories(${CMAKE_PROJECT_NAME} PUBLIC ${FFTW_INCLUDE_DIRS})
+      endif()
     elseif (SCALFMM_USE_ESSL_AS_FFTW)
       message(STATUS "         SCALFMM USE FFT from ESSL ")
       find_package(FFTW COMPONENTS ESSL)
-      add_definitions(-DSCALFMM_USE_ESSL_AS_FFTW)
     else()
       message(STATUS "         SCALFMM USE FFTW")
       find_package(FFTW COMPONENTS SIMPLE)
     endif()
 
     if(FFTW_FOUND)
-      if (FFTW_LIBRARY_DIRS_DEP)
-        set(FFT_LIBRARIES "-L${FFTW_LIBRARY_DIRS_DEP};" CACHE STRING "Set your MKL flags")
-      endif()
-      if (FFTW_LIBRARIES_DEP)
-        foreach (fft_lib ${FFTW_LIBRARIES_DEP})
-          set(FFT_LIBRARIES "${FFT_LIBRARIES};${fft_lib};")
-        endforeach()
-      endif()
-
-      set(FFT_INCLUDES "${FFTW_INCLUDE_DIRS_DEP}" )
-      if (FFT_LIBRARIES)
-        set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${FFT_LIBRARIES}")
-      endif()
-
-      if(FFTW_LIBRARY_DIRS)
-        # the RPATH to be used when installing
-        list(APPEND CMAKE_INSTALL_RPATH "${FFTW_LIBRARY_DIRS}")
-      endif()
-      if (FFT_INCLUDES)
-        LIST(APPEND SCALFMM_INCLUDES "${FFT_INCLUDES}")
+      list(APPEND FUSE_LIST FFT)
+      if(NOT SCALFMM_USE_MKL_AS_FFTW)
+        target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC fftw::fftw)
+        list(APPEND SCALFMM_LIBRARIES FFTW)
       endif()
     else(FFTW_FOUND)
       message(WARNING "FFTW has not been found, SCALFMM will continue to compile but some applications will be disabled.")
@@ -451,386 +355,279 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_
     endif(FFTW_FOUND)
 
   endif(SCALFMM_USE_FFT)
-  message(STATUS "SCALFMM_USE_FFT       =  ${SCALFMM_USE_FFT}")
-  if (SCALFMM_INCLUDES)
-    list(REMOVE_DUPLICATES SCALFMM_INCLUDES)
-  endif()
-  if (SCALFMM_LIBRARIES)
-    list(REMOVE_DUPLICATES SCALFMM_LIBRARIES)
-  endif()
-  list(APPEND FUSE_LIST "FFT")
+  message(STATUS "SCALFMM_USE_FFT = ${SCALFMM_USE_FFT}")
 
   #
-  # C++ 2011
-  message( STATUS "CMAKE_SYSTEM:   ${CMAKE_SYSTEM}  CMAKE_CXX_COMPILER_ID ${CMAKE_CXX_COMPILER_ID}  CMAKE_CXX_COMPILER ${NAME}")
-  if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
-    execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE INTEL_VERSION)
-    message( STATUS "Intel:   ${INTEL_VERSION}")
-    set(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS} -Wall")
-  else()
-    # Compile option valid on GCC/G++
-    set(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS} -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wconversion -Wcast-qual -Wcast-align -Woverloaded-virtual")
-  endif()
+  # C++ 2014
+  # --------
+  target_compile_features(${CMAKE_PROJECT_NAME} INTERFACE cxx_std_14)
+
   #
-  ##################################################################
-  #              STARPU Section
-  ##################################################################
+  # Additional flags for the library
+  # --------------------------------
+  list(APPEND SCALFMM_CXX_FLAGS -Wshadow -Wpointer-arith )
+  if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+    list(APPEND SCALFMM_CXX_FLAGS -Wcast-qual -Wconversion -Wcast-align -Woverloaded-virtual)
+  endif()
+
   #
-  message( STATUS "SCALFMM_USE_STARPU             = ${SCALFMM_USE_STARPU}" )
+  # STARPU Section
+  # --------------
+  message( STATUS "SCALFMM_USE_STARPU = ${SCALFMM_USE_STARPU}" )
+  CMAKE_DEPENDENT_OPTION( SCALFMM_USE_OPENCL "Set to ON to use OPENCL with StarPU" OFF "SCALFMM_USE_STARPU" OFF)
+  CMAKE_DEPENDENT_OPTION( SCALFMM_USE_CUDA "Set to ON to use OPENCL with StarPU" OFF "SCALFMM_USE_STARPU" OFF)
   if( SCALFMM_USE_STARPU )
-    # CUDA could be used with StarPU enabled
-    option( SCALFMM_USE_CUDA "Set to ON to use CUDA with StarPU" OFF )
-    if(SCALFMM_USE_CUDA)
-      execute_process(COMMAND nvcc --version ERROR_VARIABLE cuda_error_output OUTPUT_QUIET)
-      if(cuda_error_output)
-        message( FATAL_ERROR "nvcc is needed with CUDA." )
-      endif()
-      if(NOT DEFINED CUSTOM_CUDA_FLAGS)
-        set( CUSTOM_CUDA_FLAGS "-std=c++11;-arch=sm_20;--ptxas-options=-v;-use_fast_math" CACHE
-          STRING "Set your CUDA flags, for example : -arch=sm_20;--ptxas-options=-v;-use_fast_math")
-      endif()
-      # This is needed to remove backslash after space in ADD_CUSTOM_COMMAND
-      separate_arguments(CUSTOM_CUDA_FLAGS)
-      message( STATUS "CUSTOM_CUDA_FLAGS             = ${CUSTOM_CUDA_FLAGS}" )
-      find_package(CUDA REQUIRED)
-
-      if (CUDA_INCLUDE_DIRS)
-        include_directories(${CUDA_INCLUDE_DIRS})
-      endif()
-      if (CUDA_LIBRARIES)
-        set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${CUDA_LIBRARIES}")
-      endif()
-
-      set(CUDA_NEEDED_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/Src)
-    endif()
-
+    enable_language(C)
     # Find StarPU with a list of optional components
-    set(SCALFMM_STARPU_VERSION "1.2" CACHE STRING " STARPU version desired")
+    set(SCALFMM_STARPU_VERSION "1.2.8" CACHE STRING " STARPU version desired")
     # create list of components in order to make a single call to find_package(starpu...)
     set(STARPU_COMPONENT_LIST "HWLOC")
-
-
     if(SCALFMM_USE_CUDA)
-      list(APPEND STARPU_COMPONENT_LIST "CUDA")
+      message(WARNING "This release doest not include a full support for CUDA/OpenCl.")
+      #list(APPEND STARPU_COMPONENT_LIST "CUDA")
     endif()
-    list(APPEND FUSE_LIST "CUDA")
-
     if(SCALFMM_USE_MPI)
       list(APPEND STARPU_COMPONENT_LIST "MPI")
     endif()
-    # TODO: replace this by a component of find starpu
-    OPTION( SCALFMM_USE_OPENCL      "Set to ON to use OPENCL with StarPU" OFF )
-
     if(SCALFMM_USE_OPENCL)
-      list(APPEND STARPU_COMPONENT_LIST "OPENCL")
-#      include_directories($ENV{OPENCL_INC})
-#      SET(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};-L$ENV{OPENCL_LIB};-lOpenCL")
+      message(WARNING "This release doest not include a full support for CUDA/OpenCl.")
+      #list(APPEND STARPU_COMPONENT_LIST "OPENCL")
     endif()
-    list(APPEND FUSE_LIST "OPENCL")
-
 
     find_package(STARPU ${SCALFMM_STARPU_VERSION} REQUIRED
       COMPONENTS ${STARPU_COMPONENT_LIST})
 
-    if(HWLOC_FOUND AND HWLOC_LIBRARY_DIRS)
-      # the RPATH to be used when installing
-      list(APPEND CMAKE_INSTALL_RPATH "${HWLOC_LIBRARY_DIRS}")
-    endif()
+    if(STARPU_FOUND)
+      target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC starpu::starpu_dep)
+      list(APPEND FUSE_LIST "STARPU")
+      list(APPEND SCALFMM_LIBRARIES "STARPU")
+      if(SCALFMM_USE_CUDA)
+        #list(APPEND FUSE_LIST "CUDA")
+      endif()
+      if(SCALFMM_USE_OPENCL)
+        #list(APPEND FUSE_LIST "OPENCL")
+      endif()
+    else(STARPU_FOUND)
+      message(FATAL_ERROR "StarPU not found.")
+    endif(STARPU_FOUND)
+  endif(SCALFMM_USE_STARPU)
 
-    if(FXT_FOUND AND FXT_LIBRARY_DIRS)
-      # the RPATH to be used when installing
-      list(APPEND CMAKE_INSTALL_RPATH "${FXT_LIBRARY_DIRS}")
-    endif()
-    if(STARPU_FOUND AND STARPU_LIBRARY_DIRS)
-      # the RPATH to be used when installing
-      list(APPEND CMAKE_INSTALL_RPATH "${STARPU_LIBRARY_DIRS}")
-      # Append list of libraries and include dirs
-      include_directories(${STARPU_INCLUDE_DIRS_DEP})
-      foreach (starpu_libdir ${STARPU_LIBRARY_DIRS_DEP})
-        if (${starpu_libdir} MATCHES "^ *-L")
-          set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${starpu_libdir}")
-        else()
-          set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};-L${starpu_libdir}")
-        endif()
-      endforeach()
-      foreach (starpu_lib ${STARPU_LIBRARIES_DEP})
-        if (EXISTS ${starpu_lib} OR ${starpu_lib} MATCHES "^ *-")
-          set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${starpu_lib}")
-        else()
-          set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};-l${starpu_lib}")
-        endif()
-      endforeach()
+  # Additional options for developers
+  if( SCALFMM_ONLY_DEVEL )
+    if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
+      option( SCALFMM_USE_OMP4 "Set to ON to disable the gcc/intel omp4"    OFF )
     else()
-      # StarPU not found
-
+      option( SCALFMM_USE_OMP4 "Set to ON to disable the gcc/intel omp4"    ON )
     endif()
+    option( SCALFMM_TIME_OMPTASKS "Set to ON to time omp4 tasks and generate output file"    OFF )
+    # SIMGRID and peformance models options
+    option( SCALFMM_SIMGRID_NODATA "Set to ON to avoid the allocation of numerical parts in the group tree" OFF )
+    option( STARPU_SIMGRID_MLR_MODELS "Set to ON to enable MLR models need for calibration and simulation" OFF )
+    # OPENMP 4/5 support
+    message(WARNING "OpenMP_VERSION:  ${OpenMP_VERSION}")
+    option( OPENMP_SUPPORT_PRIORITY  "Set to ON to enable tasks priority (OMP4.x/KSTAR/StarPU compiler only)" OFF )
+    # STARPU options
+    cmake_dependent_option(OPENMP_SUPPORT_COMMUTE        "Set to ON to let tasks commute (KSTAR/StarPU compiler only)" OFF
+      "SCALFMM_USE_STARPU" OFF)
+    cmake_dependent_option(OPENMP_SUPPORT_TASK_NAME       "Set to ON to enable a taskname clause for tasks (KSTAR/StarPU compiler only)" OFF
+      "SCALFMM_USE_STARPU" OFF)
+    cmake_dependent_option(SCALFMM_STARPU_USE_COMMUTE  "Set to ON to enable commute with StarPU" ON  "SCALFMM_USE_STARPU" OFF)
+    cmake_dependent_option(SCALFMM_STARPU_USE_REDUX  "Set to ON to enable redux with StarPU"     OFF "SCALFMM_USE_STARPU" OFF)
+    cmake_dependent_option(SCALFMM_STARPU_USE_PRIO  "Set to ON to enable priority with StarPU"   ON  "SCALFMM_USE_STARPU" OFF)
+    cmake_dependent_option(SCALFMM_STARPU_FORCE_NO_SCHEDULER  "Set to ON to disable heteroprio even if supported" OFF "SCALFMM_USE_STARPU" OFF)
+    cmake_dependent_option(SCALFMM_USE_STARPU_EXTRACT  "Set to ON to enable extract with StarPU mpi implicit" ON  "SCALFMM_USE_STARPU" OFF)
+  endif()
 
-        # TODO: is this very useful? CUDA is already a component of find starpu
-    if (CUDA_LIBRARIES)
-      set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES};${CUDA_LIBRARIES}")
+  #
+  # Set ScalFMM compile flags
+  # -------------------------
+  string(REPLACE ";" " " SCALFMM_COMPILE_FLAGS "${SCALFMM_CXX_FLAGS}")
+  set(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS}" CACHE STRING "Global compile flags for ScalFMM")
+  message(STATUS "ScalFMM final flags : ${SCALFMM_CXX_FLAGS}")
+  # And adding flags to target
+  # --------------------------
+  target_compile_options(${CMAKE_PROJECT_NAME} PUBLIC "${SCALFMM_CXX_FLAGS}")
+
+  #
+  # Set ScalFMM dependencies
+  # ------------------------
+  string(REPLACE ";" " " SCALFMM_COMPILE_LIBS "${SCALFMM_LIBRARIES}")
+  set(SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}" CACHE STRING "ScalFMM libraries dependencies")
+  message(STATUS "ScalFMM dependencies : ${SCALFMM_LIBRARIES}")
+
+  #  #
+  #  # Set ScalFMM link flags
+  #  # ----------------------
+  #  string(REPLACE ";" " " SCALFMM_LINK_FLAGS "${SCALFMM_LINK_FLAGS}")
+  #  set(SCALFMM_LINK_FLAGS "${SCALFMM_LINK_FLAGS}" CACHE STRING "Global link flags for ScalFMM")
+  #  message(STATUS "ScalFMM link flags : ${SCALFMM_LINK_FLAGS}")
+  #  # And adding lin flags to the target
+  #  # ----------------------------------
+  #  target_link_options(${CMAKE_PROJECT_NAME} INTERFACE "${SCALFMM_LIBRARIES}")
+
+  #
+  # Set ScalFMM compile definitions
+  # -------------------------------
+  set(SCALFMM_COMPILE_DEFINITIONS "${SCALFMM_COMPILE_DEFINITIONS}" CACHE STRING "Global compile definitions for ScalFMM")
+  message(STATUS "ScalFMM compile definitions : ${SCALFMM_COMPILE_DEFINITIONS}")
+  # And adding definitions to target
+  # --------------------------------
+  target_compile_definitions(${CMAKE_PROJECT_NAME} PUBLIC "${SCALFMM_COMPILE_DEFINITIONS}")
+
+
+  #
+  # Generate ScalFmmConfig.h
+  # ------------------------
+  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/ScalFmmConfig.h.cmake
+    ${CMAKE_CURRENT_BINARY_DIR}/include/ScalFmmConfig.h)
+
+  #
+  # Static analysis during build
+  # ----------------------------
+  option(SCALFMM_USE_STATIC_ANALYSIS "Set to ON to enable static analysis tools." OFF)
+  get_target_property(SCALFMM_INCLUDE_DIRS ${CMAKE_PROJECT_NAME} INCLUDE_DIRECTORIES)
+
+  if(SCALFMM_USE_STATIC_ANALYSIS)
+    find_program(CPPCHECK "cppcheck")
+    if (CPPCHECK)
+      set(CMAKE_CXX_CPPCHECK "${CPPCHECK}"
+        "--language=c++"
+        "$<GENEX_EVAL:-I$<JOIN:$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>, -I>>"
+        "-v"
+        "--enable=all"
+        "--force"
+        "--inline-suppr"
+        )
+      message(STATUS "CPPCHECK analysis is ON.")
     endif()
 
-    # Message
-    if (STARPU_INCLUDE_DIRS)
-      message(STATUS "         STARPU_INCLUDES           = ${STARPU_INCLUDE_DIRS}")
-      LIST(APPEND SCALFMM_INCLUDES  "${STARPU_INCLUDE_DIRS}")
+    find_program(CLANGTIDY "clang-tidy")
+    if (CLANGTIDY)
+      set(CMAKE_CXX_CLANG_TIDY "${CLANGTIDY};-checks=-*,boost-*,cppcoreguidelines-*,clang-analyser-cplusplus*,modernize-*,mpi-*,performance-*,portability-*,readability-*")
+      message(STATUS "Clang Tidy analysis is ON.")
     endif()
 
-    # Adding SimGrid includes
-    LIST(APPEND SCALFMM_INCLUDES "$ENV{SIMGRID_INCLUDE}")
-    message(STATUS "         Adding SIMGRID           = $ENV{SIMGRID_INCLUDE}")
-  endif(SCALFMM_USE_STARPU)
-  list(APPEND FUSE_LIST "STARPU")
-
-  ##################################################################
-  #                         FUSE                                   #
-  ##################################################################
-
-  list(APPEND FUSE_LIST "SSE")
-  list(APPEND FUSE_LIST "AVX")
-  list(APPEND FUSE_LIST "MIC")
-
-  ##################################################################
-  #
-  #   Set EZTRACE
-  #
-  ##################################################################
-  If(SCALFMM_USE_EZTRACE)
-    find_package (PkgConfig)
-    if(PKG_CONFIG_FOUND)
-      set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH "ON")
-      pkg_search_module( EZTrace REQUIRED eztrace)
-      if(EZTrace_FOUND)
-        link_directories(${EZTrace_LIBRARY_DIRS})
-        link_libraries( ${EZTrace_LIBRARIES})
-        if (EZTrace_LIBRARY_DIRS)
-          # the RPATH to be used when installing
-          list(APPEND CMAKE_INSTALL_RPATH "${EZTrace_LIBRARY_DIRS}")
-        endif()
-        IF( SCALFMM_USE_MPI )
-          link_libraries(-leztrace-autostart-mpi)
-        ENDIF(SCALFMM_USE_MPI)
-        include_directories(${EZTrace_INCLUDE_DIRS})
-        MESSAGE(STATUS "EZTRACE:  ${EZTrace_INCLUDE_DIRS}   ${EZTrace_LIBRARY_DIRS}  ${EZTrace_LIBRARIES}")
-        CMAKE_DEPENDENT_OPTION(SCALFMM_TRACE_ALGO "Set to ON to trace the full algorithm (all operators)" ON  "SCALFMM_USE_EZTRACE" OFF )
-        CMAKE_DEPENDENT_OPTION(SCALFMM_TRACE_P2M   "Set to ON to trace P2M operator" OFF  "SCALFMM_USE_EZTRACE" OFF )
-        CMAKE_DEPENDENT_OPTION(SCALFMM_TRACE_M2M   "Set to ON to trace M2M operator" OFF  "SCALFMM_USE_EZTRACE" OFF )
-        CMAKE_DEPENDENT_OPTION(SCALFMM_TRACE_M2L   "Set to ON to trace M2L operator" OFF  "SCALFMM_USE_EZTRACE" OFF )
-        CMAKE_DEPENDENT_OPTION(SCALFMM_TRACE_L2L   "Set to ON to trace L2L operator" OFF  "SCALFMM_USE_EZTRACE" OFF )
-        CMAKE_DEPENDENT_OPTION(SCALFMM_TRACE_P2P   "Set to ON to trace P2P operator" OFF  "SCALFMM_USE_EZTRACE" OFF )
-      else(EZTrace_FOUND)
-        MESSAGE(WARNING "Eztrace not found - EZTRACE Is set to OFF")
-        set(SCALFMM_USE_EZTRACE OFF)
-      endif(EZTrace_FOUND)
-    else(PKG_CONFIG_FOUND)
-      MESSAGE(WARNING "PKG-CONFIG not found - EZTRACE Is set to OFF")
-      set(SCALFMM_USE_EZTRACE OFF)
-    endif(PKG_CONFIG_FOUND)
-
-  endif(SCALFMM_USE_EZTRACE)
-
-  list(APPEND FUSE_LIST "OMP4")
-
-  ##################################################################
-  #
-  #   To catch signals
-  #
-  ##################################################################
-  if((WIN32 OR (${CMAKE_SYSTEM_NAME} MATCHES "Windows")) AND SCALFMM_USE_SIGNALS)
-    # We are on Windows and we cannot catch signals
-    message( FATAL_ERROR "Catching the signals requieres an UNIX system." )
-  else()
-    IF( NOT APPLE)
-      SET(SCALFMM_CXX_FLAGS "${SCALFMM_CXX_FLAGS} -rdynamic")
-    ENDIF()
+    find_program(IWYU "include-what-you-use")
+    if(IWYU)
+      set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE "${IWYU}")
+      message(STATUS "Include What You Use analysis is ON.")
+    endif()
   endif()
-  ##################################################################
-  #                                                                #
-  #                     END SETTING VARIABLES                      #
-  #                                                                #
-  ##################################################################
-  #
-  # Generate  ScalFmmConfig.h
-  #
-  set(SCALFMM_COMPILE_FLAGS "${SCALFMM_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
-  set(CMAKE_CXX_FLAGS "${SCALFMM_COMPILE_FLAGS}")
-  # We need the libraries without spaces (inside the config file)
-  set(SCALFMM_COMPILE_LIBS   "")
-  foreach(lib_var ${SCALFMM_LIBRARIES})
-    string(STRIP ${lib_var} lib_var)
-    LIST(APPEND SCALFMM_COMPILE_LIBS   ${lib_var})
-  endforeach()
-  string(REPLACE " " ";" SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}")
-  string(REPLACE ";;" ";" SCALFMM_LIBRARIES "${SCALFMM_LIBRARIES}")
-#  string(REPLACE " " ";" SCALFMM_INCLUDES "${SCALFMM_INCLUDES}")
-#  string(REPLACE ";;" ";" SCALFMM_INCLUDES "${SCALFMM_INCLUDES}")
-  configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/Src/ScalFmmConfig.h.cmake
-    ${CMAKE_CURRENT_BINARY_DIR}/Src/ScalFmmConfig.h  )
-  #
-  ##################################################################
-  #                      Build - lib                               #
-  ##################################################################
-  #
-  MESSAGE(STATUS "FUSE : ${FUSE_LIST} ")
-  add_subdirectory(Contribs)
-  add_subdirectory(Src)
-  # Link with scalfmm lib
-  set(scalfmm_lib scalfmm)
+
   #
-  ##################################################################
-  #            Remove compilation  of the drivers                  #
-  ##################################################################
-  message(STATUS "SCALFMM_BUILD_EXAMPLES  =  ${SCALFMM_BUILD_EXAMPLES}" )
+  # Build Examples
+  # --------------
+  message(STATUS "SCALFMM_BUILD_EXAMPLES = ${SCALFMM_BUILD_EXAMPLES}" )
   if( SCALFMM_BUILD_EXAMPLES )
     # Build - Examples and drivers
     add_subdirectory(Examples)
   endif()
-  ##################################################################
-  #           Build tools (Internal use)                           #
-  ##################################################################
-  # Build - UTILs
+
+  #
+  # Build tools (Internal use)
+  # --------------------------
+  # Build - Utils
   if( SCALFMM_ONLY_DEVEL AND SCALFMM_BUILD_UTILS)
     add_subdirectory(Utils)
   endif()
 
-  ##################################################################
-  #                Build -Tests to see examples                    #
-  ##################################################################
+  #
+  # Build Tests to see examples
+  # ----------------------------
   # Build - Tests
-  message( STATUS "SCALFMM_BUILD_TESTS          = ${SCALFMM_BUILD_TESTS}" )
+  message( STATUS "SCALFMM_BUILD_TESTS = ${SCALFMM_BUILD_TESTS}" )
   if( SCALFMM_BUILD_TESTS )
     add_subdirectory(Tests)
   endif()
 
-  ##################################################################
-  #              Build - Unitary and numerical Tests               #
-  ##################################################################
   #
-  message( STATUS "SCALFMM_BUILD_UTESTS         = ${SCALFMM_BUILD_UTESTS}" )
+  # Build - Unitary and numerical Tests
+  # -----------------------------------
+  message( STATUS "SCALFMM_BUILD_UTESTS = ${SCALFMM_BUILD_UTESTS}" )
   if( SCALFMM_BUILD_UTESTS )
-    include(CTest)
     enable_testing()
+    include(CTest)
     add_subdirectory(UTests)
   endif()
+
   #
-  ##################################################################
-  #                           Add - doc                            #
-  ##################################################################
-  #
-  message(STATUS "SCALFMM_BUILD_DOC           =  ${SCALFMM_BUILD_DOC}" )
+  # Add - doc
+  # ---------
+  message(STATUS "SCALFMM_BUILD_DOC = ${SCALFMM_BUILD_DOC}" )
   if(SCALFMM_BUILD_DOC)
     add_subdirectory(Doc)
   endif()
+
   #
-  ##################################################################
-  #                       Build - Addons                           #
-  ##################################################################
-  #
-  #   SCALFMM_ADDON_CKERNELAPI doesn't works with scalfmm 2.0
-#  if( SCALFMM_USE_ADDONS )
-#    file(GLOB all_addons ./Addons/*)
-#    # Options
-#    option( SCALFMM_ADDON_CKERNELAPI "Set to ON to build ScaFMM FMM API interface" OFF )
-#    foreach(addon_name ${all_addons})
-#      message(STATUS "Addons += ${addon_name}" )
-#      add_subdirectory(${addon_name})
-#    endforeach()
-#  endif()
-
-  # Add custom clean command
-  if("${CMAKE_GENERATOR}" MATCHES "Make")
-    add_custom_target(reset
-      COMMAND ${CMAKE_MAKE_PROGRAM} clean && rm -r ./CMake* && cmake ..
-      WORKING_DIRECTORY ${CMAKE_CURRENT_DIR}
-      COMMENT "Cleaning Build dir and CMake cache, then do cmake.."
-      )
-  endif()
-  #
-  ##################################################################
-  #                                                                #
-  #                  Build and export cmake files                  #
-  #                                                                #
-  ##################################################################
-  #
-  message(STATUS "SCALFMM_BINARY_DIR:          " ${SCALFMM_BINARY_DIR})
-  configure_file(${SCALFMM_SOURCE_DIR}/ScalFMMConfig.cmake.in
-    ${SCALFMM_BINARY_DIR}/ScalFMMConfig.cmake
-    @ONLY IMMEDIATE
-    )
-  #
-  install(FILES  ${SCALFMM_BINARY_DIR}/ScalFMMConfig.cmake  DESTINATION lib/  )
+  # Export Library
+  # --------------
+  install(TARGETS ${CMAKE_PROJECT_NAME} inastemp
+    EXPORT ${CMAKE_PROJECT_NAME}-targets
+    LIBRARY DESTINATION lib
+    ARCHIVE DESTINATION lib
+    RUNTIME DESTINATION bin)
+
+  install(DIRECTORY ${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/include
+    DESTINATION ${CMAKE_INSTALL_PREFIX}
+    PATTERN "ScalFmmConfig.h.cmake" EXCLUDE)
+
+  install(FILES ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/include/ScalFmmConfig.h
+    DESTINATION include)
+
+  install(EXPORT ${CMAKE_PROJECT_NAME}-targets
+    FILE ${CMAKE_PROJECT_NAME}-targets.cmake
+    NAMESPACE ${CMAKE_PROJECT_NAME}::
+    DESTINATION lib/cmake/${CMAKE_PROJECT_NAME})
+
+  include(CMakePackageConfigHelpers)
+  write_basic_package_version_file("${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
+    VERSION ${${CMAKE_PROJECT_NAME}_VERSION}
+    COMPATIBILITY SameMajorVersion)
+
   if( SCALFMM_INSTALL_DATA )
     install(FILES  ${SCALFMM_SOURCE_DIR}/Data/test20k.fma  DESTINATION Data/   )
   endif()
+
+  configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}Config.cmake.in
+    "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+    INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/cmake/${CMAKE_PROJECT_NAME}/)
+
+  install(FILES "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
+    "${PROJECT_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake"
+    DESTINATION lib/cmake/${CMAKE_PROJECT_NAME})
+
   #
-  ##################################################################
-  #                                                                #
-  #              build a CPack driven installer package            #
-  #                                                                #
-  ##################################################################
-  #
-  # Use git commit number as CPACK_PACKAGE_VERSION_PATCH
-  set(CPACK_PACKAGE_VERSION_PATCH 0)
-  execute_process(
-    COMMAND git rev-list HEAD --count
-    OUTPUT_VARIABLE CPACK_PACKAGE_VERSION_PATCH
-    RESULT_VARIABLE RET
-    ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
-    )
-  #string_TRIM(PATCH1 PATCH)
-  set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY "ON")
-  #
-  set(CPACK_RESOURCE_FILE_LICENSE  "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE")
-  set(CPACK_PACKAGE_VERSION_MAJOR "${SCALFMM_MAJOR_VERSION}")
-  set(CPACK_PACKAGE_VERSION_MINOR "${SCALFMM_MINOR_VERSION}")
-  #
-  set(PACK_PACKAGE_VERSION "${SCALFMM_MAJOR_VERSION}.${SCALFMM_MINOR_VERSION}-${CPACK_PACKAGE_VERSION_PATCH}")
-  set(CPACK_SOURCE_GENERATOR "TGZ")
-  set(CPACK_SOURCE_PACKAGE_FILE_NAME  "SCALFMM-${SCALFMM_MAJOR_VERSION}.${SCALFMM_MINOR_VERSION}-${CPACK_PACKAGE_VERSION_PATCH}")
-  set(CPACK_SOURCE_IGNORE_FILES "\\\\.git;.DS_Store;.*~;/*.aux;/*.idx;/*.log;/*.out;/*.toc;/*.ilg;CMakeLists.txt.user;/.settings/")
-  list(APPEND CPACK_SOURCE_IGNORE_FILES  "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/Utils/;/Build*;/Obsolete/")
-  #
+  # build a CPack driven installer package
+  # --------------------------------------
+  # See CPackConfig.cmake for the details.
   include(CPack)
+
   #
-  #
-  ##################################################################
-  #                                                                #
-  #                      PRINT messages                            #
-  #                                                                #
-  ##################################################################
-  message(STATUS "CPACK_SOURCE_IGNORE_FILES      = ${CPACK_SOURCE_IGNORE_FILES}")
-  message(STATUS "CPACK_SOURCE_PACKAGE_FILE_NAME = ${CPACK_SOURCE_PACKAGE_FILE_NAME}")
-  #
+  # Print configure status
+  # ----------------------
   #                    Use Mem stats
   message(STATUS "SCALFMM_USE_MEM_STATS = ${SCALFMM_USE_MEM_STATS}" )
   #                    Use Log
-  message(STATUS "SCALFMM_USE_LOG       = ${SCALFMM_USE_LOG}" )
+  message(STATUS "SCALFMM_USE_LOG = ${SCALFMM_USE_LOG}" )
   #                    Use Assert
-  message(STATUS "SCALFMM_USE_ASSERT    = ${SCALFMM_USE_ASSERT}" )
+  message(STATUS "SCALFMM_USE_ASSERT = ${SCALFMM_USE_ASSERT}" )
   #
-  message(STATUS "SCALFMM_USE_MPI       = ${SCALFMM_USE_MPI}" )
+  message(STATUS "SCALFMM_USE_MPI = ${SCALFMM_USE_MPI}" )
 
-  message(STATUS "SCALFMM_USE_BLAS      = ${SCALFMM_USE_BLAS}")
-  message(STATUS "SCALFMM_USE_FFT       = ${SCALFMM_USE_FFT}")
-  message(STATUS "SCALFMM_USE_MKL       =  ${SCALFMM_USE_MKL}")
+  message(STATUS "SCALFMM_USE_BLAS = ${SCALFMM_USE_BLAS}")
+  message(STATUS "SCALFMM_USE_FFT = ${SCALFMM_USE_FFT}")
+  message(STATUS "SCALFMM_USE_MKL = ${SCALFMM_USE_MKL}")
   #
   if(SCALFMM_USE_STARPU)
-    message( STATUS "SCALFMM_USE_STARPU             = ${SCALFMM_USE_STARPU}" )
-    message(STATUS "     STARPU_LIBRARIES           = ${STARPU_LIBRARIES}")
-    message( STATUS "SCALFMM_USE_CUDA               = ${SCALFMM_USE_CUDA}" )
-    MESSAGE( STATUS "SCALFMM_USE_OPENCL             = ${SCALFMM_USE_OPENCL}" )
+    message(STATUS "SCALFMM_USE_STARPU = ${SCALFMM_USE_STARPU}" )
+    message(STATUS "STARPU_LIBRARIES = ${STARPU_LIBRARIES}")
+    message(STATUS "SCALFMM_USE_CUDA = ${SCALFMM_USE_CUDA}" )
+    MESSAGE(STATUS "SCALFMM_USE_OPENCL = ${SCALFMM_USE_OPENCL}" )
   endif(SCALFMM_USE_STARPU)
-  message(STATUS "CMAKE_CXX_FLAGS_TYPE  = ${CMAKE_CXX_FLAGS_TYPE}")
-  message(STATUS "CMAKE_CXX_FLAGS       = ${CMAKE_CXX_FLAGS}")
-  message(STATUS "SCALFMM_CXX_FLAGS     = ${SCALFMM_CXX_FLAGS}")
-  message(STATUS "SCALFMM_LIBRARIES     = ${SCALFMM_LIBRARIES}")
-  message(STATUS "SCALFMM_INCLUDES      = ${SCALFMM_INCLUDES}")
-  message(STATUS "FUSE_LIST             = ${FUSE_LIST}")
-  #
-  ##################################################################
-  #                               END                              #
-  ##################################################################
-  #
+  message(STATUS "SCALFMM_CXX_FLAGS = ${SCALFMM_CXX_FLAGS}")
+  message(STATUS "SCALFMM_LIBRARIES = ${SCALFMM_LIBRARIES}")
+  message(STATUS "FUSE_LIST = ${FUSE_LIST}")
+
 else(MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/morse_cmake")
 
   message(STATUS "MORSE_DISTRIB_DIR is not set")
diff --git a/CMakeModules/morse_cmake b/CMakeModules/morse_cmake
index 33a182878f9049c47af1fce3e86e72b9a10e7f7a..41ca6a54d906b91b1a2439fe68d69f95cef89f9b 160000
--- a/CMakeModules/morse_cmake
+++ b/CMakeModules/morse_cmake
@@ -1 +1 @@
-Subproject commit 33a182878f9049c47af1fce3e86e72b9a10e7f7a
+Subproject commit 41ca6a54d906b91b1a2439fe68d69f95cef89f9b
diff --git a/CMakeModules/utils.cmake b/CMakeModules/utils.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..7b8d326e9e7af573eec8b04f7f64996e233c93cb
--- /dev/null
+++ b/CMakeModules/utils.cmake
@@ -0,0 +1,26 @@
+# helper function for generating targets
+
+# This function creates an executable target with a list
+# of sources and all requirements passed as arguments
+# if the expression passed as boolean is true.
+# ----------------------------------------------------
+function(scalfmm_create_target target_name sources_list dependencies options )
+  # Here, we generate a vector of boolean to check if dependencies (targets)
+  # exists. 1 is yes, 0 otherwise
+  foreach(dep IN LISTS dependencies)
+    if(TARGET ${dep})
+      list(APPEND VECTOR_BOOL 1)
+    else()
+      list(APPEND VECTOR_BOOL 0)
+    endif()
+  endforeach()
+  # If all dependencies are met, we generate the target, otherwise not.
+  if(NOT 0 IN_LIST VECTOR_BOOL)
+    add_executable(${target_name} ${sources_list})
+    target_link_libraries(${target_name} PRIVATE ${dependencies})
+    target_compile_options(${target_name} PRIVATE ${options})
+    set_target_properties(${target_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BUILD_TYPE})
+    install(TARGETS ${target_name} RUNTIME DESTINATION bin)
+  endif()
+endfunction(scalfmm_create_target)
+
diff --git a/CPackConfig.cmake b/CPackConfig.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..d84f9a7918358d08d7c733010d606aa62a723fa7
--- /dev/null
+++ b/CPackConfig.cmake
@@ -0,0 +1,21 @@
+set(CPACK_PACKAGE_VERSION_PATCH 0)
+execute_process(
+  COMMAND git rev-list HEAD --count
+  OUTPUT_VARIABLE CPACK_PACKAGE_VERSION_PATCH
+  RESULT_VARIABLE RET
+  ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+  )
+#string_TRIM(PATCH1 PATCH)
+set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY "ON")
+#
+set(CPACK_RESOURCE_FILE_LICENSE  "${CMAKE_CURRENT_SOURCE_DIR}/LICENCE")
+set(CPACK_PACKAGE_VERSION_MAJOR "${${CMAKE_PROJECT_NAME}_MAJOR_VERSION}")
+set(CPACK_PACKAGE_VERSION_MINOR "${${CMAKE_PROJECT_NAME}_MINOR_VERSION}")
+#
+set(PACK_PACKAGE_VERSION "${${CMAKE_PROJECT_NAME}_VERSION}.${${CMAKE_PROJECT_NAME}_MINOR_VERSION}-${CPACK_PACKAGE_VERSION_PATCH}")
+set(CPACK_SOURCE_GENERATOR "TGZ")
+set(CPACK_SOURCE_PACKAGE_FILE_NAME  "SCALFMM-${${CMAKE_PROJECT_NAME}_MAJOR_VERSION}.${${CMAKE_PROJECT_NAME}_MINOR_VERSION}-${CPACK_PACKAGE_VERSION_PATCH}")
+set(CPACK_SOURCE_IGNORE_FILES "\\\\.git;.DS_Store;.*~;/*.aux;/*.idx;/*.log;/*.out;/*.toc;/*.ilg;CMakeLists.txt.user;/.settings/")
+list(APPEND CPACK_SOURCE_IGNORE_FILES  "${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/Utils/;/Build*;/Obsolete/")
+#
+
diff --git a/CTestConfig.cmake b/CTestConfig.cmake
index e77f07f78b817531bf9d483697c1facfade930fc..4ff7e12ca53d04e9b89db0438b7c497befb91114 100644
--- a/CTestConfig.cmake
+++ b/CTestConfig.cmake
@@ -6,11 +6,7 @@
 ##   INCLUDE(CTest)
 set(CTEST_PROJECT_NAME "ScalFMM")
 set(CTEST_NIGHTLY_START_TIME "00:00:00 GMT")
-
-set(CTEST_DROP_METHOD "http")
-set(CTEST_DROP_SITE "cdash.inria.fr")
-set(CTEST_DROP_LOCATION "/CDash/submit.php?project=scalfmm")
-set(CTEST_DROP_SITE_CDASH TRUE)
+set(CTEST_SUBMIT_URL "http://cdash.inria.fr/CDash/submit.php?project=scalfmm")
 
 #--------------------------------------------------------------------
 # BUILDNAME variable construction
diff --git a/Contribs/CMakeLists.txt b/Contribs/CMakeLists.txt
deleted file mode 100644
index bef9e34752bc00ace1af717ce55a6e60e2093fe2..0000000000000000000000000000000000000000
--- a/Contribs/CMakeLists.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-# check if compiling into source directories
-INSTALL( FILES json.hpp DESTINATION include/Contribs )
-
-INSTALL( DIRECTORY "inria" DESTINATION include )
-
-
diff --git a/Doc/CMakeLists.txt b/Doc/CMakeLists.txt
index d0634f5264b2b1b9cce465f10b2374ec5e4b02c4..f891a32d3ab68714d23fd22474253d189a4da37b 100644
--- a/Doc/CMakeLists.txt
+++ b/Doc/CMakeLists.txt
@@ -3,6 +3,7 @@ find_package(Doxygen)
 if(DOXYGEN_FOUND)
   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
                  ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+               configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile-mcss ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-mcss COPYONLY)
   add_custom_target(
         doc
         ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
diff --git a/Doc/Doxyfile-mcss b/Doc/Doxyfile-mcss
new file mode 100644
index 0000000000000000000000000000000000000000..8adb3bf8f629708ddb1e6d7ca11363fd6135d7a2
--- /dev/null
+++ b/Doc/Doxyfile-mcss
@@ -0,0 +1,5 @@
+@INCLUDE = Doxyfile
+GENERATE_HTML = NO
+GENERATE_XML = YES
+XML_PROGRAMLISTINGS = NO
+
diff --git a/Doc/Doxyfile.in b/Doc/Doxyfile.in
index 50249c23cc6f5f292c87af53e33a907b08be0dcc..12c2a5ca679b807e0a6539bdb0cfacf961ba5c53 100644
--- a/Doc/Doxyfile.in
+++ b/Doc/Doxyfile.in
@@ -658,7 +658,8 @@ WARN_LOGFILE           =
 # with spaces.
 
 INPUT                  = @CMAKE_CURRENT_SOURCE_DIR@/../Doc/Site_dox \
-                         @CMAKE_CURRENT_SOURCE_DIR@/../Src/ \
+                         @CMAKE_CURRENT_SOURCE_DIR@/../src/ \
+                         @CMAKE_CURRENT_SOURCE_DIR@/../include/ \
                          @CMAKE_CURRENT_SOURCE_DIR@/../Examples/ \
                          @CMAKE_CURRENT_SOURCE_DIR@/../Tests/
 
diff --git a/Examples/CMakeLists.txt b/Examples/CMakeLists.txt
index 07f07d968fb1c27fc6cb604ca7f1a86f4e0087ba..36268aec8f9b463d5429e8e2c5a86a3c4815b67c 100644
--- a/Examples/CMakeLists.txt
+++ b/Examples/CMakeLists.txt
@@ -1,95 +1,53 @@
-# check if compiling into source directories
-STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
-if(insource)
-    MESSAGE(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto scalfmm/Build and tapes cmake ../")
-endif(insource)
+# Examples
+# --------
+
+# List of source files
+set(source_tests_files
+  changeFmaFormat.cpp
+  ChebyshevHybridFMM.cpp
+  ChebyshevOpenMPAdaptiveFMM.cpp
+  ChebyshevOpenMPFMM.cpp
+  ChebyshevStarpuImplicit.cpp
+  compare2Files.cpp
+  compareAllPoissonKernels.cpp
+  CutOffAlgorithm.cpp
+  DirectComputation.cpp
+  generateDistributions.cpp
+  LagrangeHybridFMM.cpp
+  LagrangeInterpolationAdaptiveFMM.cpp
+  LagrangeOpenMPFMM.cpp
+  LagrangeStarpuImplicit.cpp
+  RotationFMM.cpp
+  RotationMPIFMM.cpp
+  statisticsOnOctree.cpp
+  )
 
-project(EXAMPLES_SCALFMM CXX)
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BUILD_TYPE})
-#ADD_DEFINITIONS( ${SCALFMM_CXX_FLAGS})
-
-# Adding the project sources dir as an include dir
-INCLUDE_DIRECTORIES(
-     ${SCALFMM_BINARY_DIR}/Src 
-     ${SCALFMM_SOURCE_DIR}/Src 
-     ${SCALFMM_SOURCE_DIR}/Contribs
-     ${SCALFMM_SOURCE_DIR}
-     ${SCALFMM_INCLUDES}
-     
-)
-# Find all code files
-file(
-    GLOB_RECURSE
-    source_tests_files
-    ./*.cpp
-    )
 # Add execs - 1 cpp = 1 exec
-foreach(exec ${source_tests_files})
-        get_filename_component(
-                execname ${exec}
-                NAME_WE
-        )
-
-        set(compile_exec "TRUE")
-
-        foreach(fuse_key ${FUSE_LIST})
-            file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
-            if(lines_fuse)
-                    if( NOT SCALFMM_USE_${fuse_key} )
-                            MESSAGE( STATUS "This needs ${fuse_key} = ${exec}" )
-                            set(compile_exec "FALSE")
-                    endif()
-            endif()
-        endforeach()
-
-        # Dependency are OK
-        if( compile_exec )
-                add_executable(
-                                ${execname}
-                                ${exec}
-                                )
-                SET_TARGET_PROPERTIES(${execname} PROPERTIES ENABLE_EXPORTS TRUE)
-                target_link_libraries(
-                        ${execname}
-                        ${scalfmm_lib}
-                        ${SCALFMM_LIBRARIES}
-                        )
-                 install( TARGETS ${execname}  DESTINATION bin )
-        endif()
+foreach(exec ${source_tests_files}) 
+  set(compile_exec TRUE)
+  get_filename_component( execname ${exec} NAME_WE )
+	
+  foreach(fuse_key ${FUSE_DEP_AVAILABLE})
+    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
+    if(lines_fuse AND NOT ${fuse_key} IN_LIST FUSE_LIST)
+      message( STATUS "This needs ${fuse_key} = ${exec}" )
+      set(compile_exec FALSE)
+    endif()
+  endforeach()
+
+  # Dependency are OK
+  if( compile_exec )
+    add_executable( ${execname} ${exec})
+    list(APPEND SCALFMM_EXAMPLES_TARGETS ${execname})
+    list(APPEND SCALFMM_TESTS_TARGETS ${execname})
+    set_target_properties(${execname} PROPERTIES ENABLE_EXPORTS TRUE
+      RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BUILD_TYPE}
+      )
+    target_link_libraries( ${execname} PRIVATE ${CMAKE_PROJECT_NAME})
+    install(TARGETS ${execname} RUNTIME DESTINATION bin)
+  endif()
 endforeach(exec)
 
-#set(GENERIC_SOURCE_FILES  changeFmaFormat compare2Files generateDistributions statisticsOnOctree
-#    DirectComputation CutOffAlgorithm RotationFMM compareAllPoissonKernels)
-#if(SCALFMM_USE_BLAS)
-#    set(GENERIC_SOURCE_FILES ${GENERIC_SOURCE_FILES} ChebyshevInterpolationFMM ChebyshevInterpolationAdaptiveFMM  )
-#endif(SCALFMM_USE_BLAS)
-
-#if(SCALFMM_USE_FFT)
-#    set(GENERIC_SOURCE_FILES ${GENERIC_SOURCE_FILES} UniformInterpolationFMM LagrangeInterpolationAdaptiveFMM  )
-#else()
-#  message(STATUS " &&&&&&&&&&&&&&&&&&&& SCALFMM_USE_FFT ${SCALFMM_USE_FFT}")
-#endif(SCALFMM_USE_FFT)
-
-#if(SCALFMM_USE_MPI)
-#    set(GENERIC_SOURCE_FILES ${GENERIC_SOURCE_FILES} RotationMPIFMM  )
-#    if(SCALFMM_USE_BLAS)
-#        set(GENERIC_SOURCE_FILES ${GENERIC_SOURCE_FILES} MPIChebyshevInterpolationFMM ChebyshevInterpolationMPIFMMSplit ChebyshevInterpolationMPIFMM  )
-
-#    endif(SCALFMM_USE_BLAS)
+add_custom_target(scalfmm_examples ALL DEPENDS ${SCALFMM_EXAMPLES_TARGETS})
 
-#    if(SCALFMM_USE_FFT)
-#        set(GENERIC_SOURCE_FILES ${GENERIC_SOURCE_FILES}   MPIUniformInterpolationFMM)
-#    endif(SCALFMM_USE_FFT)
 
-#endif()
-##
-##MESSAGE(WARNIG "GENERIC_SOURCE_FILES ${GENERIC_SOURCE_FILES}")
-##
-##
-##
-#foreach(exec ${GENERIC_SOURCE_FILES})
-#    add_executable(${exec} ${exec}.cpp)
-#    SET_TARGET_PROPERTIES(${exec} PROPERTIES ENABLE_EXPORTS TRUE)
-#    target_link_libraries(${exec} ${scalfmm_lib} ${SCALFMM_LIBRARIES} )
-#    install( TARGETS ${exec}  DESTINATION bin )
-#endforeach(exec)
diff --git a/ScalFMMConfig.cmake.in b/ScalFMMConfig.cmake.in
deleted file mode 100644
index e2b98e1d227efdf61812ede65f8a839f421e825a..0000000000000000000000000000000000000000
--- a/ScalFMMConfig.cmake.in
+++ /dev/null
@@ -1,54 +0,0 @@
-#-----------------------------------------------------------------------------
-#
-# SCALFMMConfig.cmake - SCALFMM CMake configuration file for external projects.
-#
-# This file is configured by SCALFMM and used by the SCALFMM.cmake module
-# to load SCALFMM's settings for an external project.
-#
-@SCALFMM_CONFIG_INSTALL_ONLY@
-#
-SET(SCALFMM_VERSION_MAJOR "@SCALFMM_MAJOR_VERSION@")
-SET(SCALFMM_VERSION_MINOR "@SCALFMM_MINOR_VERSION@")
-SET(SCALFMM_VERSION_BUILD  "@SCALFMM_BUILD_VERSION@")
-#
-SET(SCALFMM_PREFIX        "@CMAKE_INSTALL_PREFIX@")
-SET(SCALFMM_INCLUDES_DIR   "@CMAKE_INSTALL_PREFIX@/include")
-SET(SCALFMM_INCLUDES_ADD "@SCALFMM_INCLUDES@")
-SET(SCALFMM_LIBRARIES_DIR "@CMAKE_INSTALL_PREFIX@/lib")
-SET(SCALFMM_LIBRARIES_ADD "@SCALFMM_COMPILE_LIBS@")
-SET(SCALFMM_LIBRARY_NAME  "@scalfmm_lib@")
-SET(SCALFMM_CXX_FLAGS     "@SCALFMM_CXX_FLAGS@ @CMAKE_CXX_FLAGS@")
-#
-SET(SCALFMM_SOURCE_DIR	   "@SCALFMM_SOURCE_DIR@")
-SET(SCALFMM_BUILD_SHARED_LIBS "@BUILD_SHARED_LIBS@")
-SET(SCALFMM_USE_FILE	   "@SCALFMM_USE_FILE@")
-#
-SET(SCALFMM_BUILD_TYPE     "@CMAKE_BUILD_TYPE@")
-#
-# SCALFMM Options
-#
-SET(SCALFMM_USE_ADDONS           "@SCALFMM_USE_ADDONS@")
-SET(SCALFMM_USE_MPI              "@SCALFMM_USE_MPI@")
-SET(SCALFMM_USE_BLAS             "@SCALFMM_USE_BLAS@")
-SET(SCALFMM_USE_FFT              "@SCALFMM_USE_FFT@")
-SET(SCALFMM_USE_MKL              "@SCALFMM_USE_MKL_AS_BLAS@")
-SET(SCALFMM_FLAGS                "@SCALFMM_FLAGS_OPTI@")
-SET(SCALFMM_USE_MEM_STATS        "@SCALFMM_USE_MEM_STATS@") 
-SET(SCALFMM_USE_LOG              "@SCALFMM_USE_LOG@")
-SET(SCALFMM_USE_OMP4             "@SCALFMM_USE_OMP4@")
-SET(SCALFMM_USE_STARPU           "@SCALFMM_USE_STARPU@")
-SET(SCALFMM_USE_SSE              "@SCALFMM_USE_SSE@")
-SET(SCALFMM_USE_AVX              "@SCALFMM_USE_AVX@")
-#
-SET(SCALFMM_DOC_TAGS           "@CMAKE_BINARY_DIR@/Doc/scalfmm.tag")
-
-#
-IF(SCALFMM_USE_ADDONS) 
-  SET(SCALFMM_LIBRARIES "-L${SCALFMM_LIBRARIES_DIR} -l${SCALFMM_LIBRARY_NAME} ${SCALFMM_LIBRARIES_ADD}" )
-ELSE()
-  SET(SCALFMM_LIBRARIES "-L${SCALFMM_LIBRARIES_DIR} -l${SCALFMM_LIBRARY_NAME}" )
-ENDIF()
-
-
-#SCALFMM_BUILD_TESTS => OFF
-#SCALFMM_BUILD_UTESTS => OFF
diff --git a/Src/Utils/stdComplex.hpp b/Src/Utils/stdComplex.hpp
deleted file mode 100644
index 4811beb463783c3904ad36fa2645c72180614c5b..0000000000000000000000000000000000000000
--- a/Src/Utils/stdComplex.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-// ===================================================================================
-// olivier.coulaud@inria.fr, berenger.bramas@inria.fr
-// This software is a computer program whose purpose is to compute the FMM.
-//
-// This software is governed by the CeCILL-C and LGPL licenses and
-// abiding by the rules of distribution of free software.  
-// 
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public and CeCILL-C Licenses for more details.
-// "http://www.cecill.info". 
-// "http://www.gnu.org/licenses".
-// ===================================================================================
-#ifndef STDCOMPLEXE_HPP
-#define STDCOMPLEXE_HPP
-
-#include <complex>
-template<typename T>
-using stdComplex = std::complex<T> ;
-
-
-
-#endif //STDCOMPLEXE_HPP
-
-
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index d1f53fff14e1a08752cfc51bfeaa5f41fd9caeeb..5bc4ff801e98ad7b3f34613372ec4624e51222d8 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1,60 +1,128 @@
-# check if compiling into source directories
-STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
-if(insource)
-    MESSAGE(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto scalfmm/Build and tapes cmake ../")
-endif(insource)
-
-project(TESTS_SCALFMM CXX)
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BUILD_TYPE})
-ADD_DEFINITIONS( ${ScaLFMM_CXX_FLAGS})
 # Find all code files
-file(	
-	GLOB_RECURSE
-	source_tests_files
-	./*.cpp
-	)
-
-
-# Adding the project sources dir as an include dir
-INCLUDE_DIRECTORIES(
-     ${SCALFMM_BINARY_DIR}/Src    
-     ${SCALFMM_SOURCE_DIR}/Src   
-     ${SCALFMM_SOURCE_DIR}/Contribs
-     ${SCALFMM_SOURCE_DIR}
-     ${SCALFMM_INCLUDES}
-)
-
+set(source_tests_files
+  GroupTree/compareDAGmapping.cpp 
+  GroupTree/testBlockedAlgorithm.cpp
+  GroupTree/testBlockedAlgorithmDyn.cpp
+  GroupTree/testBlockedChebyshev.cpp 
+  GroupTree/testBlockedMpiAlgorithm.cpp
+  GroupTree/testBlockedMpiChebyshev.cpp
+  GroupTree/testBlockedMpiInterpolation.cpp
+  GroupTree/testBlockedMpiUniform.cpp
+  GroupTree/testBlockedRotationCompare.cpp
+  GroupTree/testBlockedRotation.cpp
+  GroupTree/testBlockedRotationCuda.cpp
+  GroupTree/testBlockedRotationMpi.cpp
+  GroupTree/testBlockedRotationMpiCuda.cpp
+  GroupTree/testBlockedSpeedOperators.cpp
+  GroupTree/testBlockedTaylor.cpp
+  GroupTree/testBlockedTree.cpp
+  GroupTree/testBlockedUnifCudaBench.cpp 
+  GroupTree/testBlockedUnifCuda.cpp
+  GroupTree/testBlockedUniformBench.cpp
+  GroupTree/testBlockedUniformCompare.cpp
+  GroupTree/testBlockedUniform.cpp
+  GroupTree/testBlockedWithCudaAlgorithm.cpp
+  GroupTree/testBlockedWithOpenCLAlgorithm.cpp
+  Kernels/DirectAlgorithm.cpp
+  Kernels/testChebAlgorithm.cpp
+  Kernels/testChebAlgorithmProc.cpp
+  Kernels/testChebTensorialAlgorithm.cpp
+  Kernels/testFlopsChebAlgorithm.cpp
+  Kernels/testOmniPath.cpp
+  Kernels/testP2PEfficency.cpp
+  Kernels/testRotationAlgorithm.cpp
+  Kernels/testRotationAlgorithmProc.cpp
+  Kernels/testRotationPeriodicBench.cpp
+  Kernels/testSmoothUnifAlgorithm.cpp
+  Kernels/testSphericalAlgorithm.cpp
+  Kernels/testSphericalBench.cpp
+  Kernels/testSphericalBlasAlgorithm.cpp
+  Kernels/testSphericalBlockBlasAlgorithm.cpp
+  Kernels/testSphericalDlpolyAlgorithm.cpp
+  Kernels/testSphericalGalaxyCsv.cpp
+  Kernels/testSphericalProcAlgorithm.cpp
+  Kernels/testSphericalRotationAlgorithm.cpp
+  Kernels/testTaylor.cpp
+  Kernels/testTaylorKernel.cpp
+  Kernels/testTaylorSimple.cpp
+  Kernels/testTsmAlgorithm.cpp
+  Kernels/testTuneSphericalBlockBlas.cpp
+  Kernels/testUnifAlgorithm.cpp
+  Kernels/testUnifAlgorithmProc.cpp
+  Kernels/testUnifTensorialAlgorithm.cpp
+  Utils/testBlas.cpp
+  Utils/testChebBinaryM2L.cpp
+  Utils/testChebBinarySymM2L.cpp
+  Utils/testChebInterpolator.cpp
+  Utils/testChebInterpolatorExtendedBBox.cpp
+  Utils/testChebM2Lprecomputation.cpp
+  Utils/testChebOctree.cpp
+  Utils/testChebSxUCBSy.cpp
+  Utils/testChebSymmetries.cpp
+  Utils/testChebTensorProduct.cpp
+  Utils/testCompareIOTree.cpp
+  Utils/testDebug.cpp
+  Utils/testFastDiscreteConvolution.cpp
+  Utils/testFFT.cpp
+  Utils/testFmmAlgorithm.cpp
+  Utils/testFmmAlgorithmOmp4.cpp
+  Utils/testFmmAlgorithmPeriodic.cpp
+  Utils/testFmmAlgorithmProc.cpp
+  Utils/testFmmAlgorithmProcPeriodic.cpp
+  Utils/testFmmAlgorithmProcRandom.cpp
+  Utils/testFmmAlgorithmProcRotation.cpp
+  Utils/testFmmAlgorithmProcTsm.cpp
+  Utils/testFmmAlgorithmTsm.cpp
+  Utils/testLapack.cpp
+  Utils/testLapackQR.cpp
+  Utils/testLoader.cpp
+  Utils/testLoaderFMATsm.cpp
+  Utils/testLoaderFMATsmCreate.cpp
+  Utils/testMemStats.cpp
+  Utils/testMpiCsvSaver.cpp
+  Utils/testOctree.cpp
+  Utils/testOctreeFuncteur.cpp
+  Utils/testOctreeIter.cpp
+  Utils/testOctreeParallelFuncteur.cpp
+  Utils/testOctreePrintMorton.cpp
+  Utils/testOctreeRearrange.cpp
+  Utils/testOctreeRearrangePeriodic.cpp
+  Utils/testOctreeRearrangeProc.cpp
+  Utils/testOctreeRearrangeTsm.cpp
+  Utils/testParameterNames.cpp
+  Utils/testPartitionsMapping.cpp
+  Utils/testStatsTree.cpp
+  Utils/testTemplateExample.cpp
+  Utils/testTic.cpp
+  Utils/testTreeBuilderThread.cpp
+  Utils/testTreeIO.cpp
+  Utils/testUnifInterpolator.cpp
+  Utils/testUnifTensorialInterpolator.cpp    
+  )
 
 # Add execs - 1 cpp = 1 exec
 foreach(exec ${source_tests_files}) 
-	get_filename_component(
-		execname ${exec}
-		NAME_WE
-	)
-
-	set(compile_exec "TRUE")
+  set(compile_exec TRUE)
+  get_filename_component( execname ${exec} NAME_WE )
 	
-	foreach(fuse_key ${FUSE_LIST})
-	    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
-	    if(lines_fuse)
-		    if( NOT SCALFMM_USE_${fuse_key} )
-			    MESSAGE( STATUS "This needs ${fuse_key} = ${exec}" )
-			    set(compile_exec "FALSE")
-		    endif()
-	    endif()
-	endforeach()
+  foreach(fuse_key ${FUSE_DEP_AVAILABLE})
+    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
+    if(lines_fuse AND NOT ${fuse_key} IN_LIST FUSE_LIST)
+      message( STATUS "This needs ${fuse_key} = ${exec}" )
+      set(compile_exec FALSE)
+    endif()
+  endforeach()
 
-	# Dependency are OK
-	if( compile_exec )
-		add_executable(
-				${execname}
-				${exec}
-				)
-		SET_TARGET_PROPERTIES(${execname} PROPERTIES ENABLE_EXPORTS TRUE)
-		target_link_libraries(
-			${execname}
-			${scalfmm_lib}
-			${SCALFMM_LIBRARIES}
-			)
-	endif()
+  # Dependency are OK
+  if( compile_exec )
+    add_executable( ${execname} ${exec})
+    list(APPEND SCALFMM_TESTS_TARGETS ${execname})
+    set_target_properties(${execname} PROPERTIES ENABLE_EXPORTS TRUE
+      RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BUILD_TYPE}
+      )
+    target_link_libraries( ${execname} ${CMAKE_PROJECT_NAME})
+  endif()
 endforeach(exec)
+
+add_custom_target(scalfmm_tests ALL DEPENDS ${SCALFMM_TESTS_TARGETS})
+
diff --git a/Tests/GroupTree/compareDAGmapping.cpp b/Tests/GroupTree/compareDAGmapping.cpp
index a41107b360b9f2d387c83fa999c56db7486bf19d..6cce41fd00ba8f66dcd4f3e467248c679a2cd40a 100644
--- a/Tests/GroupTree/compareDAGmapping.cpp
+++ b/Tests/GroupTree/compareDAGmapping.cpp
@@ -11,10 +11,10 @@
 #include <omp.h>
 using namespace std;
 
-#include "../../Src/Utils/FGlobal.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FParameterNames.hpp"
 enum TaskType {P2M = 0, M2M, M2L, M2L_OUT, L2L, L2P, P2P, P2P_OUT};
 string taskNames[] = {"P2M", "M2M", "M2L", "M2L_out", "L2L", "L2P", "P2P", "P2P_out"};
 struct Task
diff --git a/Tests/GroupTree/testBlockedAlgorithm.cpp b/Tests/GroupTree/testBlockedAlgorithm.cpp
index f048ecf84a46da601a0c83c82c906e8d7104741c..03543879c692898dce6db9424e27fc6b9db3c500 100644
--- a/Tests/GroupTree/testBlockedAlgorithm.cpp
+++ b/Tests/GroupTree/testBlockedAlgorithm.cpp
@@ -2,46 +2,46 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
 //#undef  SCALFMM_USE_STARPU
 //#undef  SCALFMM_USE_OMP4
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
 #include "Components/FSymbolicData.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
-#include "../../Src/GroupTree/TestKernel/FGroupTestParticleContainer.hpp"
+#include "Components/FTestKernels.hpp"
+#include "GroupTree/TestKernel/FGroupTestParticleContainer.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
 int main(int argc, char* argv[]){
     setenv("STARPU_NCPU","1",1);
@@ -70,12 +70,12 @@ int main(int argc, char* argv[]){
     typedef FGroupTaskStarPUAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupCpuWrapper, GroupContainerClass > GroupAlgorithm;
 #elif defined(SCALFMM_USE_OMP4)
     typedef FTestKernels< GroupCellClass, GroupContainerClass >  GroupKernelClass;
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
             GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FTestKernels< GroupCellClass, GroupContainerClass >  GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
 
     typedef FTestCell                   CellClass;
diff --git a/Tests/GroupTree/testBlockedAlgorithmDyn.cpp b/Tests/GroupTree/testBlockedAlgorithmDyn.cpp
index db9097ce163b449f5a2de6e019bf1af003a29c59..7d2535868c5adf49cba53e13b7317c35c4814a72 100644
--- a/Tests/GroupTree/testBlockedAlgorithmDyn.cpp
+++ b/Tests/GroupTree/testBlockedAlgorithmDyn.cpp
@@ -2,44 +2,44 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
 #undef SCALFMM_USE_STARPU
 #undef SCALFMM_USE_OMP4
 
-#include "../../Src/GroupTree/Core/FGroupTreeDyn.hpp"
+#include "GroupTree/Core/FGroupTreeDyn.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 #include "Components/FSymbolicData.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
 
 template <class FReal>
@@ -133,12 +133,12 @@ int main(int argc, char* argv[]){
     typedef FGroupTaskStarPUAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupCpuWrapper, GroupContainerClass > GroupAlgorithm;
 #elif defined(SCALFMM_USE_OMP4)
     typedef FTestKernels< GroupCellClass, GroupContainerClass >  GroupKernelClass;
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
             unsigned char, unsigned char, unsigned char, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FTestKernels< GroupCellClass, GroupContainerClass >  GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
 
     typedef FTestCell                   CellClass;
diff --git a/Tests/GroupTree/testBlockedChebyshev.cpp b/Tests/GroupTree/testBlockedChebyshev.cpp
index 78cc3f3c49644db7377e6bfa892715001bf6b168..c2fc3ce442b5d7bd0df579fe3a212a424ba046a9 100644
--- a/Tests/GroupTree/testBlockedChebyshev.cpp
+++ b/Tests/GroupTree/testBlockedChebyshev.cpp
@@ -5,39 +5,39 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebSymKernel.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebCell.hpp"
+#include "Kernels/Chebyshev/FChebSymKernel.hpp"
+#include "Kernels/Chebyshev/FChebCell.hpp"
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
@@ -74,12 +74,12 @@ int main(int argc, char* argv[]){
     typedef FGroupTaskStarPUAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupCpuWrapper, GroupContainerClass > GroupAlgorithm;
 #elif defined(SCALFMM_USE_OMP4)
     typedef FChebSymKernel<FReal,GroupCellClass,GroupContainerClass,MatrixKernelClass,ORDER> GroupKernelClass;
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
             GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FChebSymKernel<FReal,GroupCellClass,GroupContainerClass,MatrixKernelClass,ORDER> GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
     // Get params
     const int NbLevels      = FParameters::getValue(argc,argv,FParameterDefinitions::OctreeHeight.options, 5);
diff --git a/Tests/GroupTree/testBlockedMpiChebyshev.cpp b/Tests/GroupTree/testBlockedMpiChebyshev.cpp
index 16b6edb45fb53d7ea006e67e0ebbb9c9a4e30caf..424bb4f6e6ea78b78cd2464ea3dfded14732f188 100644
--- a/Tests/GroupTree/testBlockedMpiChebyshev.cpp
+++ b/Tests/GroupTree/testBlockedMpiChebyshev.cpp
@@ -6,46 +6,46 @@
 // @FUSE_STARPU
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebSymKernel.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebCell.hpp"
+#include "Kernels/Chebyshev/FChebSymKernel.hpp"
+#include "Kernels/Chebyshev/FChebCell.hpp"
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Containers/FCoordinateComputer.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Containers/FCoordinateComputer.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedMpiUniform.cpp b/Tests/GroupTree/testBlockedMpiUniform.cpp
index e44fae2eb8a94d15a75d67436b5f636b0a724aa5..16d22ef4313f3d60372148a37567d9aaa7af013a 100644
--- a/Tests/GroupTree/testBlockedMpiUniform.cpp
+++ b/Tests/GroupTree/testBlockedMpiUniform.cpp
@@ -6,46 +6,46 @@
 // @FUSE_STARPU
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp" //this include must be after the three previous at least
+#include "Kernels/Uniform/FUnifKernel.hpp" //this include must be after the three previous at least
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Containers/FCoordinateComputer.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Containers/FCoordinateComputer.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedRotation.cpp b/Tests/GroupTree/testBlockedRotation.cpp
index 17a5717a3441b63b3de052a25ed32365ceea4968..6876caafe0bf63017ce794463bfacbcaebc92175 100644
--- a/Tests/GroupTree/testBlockedRotation.cpp
+++ b/Tests/GroupTree/testBlockedRotation.cpp
@@ -1,38 +1,38 @@
 
 // Keep in private GIT
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 #include <memory>
@@ -62,12 +62,12 @@ int main(int argc, char* argv[]){
     typedef FGroupTaskStarPUAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupCpuWrapper, GroupContainerClass > GroupAlgorithm;
 #elif defined(SCALFMM_USE_OMP4)
     typedef FRotationKernel< FReal, GroupCellClass, GroupContainerClass , P>  GroupKernelClass;
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
             GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FRotationKernel< FReal, GroupCellClass, GroupContainerClass , P>  GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
 
 
diff --git a/Tests/GroupTree/testBlockedRotationCompare.cpp b/Tests/GroupTree/testBlockedRotationCompare.cpp
index 178cc69e5e66ce988d2b8ffd754f7df060756e89..f8ec98272c2862c38d8ad67cb2003ba6ac474b17 100644
--- a/Tests/GroupTree/testBlockedRotationCompare.cpp
+++ b/Tests/GroupTree/testBlockedRotationCompare.cpp
@@ -4,39 +4,39 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
-#include "../../Src/Kernels/P2P/FP2PR.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PR.hpp"
 
 
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #include "Core/FFmmAlgorithmOmp4.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
@@ -632,7 +632,7 @@ struct RunContainer{
                 typedef FRotationKernel<FReal,GroupCellClass,GroupContainerClass,ORDER> GroupKernelClass;
                 // Set the number of threads
                 omp_set_num_threads(FParameters::getValue(argc,argv,FParameterDefinitions::NbThreads.options, omp_get_max_threads()));
-                typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+                typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
                         GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
                 std::cout << "Using FGroupTaskDepAlgorithm" << std::endl;
                 GroupKernelClass groupkernel(NbLevels, loader.getBoxWidth(), loader.getCenterOfBox());
@@ -645,7 +645,7 @@ struct RunContainer{
             {
                 typedef FRotationKernel<FReal,GroupCellClass,GroupContainerClass,ORDER> GroupKernelClass;
                 //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-                typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+                typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
                 std::cout << "Using FGroupTaskAlgorithm" << std::endl;
                 GroupKernelClass groupkernel(NbLevels, loader.getBoxWidth(), loader.getCenterOfBox());
                 GroupAlgorithm groupalgo(&groupedTree,&groupkernel);
diff --git a/Tests/GroupTree/testBlockedRotationCuda.cpp b/Tests/GroupTree/testBlockedRotationCuda.cpp
index 27c552c545cf707326bc328fa3e5455f2168fb95..3c523d50d3dee6cdd87da06d5f8c679bf9dee9c1 100644
--- a/Tests/GroupTree/testBlockedRotationCuda.cpp
+++ b/Tests/GroupTree/testBlockedRotationCuda.cpp
@@ -6,42 +6,42 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 #include "Components/FSymbolicData.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Cuda/FCudaDeviceWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedRotationMpi.cpp b/Tests/GroupTree/testBlockedRotationMpi.cpp
index 0b5f8f0887cdf370ba7f10314968aead2d3d61a6..db53c49b2d7f0875db42314052702caaf986498b 100644
--- a/Tests/GroupTree/testBlockedRotationMpi.cpp
+++ b/Tests/GroupTree/testBlockedRotationMpi.cpp
@@ -6,45 +6,45 @@
 // @FUSE_STARPU
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Containers/FCoordinateComputer.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Containers/FCoordinateComputer.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedRotationMpiCuda.cpp b/Tests/GroupTree/testBlockedRotationMpiCuda.cpp
index 9e7f645dd3bb77de3ac6be5af0574842a887ea3e..be6b95f940c6584a61d0691373ff71167fe61cf9 100644
--- a/Tests/GroupTree/testBlockedRotationMpiCuda.cpp
+++ b/Tests/GroupTree/testBlockedRotationMpiCuda.cpp
@@ -7,51 +7,51 @@
 // @FUSE_CUDA
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Cuda/FCudaDeviceWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Containers/FCoordinateComputer.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Containers/FCoordinateComputer.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedSpeedOperators.cpp b/Tests/GroupTree/testBlockedSpeedOperators.cpp
index e5424abaa538dc01b3f95eea545773f71e555190..bfedb2079059b9458607b2290537c4773ec03988 100644
--- a/Tests/GroupTree/testBlockedSpeedOperators.cpp
+++ b/Tests/GroupTree/testBlockedSpeedOperators.cpp
@@ -6,53 +6,53 @@
 
 // @SCALFMM_PRIVATE
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
 
 #ifdef SCALFMM_USE_CUDA
-#include "../../Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfCells.hpp"
-#include "../../Src/GroupTree/Uniform/FUnifCudaCellPOD.hpp"
-#include "../../Src/GroupTree/Uniform/FUnifCudaSharedData.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaData.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaTic.hpp"
+#include "GroupTree/Cuda/FCudaDeviceWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Uniform/FUnifCudaCellPOD.hpp"
+#include "GroupTree/Uniform/FUnifCudaSharedData.hpp"
+#include "GroupTree/Cuda/FCudaData.hpp"
+#include "GroupTree/Cuda/FCudaTic.hpp"
 template <class FReal, int ORDER>
 class FUnifCuda;
 #endif // SCALFMM_USE_CUDA
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedTaylor.cpp b/Tests/GroupTree/testBlockedTaylor.cpp
index 79dd5331ab21c70151dd468ebb139d0b63eedbe2..514fc15d6e2935a40a806b2f6eb50d294ef0be1e 100644
--- a/Tests/GroupTree/testBlockedTaylor.cpp
+++ b/Tests/GroupTree/testBlockedTaylor.cpp
@@ -1,38 +1,38 @@
 
 // Keep in private GIT
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Taylor/FTaylorKernel.hpp"
-#include "../../Src/Kernels/Taylor/FTaylorCell.hpp"
+#include "Kernels/Taylor/FTaylorKernel.hpp"
+#include "Kernels/Taylor/FTaylorCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 #include <memory>
@@ -62,12 +62,12 @@ int main(int argc, char* argv[]){
     typedef FGroupTaskStarPUAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupCpuWrapper, GroupContainerClass > GroupAlgorithm;
 #elif defined(SCALFMM_USE_OMP4)
     typedef FTaylorKernel< FReal,GroupCellClass, GroupContainerClass , P,1>  GroupKernelClass;
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
-            GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
+    GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FTaylorKernel< FReal,GroupCellClass, GroupContainerClass , P,1>  GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
 
 
diff --git a/Tests/GroupTree/testBlockedTree.cpp b/Tests/GroupTree/testBlockedTree.cpp
index b4b518cb749fad4a674959f73b1dc14c09e63511..1066b9df756038b42d19a3324a25b273182773bb 100644
--- a/Tests/GroupTree/testBlockedTree.cpp
+++ b/Tests/GroupTree/testBlockedTree.cpp
@@ -1,45 +1,45 @@
 
 // Keep in private GIT
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
+#include "Containers/FOctree.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 int main(int argc, char* argv[]){
@@ -111,12 +111,12 @@ int main(int argc, char* argv[]){
     typedef FGroupTaskStarPUAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupCpuWrapper, GroupContainerClass > GroupAlgorithm;
 #elif defined(SCALFMM_USE_OMP4)
     typedef FRotationKernel< FReal, GroupCellClass, GroupContainerClass , P>  GroupKernelClass;
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
             GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FRotationKernel< FReal, GroupCellClass, GroupContainerClass , P>  GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
 
     GroupKernelClass kernel(NbLevels, loader.getBoxWidth(), loader.getCenterOfBox());
diff --git a/Tests/GroupTree/testBlockedUnifCuda.cpp b/Tests/GroupTree/testBlockedUnifCuda.cpp
index 50906751e978e93965fc7e3e78f0ca347b8896b5..c01b9cc5c19a65d887be843d150fd343f00546de 100644
--- a/Tests/GroupTree/testBlockedUnifCuda.cpp
+++ b/Tests/GroupTree/testBlockedUnifCuda.cpp
@@ -7,44 +7,44 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
 
-#include "../../Src/GroupTree/Uniform/FUnifCellPOD.hpp"
-#include "../../Src/GroupTree/Uniform/FUnifCudaCellPOD.hpp"
+#include "GroupTree/Uniform/FUnifCellPOD.hpp"
+#include "GroupTree/Uniform/FUnifCudaCellPOD.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Cuda/FCudaDeviceWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
 
-#include "../../Src/GroupTree/Uniform/FUnifCudaSharedData.hpp"
+#include "GroupTree/Uniform/FUnifCudaSharedData.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedUnifCudaBench.cpp b/Tests/GroupTree/testBlockedUnifCudaBench.cpp
index 529f334e7a5475bc1117f2d91260456d206650e2..1ef6c643306051bccdfcba4432494c86b8e6ba6d 100644
--- a/Tests/GroupTree/testBlockedUnifCudaBench.cpp
+++ b/Tests/GroupTree/testBlockedUnifCudaBench.cpp
@@ -7,44 +7,44 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
 
-#include "../../Src/GroupTree/Uniform/FUnifCellPOD.hpp"
-#include "../../Src/GroupTree/Uniform/FUnifCudaCellPOD.hpp"
+#include "GroupTree/Uniform/FUnifCellPOD.hpp"
+#include "GroupTree/Uniform/FUnifCudaCellPOD.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp"
-#include "../../Src/GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Cuda/FCudaDeviceWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
 
-#include "../../Src/GroupTree/Uniform/FUnifCudaSharedData.hpp"
+#include "GroupTree/Uniform/FUnifCudaSharedData.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedUniform.cpp b/Tests/GroupTree/testBlockedUniform.cpp
index 345de9f93eea7e27cbdb849b865ccc17290f7db9..9220c5a4c01b18e388dfba63dd9e6ed25b26598b 100644
--- a/Tests/GroupTree/testBlockedUniform.cpp
+++ b/Tests/GroupTree/testBlockedUniform.cpp
@@ -2,54 +2,56 @@
 // ==== CMAKE =====
 // @FUSE_BLAS
 // @FUSE_FFT
-// @FUSE_STARPU
+// 
 // ================
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
 //#undef  SCALFMM_USE_STARPU
 //#undef  SCALFMM_USE_OMP4
 
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
 
 #include "Components/FSymbolicData.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#undef SCALFMM_USE_OMP4
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
+#undef SCALFMM_USE_STARPU
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
 
-#define RANDOM_PARTICLES
+//#define RANDOM_PARTICLES
 
 #ifdef STARPU_SIMGRID_MLR_MODELS
 extern "C" {
@@ -88,12 +90,12 @@ int main(int argc, char* argv[]){
     typedef FUnifKernel<FReal,GroupCellClass,GroupContainerClass,MatrixKernelClass,ORDER> GroupKernelClass;
     // Set the number of threads
     omp_set_num_threads(FParameters::getValue(argc,argv,FParameterDefinitions::NbThreads.options, omp_get_max_threads()));
-    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+    typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
             GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #else
     typedef FUnifKernel<FReal,GroupCellClass,GroupContainerClass,MatrixKernelClass,ORDER> GroupKernelClass;
     //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+    typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
 #endif
     // Get params
     const int NbLevels      = FParameters::getValue(argc,argv,FParameterDefinitions::OctreeHeight.options, 5);
@@ -136,11 +138,11 @@ int main(int argc, char* argv[]){
 
     // Extended for Native vs SimGrid makespans comparison
     timer.tic();
-    double start_time = starpu_timing_now();
+    //double start_time = starpu_timing_now();
     groupalgo.execute();
-    double end_time = starpu_timing_now();
+    //double end_time = starpu_timing_now();
     std::cout << "Kernel executed in in " << timer.tacAndElapsed() << "s\n";
-    std::cout << (end_time - start_time)/1000 << "\n";
+    //std::cout << (end_time - start_time)/1000 << "\n";
 
     // Validate the result
     if(FParameters::existParameter(argc, argv, LocalOptionNoValidate.options) == false){
diff --git a/Tests/GroupTree/testBlockedUniformBench.cpp b/Tests/GroupTree/testBlockedUniformBench.cpp
index 0d562068d000cc8b1d3f05934a6be6fa3332aebb..f299909634bffaf19905e5895aa630703bbf90e4 100644
--- a/Tests/GroupTree/testBlockedUniformBench.cpp
+++ b/Tests/GroupTree/testBlockedUniformBench.cpp
@@ -7,39 +7,39 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
diff --git a/Tests/GroupTree/testBlockedUniformCompare.cpp b/Tests/GroupTree/testBlockedUniformCompare.cpp
index f02a244993e428a634264f943e7d8b8c210a3590..53f89b4292bc646eea340475e5777f05d5e0412d 100644
--- a/Tests/GroupTree/testBlockedUniformCompare.cpp
+++ b/Tests/GroupTree/testBlockedUniformCompare.cpp
@@ -6,41 +6,41 @@
 // Keep in private GIT
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 #include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
 
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 #ifdef SCALFMM_USE_OMP4
-#include "../../Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskDepAlgorithm.hpp"
 #include "Core/FFmmAlgorithmOmp4.hpp"
 #endif
 #ifdef SCALFMM_USE_STARPU
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 #endif
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <memory>
 
@@ -69,7 +69,7 @@
 #include <starpu.h>
 #endif
 
-#define RANDOM_PARTICLES
+//#define RANDOM_PARTICLES
 
 const FParameterNames LocalOrder { {"-order"}, "Order of the kernel"};
 const FParameterNames LocalOptionOmpTask { {"-omp-task"}, "To use FFmmAlgorithmTask"};
@@ -649,13 +649,13 @@ struct RunContainer{
     #elif defined(SCALFMM_USE_OMP4)
             typedef FUnifKernel<FReal,GroupCellClass,GroupContainerClass,MatrixKernelClass,ORDER> GroupKernelClass;
             // Set the number of threads
-            typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass,
+            typedef FGroupTaskDepAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass,
                     GroupCellSymbClass, GroupCellUpClass, GroupCellDownClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
             std::cout << "Using FGroupTaskDepAlgorithm" << std::endl;
     #else
             typedef FUnifKernel<FReal,GroupCellClass,GroupContainerClass,MatrixKernelClass,ORDER> GroupKernelClass;
             //typedef FGroupSeqAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
-            typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupCellClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
+            typedef FGroupTaskAlgorithm<GroupOctreeClass, typename GroupOctreeClass::CellGroupClass, GroupKernelClass, typename GroupOctreeClass::ParticleGroupClass, GroupContainerClass > GroupAlgorithm;
             std::cout << "Using FGroupTaskAlgorithm" << std::endl;
     #endif
             // Get params
diff --git a/Tests/GroupTree/testBlockedWithCudaAlgorithm.cpp b/Tests/GroupTree/testBlockedWithCudaAlgorithm.cpp
index 522418cb77d05623f62cc10ed0d6808a13f863d4..32c02ca08c42ea1708022356a21a3da8ff3492b0 100644
--- a/Tests/GroupTree/testBlockedWithCudaAlgorithm.cpp
+++ b/Tests/GroupTree/testBlockedWithCudaAlgorithm.cpp
@@ -4,49 +4,49 @@
 // @FUSE_STARPU
 // @FUSE_CUDA
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
-#include "../../Src/GroupTree/TestKernel/FGroupTestParticleContainer.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
+#include "GroupTree/TestKernel/FGroupTestParticleContainer.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
-#include "../../Src/GroupTree/TestKernel/FTestCellPOD.hpp"
+#include "GroupTree/TestKernel/FTestCellPOD.hpp"
 
-//#include "../../Src/GroupTree/Cuda/FCudaTestKernels.hpp"
-//#include "../../Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp"
-//#include "../../Src/GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp"
-//#include "../../Src/GroupTree/Cuda/FCudaGroupOfCells.hpp"
-//#include "../../Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp"
+//#include "GroupTree/Cuda/FCudaTestKernels.hpp"
+//#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+//#include "GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp"
+//#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
+//#include "GroupTree/Cuda/FCudaDeviceWrapper.hpp"
 
 
 template <class FReal>
diff --git a/Tests/GroupTree/testBlockedWithOpenCLAlgorithm.cpp b/Tests/GroupTree/testBlockedWithOpenCLAlgorithm.cpp
index 857dbc8d581a14ac5290e437936bf9f424eef7cd..85bd32d5a99ae63b34636a97eb494c04e98baecc 100644
--- a/Tests/GroupTree/testBlockedWithOpenCLAlgorithm.cpp
+++ b/Tests/GroupTree/testBlockedWithOpenCLAlgorithm.cpp
@@ -3,45 +3,45 @@
 // @FUSE_STARPU
 // @FUSE_OPENCL
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
 
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
-#include "../../Src/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
-#include "../../Src/GroupTree/TestKernel/FGroupTestParticleContainer.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
+#include "GroupTree/TestKernel/FGroupTestParticleContainer.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
-#include "../../Src/GroupTree/TestKernel/FTestOpenCLCode.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/TestKernel/FTestOpenCLCode.hpp"
 #include "Components/FTestCell.hpp"
 
-#include "../../Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp"
+#include "GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp"
 
 int main(int argc, char* argv[]){
     if(getenv("HOSTNAME") && strcmp(getenv("HOSTNAME"),"berenger-HP-ProBook-640-G1") == 0){
diff --git a/Tests/Kernels/DirectAlgorithm.cpp b/Tests/Kernels/DirectAlgorithm.cpp
index 6bb7af1f4b887981cad60d06b5bfd0c32a6807af..7ced97a10f30cfadd423c166375e3be8f87b7d87 100644
--- a/Tests/Kernels/DirectAlgorithm.cpp
+++ b/Tests/Kernels/DirectAlgorithm.cpp
@@ -13,33 +13,33 @@
 #include <string>
 
 #include  "ScalFmmConfig.h"
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
-#include "../../Src/Files/FIOVtk.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FParameterNames.hpp"
+#include "Files/FIOVtk.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmPeriodic.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmPeriodic.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
 
-#include "../../Src/Files/FDlpolyLoader.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Files/FDlpolyLoader.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Kernels/P2P/FP2P.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/P2P/FP2P.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
 #ifdef SCALFMM_USE_BLAS
 // chebyshev kernel
-#include "../../Src/Kernels/Chebyshev/FChebCell.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebSymKernel.hpp"
+#include "Kernels/Chebyshev/FChebCell.hpp"
+#include "Kernels/Chebyshev/FChebSymKernel.hpp"
 #endif
 
 /** DLpoly particle is used in the gadget program
diff --git a/Tests/Kernels/testChebAlgorithm.cpp b/Tests/Kernels/testChebAlgorithm.cpp
index 2f237c658438b64966d492fa5702d0ed745f71b5..bfdf0a7442a05bdc6a6f6bbd29f99cbcb6ab92e1 100644
--- a/Tests/Kernels/testChebAlgorithm.cpp
+++ b/Tests/Kernels/testChebAlgorithm.cpp
@@ -31,7 +31,7 @@
 #include "Core/FFmmAlgorithmThread.hpp"
 #endif
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
  * This program runs the FMM Algorithm with the Chebyshev kernel and compares the results with a direct computation.
diff --git a/Tests/Kernels/testFlopsChebAlgorithm.cpp b/Tests/Kernels/testFlopsChebAlgorithm.cpp
index a113cd35afe732f56bec6533ce1bdd22efc5097c..c625190cb80762b6c10abae4081c62b6dea5cfdd 100644
--- a/Tests/Kernels/testFlopsChebAlgorithm.cpp
+++ b/Tests/Kernels/testFlopsChebAlgorithm.cpp
@@ -14,24 +14,24 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Files/FFmaScanfLoader.hpp"
+#include "Files/FFmaScanfLoader.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebCell.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Chebyshev/FChebCell.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebFlopsSymKernel.hpp"
+#include "Kernels/Chebyshev/FChebFlopsSymKernel.hpp"
 
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 int main(int argc, char* argv[])
diff --git a/Tests/Kernels/testOmniPath.cpp b/Tests/Kernels/testOmniPath.cpp
index 46117e0bf3dbf302c8d6a4906a59bd1c46ce89f5..13bc419d14a6cd2874b38165bea1be420142a1c8 100644
--- a/Tests/Kernels/testOmniPath.cpp
+++ b/Tests/Kernels/testOmniPath.cpp
@@ -12,33 +12,33 @@
 #include <cstdlib>
 
 
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
 
-#include "../../Src/Kernels/Uniform/FUnifCell.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Uniform/FUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Uniform/FUnifKernel.hpp"
 
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FMemUtils.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
 
-#include "../../Src/Utils/FLeafBalance.hpp"
+#include "Utils/FLeafBalance.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
  * This program runs the FMM Algorithm Distributed with the uniform kernel
diff --git a/Tests/Kernels/testP2PEfficency.cpp b/Tests/Kernels/testP2PEfficency.cpp
index 0c58a1d2989db17ccedc4cc26896b3a79829f820..b161155dc62f7ec07bc523a13b79fe2973acf9c8 100644
--- a/Tests/Kernels/testP2PEfficency.cpp
+++ b/Tests/Kernels/testP2PEfficency.cpp
@@ -12,17 +12,17 @@
 #include <string>
 
 #include  "ScalFmmConfig.h"
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
-#include "../../Src/Files/FIOVtk.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FParameterNames.hpp"
+#include "Files/FIOVtk.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Containers/FOctree.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PR.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Kernels/P2P/FP2PR.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
 
 // Simply create particles and try the kernels
 int main(int argc, char ** argv){
diff --git a/Tests/Kernels/testRotationAlgorithm.cpp b/Tests/Kernels/testRotationAlgorithm.cpp
index 9b1901037856c5c6d6fb332f0939aa220597b4c8..1545dcac1ad3c1e4a2c6cade4dd5624b75c952a8 100644
--- a/Tests/Kernels/testRotationAlgorithm.cpp
+++ b/Tests/Kernels/testRotationAlgorithm.cpp
@@ -4,29 +4,29 @@
 #include <iostream>
 
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
+#include "Containers/FOctree.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 int main(int argc, char** argv){
     FHelpDescribeAndExit(argc, argv,
diff --git a/Tests/Kernels/testRotationAlgorithmProc.cpp b/Tests/Kernels/testRotationAlgorithmProc.cpp
index ee84575fe608451e28a9ab6bed54d586374d7385..0cd341a8e716f164e52d07132be5bb62ffeb67c1 100644
--- a/Tests/Kernels/testRotationAlgorithmProc.cpp
+++ b/Tests/Kernels/testRotationAlgorithmProc.cpp
@@ -10,28 +10,28 @@
 #include <cstdlib>
 
 
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FMemUtils.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
 
-#include "../../Src/Utils/FLeafBalance.hpp"
+#include "Utils/FLeafBalance.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
  * This program runs the FMM Algorithm Distributed with the Rotation kernel
diff --git a/Tests/Kernels/testRotationPeriodicBench.cpp b/Tests/Kernels/testRotationPeriodicBench.cpp
index 31d87d54e3c7f761c2e4e20d380800da7a6d8a3e..c0a2fc0053c55a75cbfe44682bc59882f6e19139 100644
--- a/Tests/Kernels/testRotationPeriodicBench.cpp
+++ b/Tests/Kernels/testRotationPeriodicBench.cpp
@@ -1,23 +1,23 @@
 // See LICENCE file at project root
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationOriginalKernel.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationOriginalKernel.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Core/FFmmAlgorithmPeriodic.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Core/FFmmAlgorithmPeriodic.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 
diff --git a/Tests/Kernels/testSmoothUnifAlgorithm.cpp b/Tests/Kernels/testSmoothUnifAlgorithm.cpp
index 49903e3eeb785e8b7a0b6c219d460ea6c0f40152..c8aca3f9c468ce676b59baefcb7b76b3eee41612 100644
--- a/Tests/Kernels/testSmoothUnifAlgorithm.cpp
+++ b/Tests/Kernels/testSmoothUnifAlgorithm.cpp
@@ -35,7 +35,7 @@
 #include "Core/FFmmAlgorithm.hpp"
 #include "Core/FFmmAlgorithmThread.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
  * This program runs the FMM Algorithm with the Uniform kernel 
diff --git a/Tests/Kernels/testSphericalAlgorithm.cpp b/Tests/Kernels/testSphericalAlgorithm.cpp
index 7574b59e7e6149e01127a03864e7f8bbb7c3c81c..e22b4a683e8ba6aedc3df1623c1dc18d4966d6ad 100644
--- a/Tests/Kernels/testSphericalAlgorithm.cpp
+++ b/Tests/Kernels/testSphericalAlgorithm.cpp
@@ -5,24 +5,24 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm basic algo
diff --git a/Tests/Kernels/testSphericalBench.cpp b/Tests/Kernels/testSphericalBench.cpp
index 1694df4fe90e784049c657b9165d4320e09e114d..d18bda637d1b00f12bd46120bea24469d8192fcf 100644
--- a/Tests/Kernels/testSphericalBench.cpp
+++ b/Tests/Kernels/testSphericalBench.cpp
@@ -5,24 +5,24 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm basic algo
diff --git a/Tests/Kernels/testSphericalBlasAlgorithm.cpp b/Tests/Kernels/testSphericalBlasAlgorithm.cpp
index 1763e4fce9f31bb9bef0318253c63e6219553bdc..26320ea2c10dc80b5599a5facc7579098a200d30 100644
--- a/Tests/Kernels/testSphericalBlasAlgorithm.cpp
+++ b/Tests/Kernels/testSphericalBlasAlgorithm.cpp
@@ -9,26 +9,26 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalBlasKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalBlasKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Files/FFmaScanfLoader.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Files/FFmaScanfLoader.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm blas algo
diff --git a/Tests/Kernels/testSphericalBlockBlasAlgorithm.cpp b/Tests/Kernels/testSphericalBlockBlasAlgorithm.cpp
index 4e3e48ef9d1b8ac9640863156cbfbcfba09b0e89..d81e985bf836a4918c70578b1290317436abfc8c 100644
--- a/Tests/Kernels/testSphericalBlockBlasAlgorithm.cpp
+++ b/Tests/Kernels/testSphericalBlockBlasAlgorithm.cpp
@@ -9,27 +9,27 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FBasicCell.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalBlockBlasKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalBlockBlasKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Files/FFmaScanfLoader.hpp"
+#include "Files/FFmaScanfLoader.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm basic algo
diff --git a/Tests/Kernels/testSphericalGalaxyCsv.cpp b/Tests/Kernels/testSphericalGalaxyCsv.cpp
index fab488c97a0f51d7486babdc245dc15b4925fe4e..918f8d820ec586ab2561f000becc3c93342d4c61 100644
--- a/Tests/Kernels/testSphericalGalaxyCsv.cpp
+++ b/Tests/Kernels/testSphericalGalaxyCsv.cpp
@@ -5,29 +5,29 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Files/FTreeCsvSaver.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Arranger/FOctreeArranger.hpp"
+#include "Files/FTreeCsvSaver.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Arranger/FOctreeArranger.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FParticleType.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FParticleType.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
-#include "../../Src/Arranger/FAbstractMover.hpp"
+#include "Utils/FParameterNames.hpp"
+#include "Arranger/FAbstractMover.hpp"
 
 
 template <class FReal>
diff --git a/Tests/Kernels/testSphericalProcAlgorithm.cpp b/Tests/Kernels/testSphericalProcAlgorithm.cpp
index e1c0a13a38a1245b4d117da38f11389f7da5888b..233d513b7c097319620b8191ee3759f7168f202c 100644
--- a/Tests/Kernels/testSphericalProcAlgorithm.cpp
+++ b/Tests/Kernels/testSphericalProcAlgorithm.cpp
@@ -4,32 +4,32 @@
 // @FUSE_MPI
 // ================
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMpi.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FMath.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMpi.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
 
-#include "../../Src/Utils/FLeafBalance.hpp"
+#include "Utils/FLeafBalance.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <iostream>
 
diff --git a/Tests/Kernels/testSphericalRotationAlgorithm.cpp b/Tests/Kernels/testSphericalRotationAlgorithm.cpp
index ae352961d5d139e036fe590687eee7c97799118f..4bd785965ae6f84bcef7d9865f5e08871b127aa1 100644
--- a/Tests/Kernels/testSphericalRotationAlgorithm.cpp
+++ b/Tests/Kernels/testSphericalRotationAlgorithm.cpp
@@ -5,26 +5,26 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalRotationKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalRotationKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Files/FFmaScanfLoader.hpp"
+#include "Files/FFmaScanfLoader.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm basic algo
diff --git a/Tests/Kernels/testTaylor.cpp b/Tests/Kernels/testTaylor.cpp
index 4c86f53f9ec257aa47b7c995f3e180ef26d1e8dc..65648de462ca93fc95fef4c60ec25cd17df315f0 100644
--- a/Tests/Kernels/testTaylor.cpp
+++ b/Tests/Kernels/testTaylor.cpp
@@ -10,25 +10,25 @@
 #include <cstdlib>
 #include <stdexcept>
 #include "ScalFmmConfig.h"
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FFmaScanfLoader.hpp"
+#include "Files/FFmaScanfLoader.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Utils/FParameterNames.hpp"
 //
 // taylor kernel
-#include "../../Src/Kernels/Taylor/FTaylorCell.hpp"
-#include "../../Src/Kernels/Taylor/FTaylorKernel.hpp"
+#include "Kernels/Taylor/FTaylorCell.hpp"
+#include "Kernels/Taylor/FTaylorKernel.hpp"
 //
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
 /**
  * This program compares two different kernels, eg., the Chebyshev kernel with
diff --git a/Tests/Kernels/testTaylorKernel.cpp b/Tests/Kernels/testTaylorKernel.cpp
index 97a813f44e8a77066dd402be796dede99cddecde..e2aa15253d03b8379f5e01a913078ce918991b0c 100644
--- a/Tests/Kernels/testTaylorKernel.cpp
+++ b/Tests/Kernels/testTaylorKernel.cpp
@@ -2,24 +2,24 @@
 
 #include <string>
 
-#include "../../Src/Utils/FPoint.hpp"
-#include "../../Src/Utils/FLog.hpp"
-#include "../../Src/Utils/FMath.hpp"
+#include "Utils/FPoint.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FMath.hpp"
 
-#include "../../Src/Kernels/Taylor/FTaylorCell.hpp"
-#include "../../Src/Kernels/Taylor/FTaylorKernel.hpp"
+#include "Kernels/Taylor/FTaylorCell.hpp"
+#include "Kernels/Taylor/FTaylorKernel.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Containers/FVector.hpp"
-#include "../../Src/Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
+#include "Utils/FParameterNames.hpp"
 
 int main(int argc,char** argv){
     FHelpDescribeAndExit(argc, argv,
diff --git a/Tests/Kernels/testTaylorSimple.cpp b/Tests/Kernels/testTaylorSimple.cpp
index ecdee29e04e53ebf327841f1d3a717d321e7dc2d..51715e37571ac22ddcbc7de0c6c06acae5ca13ce 100644
--- a/Tests/Kernels/testTaylorSimple.cpp
+++ b/Tests/Kernels/testTaylorSimple.cpp
@@ -2,24 +2,24 @@
 #include <iostream>
 #include <string>
 
-#include "../../Src/Utils/FPoint.hpp"
-#include "../../Src/Utils/FLog.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FPoint.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FTypedLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FTypedLeaf.hpp"
 
-#include "../../Src/Containers/FVector.hpp"
-#include "../../Src/Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/Kernels/Taylor/FTaylorCell.hpp"
-#include "../../Src/Kernels/Taylor/FTaylorKernel.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Kernels/Taylor/FTaylorCell.hpp"
+#include "Kernels/Taylor/FTaylorKernel.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 int main(int argc,char* argv[]){
diff --git a/Tests/Kernels/testTsmAlgorithm.cpp b/Tests/Kernels/testTsmAlgorithm.cpp
index 72302387ecbfa93c59060e98877f947ba0ab9bd2..c334c299722329e575a52f8b983851d0d2ae05af 100644
--- a/Tests/Kernels/testTsmAlgorithm.cpp
+++ b/Tests/Kernels/testTsmAlgorithm.cpp
@@ -5,27 +5,27 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Components/FTypedLeaf.hpp"
+#include "Components/FTypedLeaf.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmTsm.hpp"
+#include "Core/FFmmAlgorithmTsm.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Files/FFmaTsmLoader.hpp"
+#include "Files/FFmaTsmLoader.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm basic algo
diff --git a/Tests/Kernels/testTuneSphericalBlockBlas.cpp b/Tests/Kernels/testTuneSphericalBlockBlas.cpp
index 93ce74ec6906b5c3dd5c85fe3213c051ea75243a..f34e59988c82288b07e75f75e9887ede36db1857 100644
--- a/Tests/Kernels/testTuneSphericalBlockBlas.cpp
+++ b/Tests/Kernels/testTuneSphericalBlockBlas.cpp
@@ -9,26 +9,26 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FBasicCell.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalBlockBlasKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalBlockBlasKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Files/FFmaScanfLoader.hpp"
+#include "Files/FFmaScanfLoader.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program find the best block blas size
   */
diff --git a/Tests/Utils/testBlas.cpp b/Tests/Utils/testBlas.cpp
index b8b4ff1946e307f1af6c2f1eede0911478bf1449..c8df2c86982f6e8837401355de47a35051ac0d51 100644
--- a/Tests/Utils/testBlas.cpp
+++ b/Tests/Utils/testBlas.cpp
@@ -21,9 +21,9 @@
 #include <iostream>
 #include <stdlib.h>
 
-#include "../../Src/Utils/FBlas.hpp"
+#include "Utils/FBlas.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 template <class FReal>
diff --git a/Tests/Utils/testChebBinaryM2L.cpp b/Tests/Utils/testChebBinaryM2L.cpp
index 8273587c7155d68466d24cfe60ab34258bcc3b21..f3fea987865003d98bb7b2ef6ec7084f501898db 100644
--- a/Tests/Utils/testChebBinaryM2L.cpp
+++ b/Tests/Utils/testChebBinaryM2L.cpp
@@ -25,14 +25,14 @@
 #include <stdlib.h>
 #include <time.h>
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebM2LHandler.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMath.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Chebyshev/FChebM2LHandler.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 /**
diff --git a/Tests/Utils/testChebBinarySymM2L.cpp b/Tests/Utils/testChebBinarySymM2L.cpp
index 1a2a1673135737dacf3345579580a826ace8c967..4161e9cdec773e74cbfd370f7c1f5edd5d143a65 100644
--- a/Tests/Utils/testChebBinarySymM2L.cpp
+++ b/Tests/Utils/testChebBinarySymM2L.cpp
@@ -26,14 +26,14 @@
 #include <time.h>
 #include <stdexcept>
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebSymM2LHandler.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMath.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Chebyshev/FChebSymM2LHandler.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 /**
diff --git a/Tests/Utils/testChebInterpolator.cpp b/Tests/Utils/testChebInterpolator.cpp
index 756e7a7e687ffafe1b2a34f271520c6e620fcaf6..c9b15e7e5cfcf14957fa28338d94f4304241c259 100644
--- a/Tests/Utils/testChebInterpolator.cpp
+++ b/Tests/Utils/testChebInterpolator.cpp
@@ -26,22 +26,22 @@
 #include <stdlib.h>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMath.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMath.hpp"
 
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
 
-#include "../../Src/Kernels/Chebyshev/FChebInterpolator.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Chebyshev/FChebInterpolator.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 /**
diff --git a/Tests/Utils/testChebInterpolatorExtendedBBox.cpp b/Tests/Utils/testChebInterpolatorExtendedBBox.cpp
index f2231deffda49c935498d7b0e9c8e80e0f735c9c..ca6ba1f5aa48aaeb6cfe98496a4a625a3638af21 100644
--- a/Tests/Utils/testChebInterpolatorExtendedBBox.cpp
+++ b/Tests/Utils/testChebInterpolatorExtendedBBox.cpp
@@ -40,7 +40,7 @@
 #include "Kernels/P2P/FP2PParticleContainer.hpp"
 #include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 /**
diff --git a/Tests/Utils/testChebM2Lprecomputation.cpp b/Tests/Utils/testChebM2Lprecomputation.cpp
index 9932f96e9bef016b95dce5dca0806b71cc87617a..b0075f4b41a088bf02e0506ae2307491a33296e5 100644
--- a/Tests/Utils/testChebM2Lprecomputation.cpp
+++ b/Tests/Utils/testChebM2Lprecomputation.cpp
@@ -10,17 +10,17 @@
 #include <stdexcept>
 
 
-#include "../../Src/Utils/FGlobal.hpp"
-#include "../../Src/Utils/FPoint.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FPoint.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FTic.hpp"
 
 
-#include "../../Src/Kernels/Chebyshev/FChebTensor.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebM2LHandler.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Chebyshev/FChebTensor.hpp"
+#include "Kernels/Chebyshev/FChebM2LHandler.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 
diff --git a/Tests/Utils/testChebOctree.cpp b/Tests/Utils/testChebOctree.cpp
index 2540f207a96162e7625f0c7bb3b07f398e86cc94..ca9bdb465888610969342941f701a67e9ab10182 100644
--- a/Tests/Utils/testChebOctree.cpp
+++ b/Tests/Utils/testChebOctree.cpp
@@ -24,21 +24,21 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebCell.hpp"
+#include "Kernels/Chebyshev/FChebCell.hpp"
 
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
 * In this file we show how to use octree
diff --git a/Tests/Utils/testChebSymmetries.cpp b/Tests/Utils/testChebSymmetries.cpp
index ee8fb59f0db89c5b456d67b3156842c6648bcb02..cc257bb1bfb6edb78ffd42861733f4a71990f4a4 100644
--- a/Tests/Utils/testChebSymmetries.cpp
+++ b/Tests/Utils/testChebSymmetries.cpp
@@ -26,14 +26,14 @@
 
 
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FBlas.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FBlas.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebTensor.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
-#include "../../Src/Kernels/Interpolation/FInterpSymmetries.hpp"
+#include "Kernels/Chebyshev/FChebTensor.hpp"
+#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
+#include "Kernels/Interpolation/FInterpSymmetries.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 template < class FReal, int ORDER>
 void permuteMatrix(const unsigned int perm[ORDER*ORDER*ORDER], FReal *const Matrix)
diff --git a/Tests/Utils/testChebTensorProduct.cpp b/Tests/Utils/testChebTensorProduct.cpp
index af6b7d9f4c14faec4a09667cdb535461f87ccacc..1cfca5d3e6b7277cf0f7765885705645e51aa721 100644
--- a/Tests/Utils/testChebTensorProduct.cpp
+++ b/Tests/Utils/testChebTensorProduct.cpp
@@ -10,20 +10,20 @@
 #include <stdlib.h>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FBlas.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FBlas.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Kernels/Chebyshev/FChebTensor.hpp"
-#include "../../Src/Kernels/Chebyshev/FChebInterpolator.hpp"
+#include "Kernels/Chebyshev/FChebTensor.hpp"
+#include "Kernels/Chebyshev/FChebInterpolator.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 template <class FReal>
 void applyM2M(FReal *const S,	FReal *const w, const unsigned int n,	FReal *const W, const unsigned int N)
diff --git a/Tests/Utils/testDebug.cpp b/Tests/Utils/testDebug.cpp
index e11a193eb314c1ff58a63cd6830ebd1406af0ae4..4a849ded3138402239e46b6e1d3633c2ce667bd7 100644
--- a/Tests/Utils/testDebug.cpp
+++ b/Tests/Utils/testDebug.cpp
@@ -1,7 +1,7 @@
 // See LICENCE file at project root
-#include "../../Src/Utils/FLog.hpp"
+#include "Utils/FLog.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
 * In this file we show how to use the debug module.
diff --git a/Tests/Utils/testFFT.cpp b/Tests/Utils/testFFT.cpp
index 81517cee8ff1d366150bf455758bd595086e1b9a..e1da2c5e536f492e564f56c62dcde780f186ea15 100644
--- a/Tests/Utils/testFFT.cpp
+++ b/Tests/Utils/testFFT.cpp
@@ -21,12 +21,6 @@
 #include <iostream>
 #include <stdlib.h>
 
-#ifdef SCALFMM_USE_ESSL_AS_FFTW
-#include <fftw3_essl.h>
-#else
-#include <fftw3.h>
-#endif
-
 #include "Utils/FGlobal.hpp"
 #include "Utils/FMath.hpp"
 #include "Utils/stdComplex.hpp"
diff --git a/Tests/Utils/testFmmAlgorithm.cpp b/Tests/Utils/testFmmAlgorithm.cpp
index 6f1698a3191d8cb03c15eef5b3f6fc1d03def4c0..3f3df9520bbb84c0a1c70719a42de822453db442 100644
--- a/Tests/Utils/testFmmAlgorithm.cpp
+++ b/Tests/Utils/testFmmAlgorithm.cpp
@@ -4,29 +4,29 @@
 #include <cstdio>
 
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
-#include "../../Src/Core/FFmmAlgorithmTask.hpp"
+#include "Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmTask.hpp"
 
-#include "../../Src/Components/FBasicKernels.hpp"
+#include "Components/FBasicKernels.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of the fmm basic algo
   * it also check that each particles is impacted each other particles
diff --git a/Tests/Utils/testFmmAlgorithmProcRandom.cpp b/Tests/Utils/testFmmAlgorithmProcRandom.cpp
index e9c280abb20f75b97ff40942ea095c0464aa8bef..adc1e9930f2f5a2e024e1fd11555987d726c4439 100644
--- a/Tests/Utils/testFmmAlgorithmProcRandom.cpp
+++ b/Tests/Utils/testFmmAlgorithmProcRandom.cpp
@@ -4,34 +4,34 @@
 // @FUSE_MPI
 // ================
 
-#include "../../Src/Utils/FMpi.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FMpi.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
-#include "../../Src/Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
 
-//#include "../../Src/Core/FFmmAlgorithmProcMpi.hpp"
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
+//#include "Core/FFmmAlgorithmProcMpi.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
 
-#include "../../Src/Components/FBasicKernels.hpp"
+#include "Components/FBasicKernels.hpp"
 
-#include "../../Src/Utils/FLeafBalance.hpp"
+#include "Utils/FLeafBalance.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <iostream>
 #include <cstdio>
diff --git a/Tests/Utils/testFmmAlgorithmProcRotation.cpp b/Tests/Utils/testFmmAlgorithmProcRotation.cpp
index 7ef07c5532a852ca35459371d3ccfa723fa9951a..ab3be61b00b2e497525a4a932ef391ca500e48d3 100644
--- a/Tests/Utils/testFmmAlgorithmProcRotation.cpp
+++ b/Tests/Utils/testFmmAlgorithmProcRotation.cpp
@@ -4,32 +4,32 @@
 // @FUSE_MPI
 // ================
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FMpi.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FMath.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FMpi.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Core/FFmmAlgorithmThread.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
 
 #include "Utils/FLeafBalance.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <iostream>
 
diff --git a/Tests/Utils/testLapack.cpp b/Tests/Utils/testLapack.cpp
index a38e438e99c062d471aae209aa78204531f79daf..67a6e86afc6b0800d26dd8c44bdb56310d331e0d 100644
--- a/Tests/Utils/testLapack.cpp
+++ b/Tests/Utils/testLapack.cpp
@@ -21,10 +21,10 @@
 #include <iostream>
 #include <stdlib.h>
 
-#include "../../Src/Utils/FBlas.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FBlas.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
  * Test functionality of C - interfaced LAPACK functions
diff --git a/Tests/Utils/testLoader.cpp b/Tests/Utils/testLoader.cpp
index 6189c872d74826580d21113cd1949a7103909ad2..c7a85fe9e76c2484f1f145948e1b6ac8f30c01b1 100644
--- a/Tests/Utils/testLoader.cpp
+++ b/Tests/Utils/testLoader.cpp
@@ -6,24 +6,24 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicCell.hpp"
+#include "Components/FBasicCell.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Files/FBasicLoader.hpp"
+#include "Files/FBasicLoader.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
   * In this file we show an example of FBasicLoader use
diff --git a/Tests/Utils/testLoaderFMATsm.cpp b/Tests/Utils/testLoaderFMATsm.cpp
index c26db74a07a39180ed21443b59178bf97b8c4704..eb5515fa3ec8ef425cc2186aa64cfe3c049e9410 100644
--- a/Tests/Utils/testLoaderFMATsm.cpp
+++ b/Tests/Utils/testLoaderFMATsm.cpp
@@ -6,25 +6,25 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicCell.hpp"
+#include "Components/FBasicCell.hpp"
 
-#include "../../Src/Components/FTypedLeaf.hpp"
+#include "Components/FTypedLeaf.hpp"
 
-#include "../../Src/Files/FFmaTsmLoader.hpp"
+#include "Files/FFmaTsmLoader.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 int main(int argc, char ** argv ){
diff --git a/Tests/Utils/testLoaderFMATsmCreate.cpp b/Tests/Utils/testLoaderFMATsmCreate.cpp
index 96f090acee606051a5bcadf99e6f578bbc829370..51208348b4688677ad01abde3c083bfa15299f1d 100644
--- a/Tests/Utils/testLoaderFMATsmCreate.cpp
+++ b/Tests/Utils/testLoaderFMATsmCreate.cpp
@@ -7,10 +7,10 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FGlobal.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 // This file can generate basic particles files in the FMA format
 
diff --git a/Tests/Utils/testMemStats.cpp b/Tests/Utils/testMemStats.cpp
index d283a7b701c393c65ee3058e9861c984e1fd94af..96a2fcf8bcf40aaf4880cec5f2badbeff9bc19af 100644
--- a/Tests/Utils/testMemStats.cpp
+++ b/Tests/Utils/testMemStats.cpp
@@ -5,28 +5,28 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalKernel.hpp"
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Kernels/Spherical/FSphericalKernel.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /** This program show an example of use of
   * the fmm basic algo
diff --git a/Tests/Utils/testMpiCsvSaver.cpp b/Tests/Utils/testMpiCsvSaver.cpp
index 046736c7a84e681d2edabcae9e00facbc9a5ad10..b88dbc78b6b28d82435f73bf17be741b99a52397 100644
--- a/Tests/Utils/testMpiCsvSaver.cpp
+++ b/Tests/Utils/testMpiCsvSaver.cpp
@@ -9,21 +9,21 @@
 #include <cstdlib>
 #include <string>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FMpi.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FMpi.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Files/FTreeMpiCsvSaver.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FTreeMpiCsvSaver.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 template <class FReal>
diff --git a/Tests/Utils/testOctree.cpp b/Tests/Utils/testOctree.cpp
index 6b2582ab10542e9debc10bc1ca6b895789a9a252..bec8abefa87618fabe96e0d72a4fb2d8ab9978b1 100644
--- a/Tests/Utils/testOctree.cpp
+++ b/Tests/Utils/testOctree.cpp
@@ -6,22 +6,22 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
 * In this file we show how to use octree
diff --git a/Tests/Utils/testOctreeFuncteur.cpp b/Tests/Utils/testOctreeFuncteur.cpp
index 2a601a24db9891b051a8ab80ef1465830d35933d..b285d1676c7447c5f355ff426dc8dc9594f52afd 100644
--- a/Tests/Utils/testOctreeFuncteur.cpp
+++ b/Tests/Utils/testOctreeFuncteur.cpp
@@ -6,22 +6,22 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
 * In this file we show how to use octree's functeur
diff --git a/Tests/Utils/testOctreeIter.cpp b/Tests/Utils/testOctreeIter.cpp
index 968a5719b3448c2c60ce2460c22efeccae54deb4..db6f071d1661d5d7c4b75feb02c146a2d25dd0ec 100644
--- a/Tests/Utils/testOctreeIter.cpp
+++ b/Tests/Utils/testOctreeIter.cpp
@@ -7,21 +7,21 @@
 #include <time.h>
 
 
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
+#include "Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicCell.hpp"
 
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
 * In this file we show how to use octree with iteration
diff --git a/Tests/Utils/testOctreeParallelFuncteur.cpp b/Tests/Utils/testOctreeParallelFuncteur.cpp
index 6f69c9ba852129fb61ae60b2d728f1678c22def2..a826e2a8f01453d0ccb4da4653fcdc708c4eeac5 100644
--- a/Tests/Utils/testOctreeParallelFuncteur.cpp
+++ b/Tests/Utils/testOctreeParallelFuncteur.cpp
@@ -6,24 +6,24 @@
 #include <cstdlib>
 #include <time.h>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FParForEachOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FParForEachOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Utils/FAssert.hpp"
-#include "../../Src/Utils/FPoint.hpp"
-#include "../../Src/Utils/FParObject.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
+#include "Utils/FParObject.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
+#include "Files/FRandomLoader.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 /**
 * In this file we show how to use octree's functeur
diff --git a/Tests/Utils/testOctreeRearrangePeriodic.cpp b/Tests/Utils/testOctreeRearrangePeriodic.cpp
index 518ea226d1585aedb379c8123c8487cc92e36c6e..9c53fcdec58354ea9a4707f9ea1b394236d234c0 100644
--- a/Tests/Utils/testOctreeRearrangePeriodic.cpp
+++ b/Tests/Utils/testOctreeRearrangePeriodic.cpp
@@ -5,25 +5,25 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
 
-#include "../../Src/Arranger/FOctreeArranger.hpp"
-#include "../../Src/Arranger/FArrangerPeriodic.hpp"
-#include "../../Src/Arranger/FBasicParticleContainerIndexedMover.hpp"
+#include "Arranger/FOctreeArranger.hpp"
+#include "Arranger/FArrangerPeriodic.hpp"
+#include "Arranger/FBasicParticleContainerIndexedMover.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 
diff --git a/Tests/Utils/testOctreeRearrangeProc.cpp b/Tests/Utils/testOctreeRearrangeProc.cpp
index d08f4ead170b26bcd204fb1162d4090210e4bd0c..12388fd89430265a65af42d703603437839c6df0 100644
--- a/Tests/Utils/testOctreeRearrangeProc.cpp
+++ b/Tests/Utils/testOctreeRearrangeProc.cpp
@@ -9,26 +9,26 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include "Components/FSimpleLeaf.hpp"
 
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FTestCell.hpp"
+#include "Components/FTestCell.hpp"
 
-#include "../../Src/Arranger/FOctreeArrangerProc.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
+#include "Arranger/FOctreeArrangerProc.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicParticleContainer.hpp"
 
-#include "../../Src/Utils/FLeafBalance.hpp"
+#include "Utils/FLeafBalance.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 template <class FReal>
 struct TestParticle{
diff --git a/Tests/Utils/testOctreeRearrangeTsm.cpp b/Tests/Utils/testOctreeRearrangeTsm.cpp
index fe94392a5d5c96984498f4b7b148951135b7fc75..8edd4735e946989cb58ebe609b1f2f2bb97aa1f5 100644
--- a/Tests/Utils/testOctreeRearrangeTsm.cpp
+++ b/Tests/Utils/testOctreeRearrangeTsm.cpp
@@ -5,25 +5,25 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FParameters.hpp"
-#include "../../Src/Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FTypedLeaf.hpp"
-#include "../../Src/Utils/FPoint.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FTypedLeaf.hpp"
+#include "Utils/FPoint.hpp"
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
-#include "../../Src/Components/FBasicCell.hpp"
-#include "../../Src/Arranger/FBasicParticleContainerIndexedMover.hpp"
-#include "../../Src/Arranger/FParticleTypedIndexedMover.hpp"
-#include "../../Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp"
+#include "Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Arranger/FBasicParticleContainerIndexedMover.hpp"
+#include "Arranger/FParticleTypedIndexedMover.hpp"
+#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
 
-#include "../../Src/Arranger/FOctreeArranger.hpp"
+#include "Arranger/FOctreeArranger.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 
 // Simply create particles and try the kernels
diff --git a/Tests/Utils/testParameterNames.cpp b/Tests/Utils/testParameterNames.cpp
index 95ae5273f17a745174592ba64544dc129992602d..c34d4ef49611a761e2030436fbf7b31707748e54 100644
--- a/Tests/Utils/testParameterNames.cpp
+++ b/Tests/Utils/testParameterNames.cpp
@@ -1,4 +1,4 @@
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <iostream>
 
diff --git a/Tests/Utils/testStatsTree.cpp b/Tests/Utils/testStatsTree.cpp
index 52e0f78fb64502babc94efc71a733f252e8c26cf..98153cc6e2bc439433ff4fc4210023e42a32ab41 100644
--- a/Tests/Utils/testStatsTree.cpp
+++ b/Tests/Utils/testStatsTree.cpp
@@ -5,27 +5,27 @@
 #include <cstdio>
 #include <cstdlib>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include <Utils/FTic.hpp>
+#include <Utils/FParameters.hpp>
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include <Containers/FOctree.hpp>
+#include <Containers/FVector.hpp>
 
-#include "../../Src/Components/FBasicCell.hpp"
+#include <Components/FBasicCell.hpp>
 
-#include "../../Src/Core/FFmmAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithmThread.hpp"
+#include <Core/FFmmAlgorithm.hpp>
+#include <Core/FFmmAlgorithmThread.hpp>
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
+#include <Components/FSimpleLeaf.hpp>
 
 
-#include "../../Src/Utils/FMath.hpp"
+#include <Utils/FMath.hpp>
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include <Files/FFmaGenericLoader.hpp>
 
-#include "../../Src/Components/FBasicParticleContainer.hpp"
+#include <Components/FBasicParticleContainer.hpp>
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include <Utils/FParameterNames.hpp>
 
 
 /** This program show an example of use of
diff --git a/Tests/Utils/testTemplateExample.cpp b/Tests/Utils/testTemplateExample.cpp
index 90b93d9e8caa1c940b0a7f750ada95cbbaf6f91d..7e03cad9b32d0faa495816f06bdd95ca35cf3e4b 100644
--- a/Tests/Utils/testTemplateExample.cpp
+++ b/Tests/Utils/testTemplateExample.cpp
@@ -5,9 +5,9 @@
   *
   **/
 
-#include "../../Src/Utils/FTemplate.hpp"
+#include "Utils/FTemplate.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <iostream>
 
diff --git a/Tests/Utils/testTic.cpp b/Tests/Utils/testTic.cpp
index 5fe557660a9eb1dda7e4bfe5ed889fb7e75a3d15..7d689f92c449c9cbc73d772561e605d0e066febd 100644
--- a/Tests/Utils/testTic.cpp
+++ b/Tests/Utils/testTic.cpp
@@ -1,7 +1,7 @@
 // See LICENCE file at project root
 #include <iostream>
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameterNames.hpp"
 
 #include <cstdlib>
 #include <unistd.h>
diff --git a/Tests/Utils/testTreeBuilderThread.cpp b/Tests/Utils/testTreeBuilderThread.cpp
index f59bafa6018735e64ac3c4d2fc65566f088e7480..cd6d9f7303ad6d0df8cfad901540c1105ff6613b 100644
--- a/Tests/Utils/testTreeBuilderThread.cpp
+++ b/Tests/Utils/testTreeBuilderThread.cpp
@@ -4,25 +4,25 @@
 #include <iostream>
 
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
+#include "Containers/FOctree.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Kernels/Rotation/FRotationKernel.hpp"
-#include "../../Src/Kernels/Rotation/FRotationCell.hpp"
+#include "Kernels/Rotation/FRotationKernel.hpp"
+#include "Kernels/Rotation/FRotationCell.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Files/FTreeBuilder.hpp"
+#include "Files/FTreeBuilder.hpp"
 
 int main(int argc, char** argv){
     FHelpDescribeAndExit(argc, argv,
diff --git a/Tests/Utils/testTreeIO.cpp b/Tests/Utils/testTreeIO.cpp
index c99059daa09dd380e7a7da3f386aeff85d15674b..3df5c1cf91f5d7882fc237ff0da28248b7ab7364 100644
--- a/Tests/Utils/testTreeIO.cpp
+++ b/Tests/Utils/testTreeIO.cpp
@@ -6,21 +6,21 @@
 #include <cstdlib>
 #include <string>
 
-#include "../../Src/Utils/FTic.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Containers/FOctree.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
 
 
-#include "../../Src/Files/FFmaGenericLoader.hpp"
-#include "../../Src/Files/FTreeIO.hpp"
+#include "Files/FFmaGenericLoader.hpp"
+#include "Files/FTreeIO.hpp"
 
-#include "../../Src/Kernels/Spherical/FSphericalCell.hpp"
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Kernels/Spherical/FSphericalCell.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
 void usage() {
 	std::cout << "Exemple to store and load a tree" << std::endl;
diff --git a/UTests/CMakeLists.txt b/UTests/CMakeLists.txt
index 7a09ec67d3df757672de6c55ff76ec7bcc8408b2..5bf88ea1cacef8a6c198378095a05cab4438922a 100644
--- a/UTests/CMakeLists.txt
+++ b/UTests/CMakeLists.txt
@@ -1,104 +1,80 @@
-# check if compiling into source directories
-STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
-if(insource)
-    MESSAGE(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto scalfmm/Build and tapes cmake ../")
-endif(insource)
-
-project(UTESTS_SCALFMM CXX)
-
-FIND_PROGRAM( TESTS_GCOV_PATH gcov )
-FIND_PROGRAM( TESTS_LCOV_PATH lcov )
-FIND_PROGRAM( TESTS_GENHTML_PATH genhtml )
-FIND_PROGRAM( TESTS_GCOVR_PATH gcovr PATHS ${CMAKE_SOURCE_DIR}/Modules)
-
-MESSAGE(STATUS  "GG ${TESTS_GCOV_PATH} ${TESTS_LCOV_PATH} ${TESTS_GENHTML_PATH} ${TESTS_GCOVR_PATH}" )
-IF( TESTS_GCOV_PATH AND TESTS_LCOV_PATH AND TESTS_GCOVR_PATH )
-  #Script for launching lcov and generating an html report
-  ADD_CUSTOM_TARGET(coverage)
-  ADD_CUSTOM_COMMAND(TARGET coverage
-           COMMAND mkdir -p CoverageReport
-          COMMAND ${TESTS_LCOV_PATH} --directory  . --zerocounters
-          COMMAND make test
-  # Capturing lcov counters and generating report
-		COMMAND ${TESTS_LCOV_PATH} --directory . --capture --output-file ${_outputname}.info
-		COMMAND ${TESTS_LCOV_PATH} --remove ${_outputname}.info 'tests/*' '/usr/*' --output-file ${_outputname}.info.cleaned
-		COMMAND ${TESTS_GENHTML_PATH} -o ${_outputname} ${_outputname}.info.cleaned
-		COMMAND ${CMAKE_COMMAND} -E remove ${_outputname}.info ${_outputname}.info.cleaned
-           COMMAND echo "Open ${CMAKE_BINARY_DIR}/CoverageReport/index.html to view the report on the coverage of the code."
-          WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-          )
-MESSAGE(STATUS " GCOV ${COVERAGE_COMMAND}")
-MESSAGE(STATUS "CMAKE_CXX_COMPILER_ID ${CMAKE_CXX_COMPILER_ID}")
-  IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
-        SET(TESTS_GCOV_CXX_FLAGS "-g -fprofile-arcs -ftest-coverage")
-        SET(TESTS_GCOV_LINKER_FLAGS "-g -fprofile-arcs -ftest-coverage -lgcov")
-  ENDIF()
- #
- ELSE()
-        SET(GCOV_CXX_FLAGS "")
-        SET(GCOV_LINKER_FLAGS "")
-	   MESSAGE(STATUS  "Could not find gcov in your path - No Coverage option for Tests")
-ENDIF()
-
-
-
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BUILD_TYPE})
-
-
-ADD_DEFINITIONS( ${SCALFMM_CXX_FLAGS} ${TESTS_GCOV_CXX_FLAGS})
+# Utesting
 
 # Find all code files
-file(
-	GLOB_RECURSE
-	source_tests_files
-	./*.cpp
-)
-
-# Adding the project sources dir as an include dir
-INCLUDE_DIRECTORIES(
-     ${SCALFMM_BINARY_DIR}/Src
-     ${SCALFMM_SOURCE_DIR}/Src
-     ${SCALFMM_SOURCE_DIR}/Contribs
-     ${SCALFMM_INCLUDES}
-)
+set(source_tests_files
+  utestAlgorithmBuilder.cpp
+  utestAlignedMemory.cpp
+  utestBoolArray.cpp
+  utestBuffer.cpp
+  utestChebyshev.cpp
+  utestChebyshevDirectPeriodic.cpp
+  utestChebyshevDirectTsm.cpp
+  utestChebyshevMpi.cpp
+  utestChebyshevThread.cpp
+  utestFBasicParticleContainer.cpp
+  utestFBasicParticle.cpp
+  utestFmmAlgorithmProc.cpp
+  utestInterpolationMultiRhs.cpp
+  utestLagrange.cpp
+  utestLagrangeMpi.cpp
+  utestLagrangeThread.cpp
+  utestLetTree.cpp
+  utestListBlockAllocator.cpp
+  utestList.cpp
+  utestMorton.cpp
+  utestMpiBitonic.cpp
+  utestMPILoader.cpp
+  utestMpiQs.cpp
+  utestMpiTreeBuilder.cpp
+  utestNeighborIndexes.cpp
+  utestOctree.cpp
+  utestP2PExclusion.cpp
+  utestQuicksort.cpp
+  utestRotation.cpp
+  utestRotationDirectSeveralTime.cpp
+  utestRotationDirectTsm.cpp
+  utestRotationThread.cpp
+  utestSphericalBlasAlgorithm.cpp
+  utestSpherical.cpp
+  utestSphericalDirect.cpp
+  utestSphericalWithPrevious.cpp
+  utestStaticMpiTreeBuilder.cpp
+  utestTest.cpp
+  utestVector.cpp
+  Utils/variadic_vector/utest_variadic_vector.cpp
+  )
 
 # Add execs - 1 cpp = 1 exec
-foreach(exec ${source_tests_files})
-	get_filename_component(
-		execname ${exec}
-		NAME_WE
-	)
-
-	set(compile_exec "TRUE")
-
-	foreach(fuse_key ${FUSE_LIST})
-	    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
-	    if(lines_fuse)
-		    if( NOT SCALFMM_USE_${fuse_key} )
-			    MESSAGE( STATUS "This needs ${fuse_key} = ${exec}" )
-			    set(compile_exec "FALSE")
-		    endif()
-	    endif()
-	endforeach()
-
-	# Dependency are OK
-	if( compile_exec )
-		add_executable(
-				${execname}
-				${exec}
-			)
-
-		target_link_libraries(
-			${execname}
-            ${scalfmm_lib}
-            ${SCALFMM_LIBRARIES}
-			${TESTS_GCOV_LINKER_FLAGS}
-		)
-
-        if(lines_mpi)
-            add_test(${execname} mpirun -np 4 ${EXECUTABLE_OUTPUT_PATH}/${execname})
-        else()
-            add_test(${execname} ${CMAKE_CURRENT_BINARY_DIR}/${execname})
-        endif()
+foreach(exec ${source_tests_files}) 
+  set(compile_exec TRUE)
+  get_filename_component( execname ${exec} NAME_WE )
+	
+  foreach(fuse_key ${FUSE_DEP_AVAILABLE})
+    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
+    if(lines_fuse AND NOT ${fuse_key} IN_LIST FUSE_LIST)
+      message( STATUS "This needs ${fuse_key} = ${exec}" )
+      set(compile_exec FALSE)
+    endif()
+  endforeach()
+
+  # Dependency are OK
+  if( compile_exec )
+    add_executable( ${execname} ${exec})
+    list(APPEND SCALFMM_TESTS_TARGETS ${execname})
+    set_target_properties(${execname} PROPERTIES ENABLE_EXPORTS TRUE
+      RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BUILD_TYPE}
+      )
+
+    target_link_libraries( ${execname} PRIVATE ${CMAKE_PROJECT_NAME} )
+    list(APPEND SCALFMM_UTESTS_TARGETS ${execname})
+
+    if(lines_mpi)
+      add_test(NAME ${execname} COMMAND $<IF:${MPIEXEC_EXECUTABLE}, ${MPIEXEC_EXECUTABLE} -np 4 ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${execname}>)
+    else()
+      add_test(NAME ${execname} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${execname})
     endif()
+  endif()
 endforeach(exec)
+
+add_custom_target(scalfmm_utests ALL DEPENDS ${SCALFMM_UTESTS_TARGETS})
+
diff --git a/UTests/utestAlignedMemory.cpp b/UTests/utestAlignedMemory.cpp
index 7732629d68708b655e7e5291e4f612ea9c6fad24..f94982ebe61cb0a83d51f17f49fa129d7359effa 100644
--- a/UTests/utestAlignedMemory.cpp
+++ b/UTests/utestAlignedMemory.cpp
@@ -1,8 +1,8 @@
 // See LICENCE file at project root
 #include "FUTester.hpp"
 
-#include "../Src/Utils/FAlignedMemory.hpp"
-#include "../Src/Utils/FTemplate.hpp"
+#include "Utils/FAlignedMemory.hpp"
+#include "Utils/FTemplate.hpp"
 
 /**
 * This file is a unit test for the alignement class
diff --git a/UTests/utestLetTree.cpp b/UTests/utestLetTree.cpp
index d50b8e4214cdae831accc8908b48e77966fae893..adccdd85b103eb3dc2f46a3bc584094b7f8b20ee 100644
--- a/UTests/utestLetTree.cpp
+++ b/UTests/utestLetTree.cpp
@@ -5,7 +5,7 @@
 // @FUSE_MPI
 // ================
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 // include algo for linear tree
 #include "inria/algorithm/distributed/mpi.hpp"
 #include "inria/linear_tree/balance_tree.hpp"
diff --git a/Utils/CMakeLists.txt b/Utils/CMakeLists.txt
index f673e712db90c7a3814182576bb61000c34586b8..144e839ac449fdb1a127e1dd2dc87ba8c591041d 100644
--- a/Utils/CMakeLists.txt
+++ b/Utils/CMakeLists.txt
@@ -1,63 +1,29 @@
-# check if compiling into source directories
-STRING(COMPARE EQUAL "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" insource)
-if(insource)
-    MESSAGE(FATAL_ERROR "${PROJECT_NAME} requires an out of source build. Goto scalfmm/Build and tapes cmake ../")
-endif(insource)
-
-project(UTILS_SCALFMM CXX)
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BUILD_TYPE})
-ADD_DEFINITIONS( ${SCALFMM_CXX_FLAGS})
 # Find all code files
-file(	
-	GLOB_RECURSE
-	source_tests_files
-	./*.cpp
-	)
-
-
-# Adding the project sources dir as an include dir
-INCLUDE_DIRECTORIES(
-     ${SCALFMM_BINARY_DIR}/Src 
-     ${SCALFMM_SOURCE_DIR}/Src
-     ${SCALFMM_SOURCE_DIR}/Contribs
-     ${SCALFMM_INCLUDES}
-)
-
+set(source_tests_files)
 
 # Add execs - 1 cpp = 1 exec
 foreach(exec ${source_tests_files}) 
-	get_filename_component(
-		execname ${exec}
-		NAME_WE
-	)
-
-	set(compile_exec "TRUE")
+  set(compile_exec TRUE)
+  get_filename_component( execname ${exec} NAME_WE )
 	
-	foreach(fuse_key ${FUSE_LIST})
-	    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
-	    if(lines_fuse)
-		    if( NOT SCALFMM_USE_${fuse_key} )
-			    MESSAGE( STATUS "This needs ${fuse_key} = ${exec}" )
-			    set(compile_exec "FALSE")
-		    endif()
-	    endif()
-	endforeach()
+  foreach(fuse_key ${FUSE_DEP_AVAILABLE})
+    file(STRINGS "${exec}" lines_fuse REGEX "@FUSE_${fuse_key}")
+    if(lines_fuse AND NOT ${fuse_key} IN_LIST FUSE_LIST)
+      message( STATUS "This needs ${fuse_key} = ${exec}" )
+      set(compile_exec FALSE)
+    endif()
+  endforeach()
+
+  # Dependency are OK
+  if( compile_exec )
+    add_executable( ${execname} ${exec})
+    list(APPEND SCALFMM_UTILS_TARGETS ${execname})
+    set_target_properties(${execname} PROPERTIES ENABLE_EXPORTS TRUE
+      RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BUILD_TYPE}
+      )
+    target_link_libraries( ${execname} ${CMAKE_PROJECT_NAME})
+  endif()
+endforeach(exec)
 
-	# Dependency are OK
-	if( compile_exec )
-		add_executable(
-				${execname}
-				${exec}
-				)
-		SET_TARGET_PROPERTIES(${execname} PROPERTIES ENABLE_EXPORTS TRUE)
-		target_link_libraries(
-			${execname}
-			${scalfmm_lib}
-			${SCALFMM_LIBRARIES}
-			)
-	
-                   # Install bin
-                   install( TARGETS ${execname}   DESTINATION bin )
-		endif()
+add_custom_target(scalfmm_utils ALL DEPENDS ${SCALFMM_UTILS_TARGETS})
 
-endforeach(exec)
diff --git a/Src/Adaptive/FAdaptChebKernel.hpp b/include/Adaptive/FAdaptChebKernel.hpp
similarity index 100%
rename from Src/Adaptive/FAdaptChebKernel.hpp
rename to include/Adaptive/FAdaptChebKernel.hpp
diff --git a/Src/Adaptive/FAdaptUnifKernel.hpp b/include/Adaptive/FAdaptUnifKernel.hpp
similarity index 100%
rename from Src/Adaptive/FAdaptUnifKernel.hpp
rename to include/Adaptive/FAdaptUnifKernel.hpp
diff --git a/Src/Adaptive/FAdaptiveSequential.hpp b/include/Adaptive/FAdaptiveSequential.hpp
similarity index 100%
rename from Src/Adaptive/FAdaptiveSequential.hpp
rename to include/Adaptive/FAdaptiveSequential.hpp
diff --git a/Src/Adaptive/FAdaptiveStarPU.hpp b/include/Adaptive/FAdaptiveStarPU.hpp
similarity index 100%
rename from Src/Adaptive/FAdaptiveStarPU.hpp
rename to include/Adaptive/FAdaptiveStarPU.hpp
diff --git a/Src/Adaptive/FAdaptiveTask.hpp b/include/Adaptive/FAdaptiveTask.hpp
similarity index 100%
rename from Src/Adaptive/FAdaptiveTask.hpp
rename to include/Adaptive/FAdaptiveTask.hpp
diff --git a/Src/Adaptive/FBox.hpp b/include/Adaptive/FBox.hpp
similarity index 100%
rename from Src/Adaptive/FBox.hpp
rename to include/Adaptive/FBox.hpp
diff --git a/Src/Adaptive/FDistributedAdaptiveTreeBuilder.hpp b/include/Adaptive/FDistributedAdaptiveTreeBuilder.hpp
similarity index 100%
rename from Src/Adaptive/FDistributedAdaptiveTreeBuilder.hpp
rename to include/Adaptive/FDistributedAdaptiveTreeBuilder.hpp
diff --git a/Src/Adaptive/FInOrderNodeIterator.hpp b/include/Adaptive/FInOrderNodeIterator.hpp
similarity index 100%
rename from Src/Adaptive/FInOrderNodeIterator.hpp
rename to include/Adaptive/FInOrderNodeIterator.hpp
diff --git a/Src/Adaptive/FNode.hpp b/include/Adaptive/FNode.hpp
similarity index 100%
rename from Src/Adaptive/FNode.hpp
rename to include/Adaptive/FNode.hpp
diff --git a/Src/Adaptive/FNodeIterator.hpp b/include/Adaptive/FNodeIterator.hpp
similarity index 100%
rename from Src/Adaptive/FNodeIterator.hpp
rename to include/Adaptive/FNodeIterator.hpp
diff --git a/Src/Adaptive/FNodeIteratorBox.hpp b/include/Adaptive/FNodeIteratorBox.hpp
similarity index 100%
rename from Src/Adaptive/FNodeIteratorBox.hpp
rename to include/Adaptive/FNodeIteratorBox.hpp
diff --git a/Src/Adaptive/FPrePostOrderNodeIterator.hpp b/include/Adaptive/FPrePostOrderNodeIterator.hpp
similarity index 100%
rename from Src/Adaptive/FPrePostOrderNodeIterator.hpp
rename to include/Adaptive/FPrePostOrderNodeIterator.hpp
diff --git a/Src/Adaptive/FTimer.hpp b/include/Adaptive/FTimer.hpp
similarity index 100%
rename from Src/Adaptive/FTimer.hpp
rename to include/Adaptive/FTimer.hpp
diff --git a/Src/Adaptive/FTree.hpp b/include/Adaptive/FTree.hpp
similarity index 100%
rename from Src/Adaptive/FTree.hpp
rename to include/Adaptive/FTree.hpp
diff --git a/Src/Adaptive/FUnifFlopsKernel.hpp b/include/Adaptive/FUnifFlopsKernel.hpp
similarity index 100%
rename from Src/Adaptive/FUnifFlopsKernel.hpp
rename to include/Adaptive/FUnifFlopsKernel.hpp
diff --git a/Src/Adaptive/FVariadicParticleContainer.hpp b/include/Adaptive/FVariadicParticleContainer.hpp
similarity index 100%
rename from Src/Adaptive/FVariadicParticleContainer.hpp
rename to include/Adaptive/FVariadicParticleContainer.hpp
diff --git a/Src/Adaptive/FZCurve.hpp b/include/Adaptive/FZCurve.hpp
similarity index 100%
rename from Src/Adaptive/FZCurve.hpp
rename to include/Adaptive/FZCurve.hpp
diff --git a/Src/Adaptive/UninitNodeMemoryManager.hpp b/include/Adaptive/UninitNodeMemoryManager.hpp
similarity index 100%
rename from Src/Adaptive/UninitNodeMemoryManager.hpp
rename to include/Adaptive/UninitNodeMemoryManager.hpp
diff --git a/Src/Adaptive/UninitialisedMemoryProvider.hpp b/include/Adaptive/UninitialisedMemoryProvider.hpp
similarity index 100%
rename from Src/Adaptive/UninitialisedMemoryProvider.hpp
rename to include/Adaptive/UninitialisedMemoryProvider.hpp
diff --git a/Src/Adaptive/kernel_utilities.hpp b/include/Adaptive/kernel_utilities.hpp
similarity index 100%
rename from Src/Adaptive/kernel_utilities.hpp
rename to include/Adaptive/kernel_utilities.hpp
diff --git a/Src/Adaptive/starpu_node_data_handles.hpp b/include/Adaptive/starpu_node_data_handles.hpp
similarity index 100%
rename from Src/Adaptive/starpu_node_data_handles.hpp
rename to include/Adaptive/starpu_node_data_handles.hpp
diff --git a/Src/Arranger/FAbstractMover.hpp b/include/Arranger/FAbstractMover.hpp
similarity index 100%
rename from Src/Arranger/FAbstractMover.hpp
rename to include/Arranger/FAbstractMover.hpp
diff --git a/Src/Arranger/FArrangerPeriodic.hpp b/include/Arranger/FArrangerPeriodic.hpp
similarity index 100%
rename from Src/Arranger/FArrangerPeriodic.hpp
rename to include/Arranger/FArrangerPeriodic.hpp
diff --git a/Src/Arranger/FBasicParticleContainerIndexedMover.hpp b/include/Arranger/FBasicParticleContainerIndexedMover.hpp
similarity index 100%
rename from Src/Arranger/FBasicParticleContainerIndexedMover.hpp
rename to include/Arranger/FBasicParticleContainerIndexedMover.hpp
diff --git a/Src/Arranger/FBasicParticleContainerMover.hpp b/include/Arranger/FBasicParticleContainerMover.hpp
similarity index 100%
rename from Src/Arranger/FBasicParticleContainerMover.hpp
rename to include/Arranger/FBasicParticleContainerMover.hpp
diff --git a/Src/Arranger/FOctreeArranger.hpp b/include/Arranger/FOctreeArranger.hpp
similarity index 100%
rename from Src/Arranger/FOctreeArranger.hpp
rename to include/Arranger/FOctreeArranger.hpp
diff --git a/Src/Arranger/FOctreeArrangerProc.hpp b/include/Arranger/FOctreeArrangerProc.hpp
similarity index 100%
rename from Src/Arranger/FOctreeArrangerProc.hpp
rename to include/Arranger/FOctreeArrangerProc.hpp
diff --git a/Src/Arranger/FParticleTypedIndexedMover.hpp b/include/Arranger/FParticleTypedIndexedMover.hpp
similarity index 100%
rename from Src/Arranger/FParticleTypedIndexedMover.hpp
rename to include/Arranger/FParticleTypedIndexedMover.hpp
diff --git a/Src/CMakeLists.txt b/include/CMakeLists.txt
similarity index 100%
rename from Src/CMakeLists.txt
rename to include/CMakeLists.txt
diff --git a/Src/Components/FAbstractCell.hpp b/include/Components/FAbstractCell.hpp
similarity index 100%
rename from Src/Components/FAbstractCell.hpp
rename to include/Components/FAbstractCell.hpp
diff --git a/Src/Components/FAbstractKernels.hpp b/include/Components/FAbstractKernels.hpp
similarity index 100%
rename from Src/Components/FAbstractKernels.hpp
rename to include/Components/FAbstractKernels.hpp
diff --git a/Src/Components/FAbstractLeaf.hpp b/include/Components/FAbstractLeaf.hpp
similarity index 100%
rename from Src/Components/FAbstractLeaf.hpp
rename to include/Components/FAbstractLeaf.hpp
diff --git a/Src/Components/FAbstractParticleContainer.hpp b/include/Components/FAbstractParticleContainer.hpp
similarity index 100%
rename from Src/Components/FAbstractParticleContainer.hpp
rename to include/Components/FAbstractParticleContainer.hpp
diff --git a/Src/Components/FAbstractSendable.hpp b/include/Components/FAbstractSendable.hpp
similarity index 100%
rename from Src/Components/FAbstractSendable.hpp
rename to include/Components/FAbstractSendable.hpp
diff --git a/Src/Components/FAbstractSerializable.hpp b/include/Components/FAbstractSerializable.hpp
similarity index 100%
rename from Src/Components/FAbstractSerializable.hpp
rename to include/Components/FAbstractSerializable.hpp
diff --git a/Src/Components/FBasicCell.hpp b/include/Components/FBasicCell.hpp
similarity index 100%
rename from Src/Components/FBasicCell.hpp
rename to include/Components/FBasicCell.hpp
diff --git a/Src/Components/FBasicKernels.hpp b/include/Components/FBasicKernels.hpp
similarity index 100%
rename from Src/Components/FBasicKernels.hpp
rename to include/Components/FBasicKernels.hpp
diff --git a/Src/Components/FBasicParticle.hpp b/include/Components/FBasicParticle.hpp
similarity index 100%
rename from Src/Components/FBasicParticle.hpp
rename to include/Components/FBasicParticle.hpp
diff --git a/Src/Components/FBasicParticleContainer.hpp b/include/Components/FBasicParticleContainer.hpp
similarity index 100%
rename from Src/Components/FBasicParticleContainer.hpp
rename to include/Components/FBasicParticleContainer.hpp
diff --git a/Src/Components/FFmaParticleContainer.hpp b/include/Components/FFmaParticleContainer.hpp
similarity index 100%
rename from Src/Components/FFmaParticleContainer.hpp
rename to include/Components/FFmaParticleContainer.hpp
diff --git a/Src/Components/FParticleType.hpp b/include/Components/FParticleType.hpp
similarity index 100%
rename from Src/Components/FParticleType.hpp
rename to include/Components/FParticleType.hpp
diff --git a/Src/Components/FSimpleIndexedLeaf.hpp b/include/Components/FSimpleIndexedLeaf.hpp
similarity index 100%
rename from Src/Components/FSimpleIndexedLeaf.hpp
rename to include/Components/FSimpleIndexedLeaf.hpp
diff --git a/Src/Components/FSimpleLeaf.hpp b/include/Components/FSimpleLeaf.hpp
similarity index 100%
rename from Src/Components/FSimpleLeaf.hpp
rename to include/Components/FSimpleLeaf.hpp
diff --git a/Src/Components/FSymbolicData.hpp b/include/Components/FSymbolicData.hpp
similarity index 100%
rename from Src/Components/FSymbolicData.hpp
rename to include/Components/FSymbolicData.hpp
diff --git a/Src/Components/FTestCell.hpp b/include/Components/FTestCell.hpp
similarity index 100%
rename from Src/Components/FTestCell.hpp
rename to include/Components/FTestCell.hpp
diff --git a/Src/Components/FTestKernels.hpp b/include/Components/FTestKernels.hpp
similarity index 100%
rename from Src/Components/FTestKernels.hpp
rename to include/Components/FTestKernels.hpp
diff --git a/Src/Components/FTestParticleContainer.hpp b/include/Components/FTestParticleContainer.hpp
similarity index 100%
rename from Src/Components/FTestParticleContainer.hpp
rename to include/Components/FTestParticleContainer.hpp
diff --git a/Src/Components/FTypedLeaf.hpp b/include/Components/FTypedLeaf.hpp
similarity index 100%
rename from Src/Components/FTypedLeaf.hpp
rename to include/Components/FTypedLeaf.hpp
diff --git a/Src/Containers/FAbstractBuffer.hpp b/include/Containers/FAbstractBuffer.hpp
similarity index 100%
rename from Src/Containers/FAbstractBuffer.hpp
rename to include/Containers/FAbstractBuffer.hpp
diff --git a/Src/Containers/FBlockAllocator.hpp b/include/Containers/FBlockAllocator.hpp
similarity index 100%
rename from Src/Containers/FBlockAllocator.hpp
rename to include/Containers/FBlockAllocator.hpp
diff --git a/Src/Containers/FBoolArray.hpp b/include/Containers/FBoolArray.hpp
similarity index 100%
rename from Src/Containers/FBoolArray.hpp
rename to include/Containers/FBoolArray.hpp
diff --git a/Src/Containers/FBufferReader.hpp b/include/Containers/FBufferReader.hpp
similarity index 100%
rename from Src/Containers/FBufferReader.hpp
rename to include/Containers/FBufferReader.hpp
diff --git a/Src/Containers/FBufferWriter.hpp b/include/Containers/FBufferWriter.hpp
similarity index 100%
rename from Src/Containers/FBufferWriter.hpp
rename to include/Containers/FBufferWriter.hpp
diff --git a/Src/Containers/FCoordinateComputer.hpp b/include/Containers/FCoordinateComputer.hpp
similarity index 100%
rename from Src/Containers/FCoordinateComputer.hpp
rename to include/Containers/FCoordinateComputer.hpp
diff --git a/Src/Containers/FLightOctree.hpp b/include/Containers/FLightOctree.hpp
similarity index 100%
rename from Src/Containers/FLightOctree.hpp
rename to include/Containers/FLightOctree.hpp
diff --git a/Src/Containers/FList.hpp b/include/Containers/FList.hpp
similarity index 100%
rename from Src/Containers/FList.hpp
rename to include/Containers/FList.hpp
diff --git a/Src/Containers/FNeighborIndexes.hpp b/include/Containers/FNeighborIndexes.hpp
similarity index 100%
rename from Src/Containers/FNeighborIndexes.hpp
rename to include/Containers/FNeighborIndexes.hpp
diff --git a/Src/Containers/FOctree.hpp b/include/Containers/FOctree.hpp
similarity index 100%
rename from Src/Containers/FOctree.hpp
rename to include/Containers/FOctree.hpp
diff --git a/Src/Containers/FParForEachOctree.hpp b/include/Containers/FParForEachOctree.hpp
similarity index 100%
rename from Src/Containers/FParForEachOctree.hpp
rename to include/Containers/FParForEachOctree.hpp
diff --git a/Src/Containers/FSubOctree.hpp b/include/Containers/FSubOctree.hpp
similarity index 100%
rename from Src/Containers/FSubOctree.hpp
rename to include/Containers/FSubOctree.hpp
diff --git a/Src/Containers/FTreeCoordinate.hpp b/include/Containers/FTreeCoordinate.hpp
similarity index 100%
rename from Src/Containers/FTreeCoordinate.hpp
rename to include/Containers/FTreeCoordinate.hpp
diff --git a/Src/Containers/FVector.hpp b/include/Containers/FVector.hpp
similarity index 100%
rename from Src/Containers/FVector.hpp
rename to include/Containers/FVector.hpp
diff --git a/Src/Core/FAlgorithmBuilder.hpp b/include/Core/FAlgorithmBuilder.hpp
similarity index 100%
rename from Src/Core/FAlgorithmBuilder.hpp
rename to include/Core/FAlgorithmBuilder.hpp
diff --git a/Src/Core/FCoreCommon.hpp b/include/Core/FCoreCommon.hpp
similarity index 100%
rename from Src/Core/FCoreCommon.hpp
rename to include/Core/FCoreCommon.hpp
diff --git a/Src/Core/FFmmAlgorithm.hpp b/include/Core/FFmmAlgorithm.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithm.hpp
rename to include/Core/FFmmAlgorithm.hpp
diff --git a/Src/Core/FFmmAlgorithmNewTask.hpp b/include/Core/FFmmAlgorithmNewTask.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmNewTask.hpp
rename to include/Core/FFmmAlgorithmNewTask.hpp
diff --git a/Src/Core/FFmmAlgorithmOmp4.hpp b/include/Core/FFmmAlgorithmOmp4.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmOmp4.hpp
rename to include/Core/FFmmAlgorithmOmp4.hpp
diff --git a/Src/Core/FFmmAlgorithmPeriodic.hpp b/include/Core/FFmmAlgorithmPeriodic.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmPeriodic.hpp
rename to include/Core/FFmmAlgorithmPeriodic.hpp
diff --git a/Src/Core/FFmmAlgorithmSectionTask.hpp b/include/Core/FFmmAlgorithmSectionTask.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmSectionTask.hpp
rename to include/Core/FFmmAlgorithmSectionTask.hpp
diff --git a/Src/Core/FFmmAlgorithmTask.hpp b/include/Core/FFmmAlgorithmTask.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmTask.hpp
rename to include/Core/FFmmAlgorithmTask.hpp
diff --git a/include/Core/FFmmAlgorithmTestTask.hpp b/include/Core/FFmmAlgorithmTestTask.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..098df54ad359721313f79386c67b32f11028608b
--- /dev/null
+++ b/include/Core/FFmmAlgorithmTestTask.hpp
@@ -0,0 +1,578 @@
+// See LICENCE file at project root
+#ifndef FFMMALGORITHMTESTTASK_HPP
+#define FFMMALGORITHMTESTTASK_HPP
+
+#include <algorithm>
+#include <array>
+
+#include <omp.h>
+
+#include "Utils/FAlgorithmTimers.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FEnv.hpp"
+
+#include "Utils/FGlobal.hpp"
+#include "Utils/FLog.hpp"
+
+#include "Utils/FTic.hpp"
+
+#include "Containers/FOctree.hpp"
+#include "Containers/FVector.hpp"
+
+#include "Components/FBasicCell.hpp"
+
+#include "FCoreCommon.hpp"
+#include "FP2PExclusion.hpp"
+
+#include <omp.h>
+
+/**
+ * @authorOlivier Coulaud 
+ * @class FFmmAlgorithmNewTask
+ * @brief
+ *
+ * Please read the license
+ *
+ * This class is a basic FMM algorithm
+ * It just iterates on a tree and call the kernels with good arguments.
+ *
+ * Of course this class does not deallocate pointer given in arguements.
+ */
+template<class OctreeClass, class CellClass, class ContainerClass, class KernelClass, class LeafClass, class P2PExclusionClass = FP2PMiddleExclusion>
+class FFmmAlgorithmTestTask : public FAbstractAlgorithm, public FAlgorithmTimers {
+
+    using multipole_t       = typename CellClass::multipole_t;
+    using local_expansion_t = typename CellClass::local_expansion_t;
+    using symbolic_data_t   = CellClass;
+
+    OctreeClass* const tree;       //< The octree to work on
+    KernelClass** kernels;    //< The kernels
+
+    int MaxThreads;
+
+    const int OctreeHeight;
+
+    const int leafLevelSeparationCriteria;
+public:
+    /** The constructor need the octree and the kernels used for computation
+     * @param inTree the octree to work on
+     * @param inKernels the kernels to call
+     * An assert is launched if one of the arguments is null
+     */
+    FFmmAlgorithmTestTask(OctreeClass* const inTree, const KernelClass* const inKernels, const int inLeafLevelSeperationCriteria = 1)
+        : tree(inTree) , kernels(nullptr),
+          OctreeHeight(tree->getHeight()), leafLevelSeparationCriteria(inLeafLevelSeperationCriteria)
+    {
+
+        FAssertLF(tree, "tree cannot be null");
+        FAssertLF(inKernels, "kernels cannot be null");
+        FAssertLF(leafLevelSeparationCriteria < 3, "Separation criteria should be < 3");
+
+        MaxThreads = 1;
+        #pragma omp parallel
+        #pragma omp master
+            MaxThreads = omp_get_num_threads();
+
+        this->kernels = new KernelClass*[MaxThreads];
+        #pragma omp parallel num_threads(MaxThreads)
+        {
+            #pragma omp critical (InitFFmmAlgorithmTestTask)
+            {
+                this->kernels[omp_get_thread_num()] = new KernelClass(*inKernels);
+            }
+        }
+
+        FAbstractAlgorithm::setNbLevelsInTree(tree->getHeight());
+
+        FLOG(FLog::Controller << "FFmmAlgorithmTestTask (Max Thread " << omp_get_num_threads() << ")\n");
+    }
+
+    /** Default destructor */
+    virtual ~FFmmAlgorithmTestTask(){
+        for(int idxThread = 0 ; idxThread < MaxThreads ; ++idxThread){
+            delete this->kernels[idxThread];
+        }
+        delete [] this->kernels;
+    }
+
+    std::string name() const override {
+        return "Test Task algorithm";
+    }
+
+    std::string description() const override {
+        int threads = 1;
+        #pragma omp parallel shared(threads)
+        {
+            #pragma omp single nowait
+            {
+                threads = omp_get_num_threads();
+            }
+        }
+        return std::string("threads: ") + std::to_string(threads);
+    }
+
+protected:
+    /**
+     * To execute the fmm algorithm
+     * Call this function to run the complete algorithm
+     */
+    void executeCore(const unsigned operationsToProceed) override {
+
+      #pragma omp parallel num_threads(MaxThreads) 
+      {
+        #pragma omp single nowait
+        {
+          if(operationsToProceed & FFmmP2M) bottomPass();
+
+          if(operationsToProceed & FFmmM2M) upwardPass();
+
+          if(operationsToProceed & FFmmM2L) transferPass();
+
+          if(operationsToProceed & FFmmL2L) downardPass();
+        }
+
+        #pragma omp single nowait
+        { 
+          if( operationsToProceed & FFmmP2P ) directPass();
+        }
+        #pragma omp barrier
+
+        #pragma omp single nowait
+        {
+          if( operationsToProceed & FFmmL2P ) L2PPass() ; 
+        }
+      }
+    }
+    /////////////////////////////////////////////////////////////////////////////
+    // P2M
+    /////////////////////////////////////////////////////////////////////////////
+
+    /** P2M */
+    void bottomPass(){
+        FLOG( FLog::Controller.write("\tStart Bottom Pass\n").write(FLog::Flush) );
+        FLOG(FTic counterTime);
+
+	//        #pragma omp parallel num_threads(MaxThreads)
+        {
+      //            #pragma omp single nowait
+            {
+                typename OctreeClass::Iterator octreeIterator(tree);
+
+                // Iterate on leafs
+                octreeIterator.gotoBottomLeft();
+                do{
+                    // We need the current cell that represent the leaf
+                    // and the list of particles
+                    #pragma omp task firstprivate(octreeIterator) untied
+                    {
+                        kernels[omp_get_thread_num()]->P2M(
+                            &(octreeIterator.getCurrentCell()->getMultipoleData()),
+                            octreeIterator.getCurrentCell(),
+                            octreeIterator.getCurrentListSrc());
+                    }
+                } while(octreeIterator.moveRight());
+
+                #pragma omp taskwait
+            }
+        }
+
+        FLOG( FLog::Controller << "\tFinished (@Bottom Pass (P2M) = "  << counterTime.tacAndElapsed() << " s)\n" );
+    }
+
+    /////////////////////////////////////////////////////////////////////////////
+    // Upward
+    /////////////////////////////////////////////////////////////////////////////
+
+    /** M2M */
+    void upwardPass(){
+        FLOG( FLog::Controller.write("\tStart Upward Pass\n").write(FLog::Flush); );
+        FLOG(FTic counterTime);
+
+	//        #pragma omp parallel num_threads(MaxThreads)
+        {
+	  //            #pragma omp single nowait
+            {
+                // Start from leal level - 1
+                typename OctreeClass::Iterator octreeIterator(tree);
+                octreeIterator.gotoBottomLeft();
+                octreeIterator.moveUp();
+
+                for(int idxLevel = OctreeHeight - 2 ; idxLevel > FAbstractAlgorithm::lowerWorkingLevel-1 ; --idxLevel){
+                    octreeIterator.moveUp();
+                }
+
+                typename OctreeClass::Iterator avoidGotoLeftIterator(octreeIterator);
+
+                // for each levels
+                for(int idxLevel = FMath::Min(OctreeHeight - 2, FAbstractAlgorithm::lowerWorkingLevel - 1) ; idxLevel >= FAbstractAlgorithm::upperWorkingLevel ; --idxLevel ){
+                    FLOG(FTic counterTimeLevel);
+                    // for each cells
+                    do{
+                        // We need the current cell and its children.
+                        // children is an array (of 8 child) that may be null
+                        #pragma omp task firstprivate(octreeIterator,idxLevel) untied
+                        {
+                            multipole_t* const parent_multipole
+                                = &(octreeIterator.getCurrentCell()->getMultipoleData());
+                            const symbolic_data_t* const parent_symbolic
+                                = octreeIterator.getCurrentCell();
+
+                            CellClass** children = octreeIterator.getCurrentChildren();
+                            std::array<const multipole_t*, 8> child_multipoles;
+                            std::transform(children, children+8, child_multipoles.begin(),
+                                           [](CellClass* c) {
+                                               return (c == nullptr ? nullptr
+                                                       : &(c->getMultipoleData()));
+                                           });
+                            std::array<const symbolic_data_t*, 8> child_symbolics;
+                            std::transform(children, children+8, child_symbolics.begin(),
+                                           [](CellClass* c) {return c;});
+                            kernels[omp_get_thread_num()]->M2M(parent_multipole,
+                                                               parent_symbolic,
+                                                               child_multipoles.data(),
+                                                               child_symbolics.data());
+                        }
+                    } while(octreeIterator.moveRight());
+
+                    avoidGotoLeftIterator.moveUp();
+                    octreeIterator = avoidGotoLeftIterator;// equal octreeIterator.moveUp(); octreeIterator.gotoLeft();
+
+                    #pragma omp taskwait
+                    FLOG( FLog::Controller << "\t\t>> Level " << idxLevel << " = "  << counterTimeLevel.tacAndElapsed() << " s\n" );
+                }
+            }
+        }
+
+        FLOG( FLog::Controller << "\tFinished (@Upward Pass (M2M) = "  << counterTime.tacAndElapsed() << " s)\n" );
+    }
+
+    /////////////////////////////////////////////////////////////////////////////
+    // Transfer
+    /////////////////////////////////////////////////////////////////////////////
+
+    /** M2L  */
+    void transferPass(){
+        #ifdef SCALFMM_USE_EZTRACE
+
+        eztrace_start();
+        #endif
+        if(KernelClass::NeedFinishedM2LEvent()){
+            this->transferPassWithFinalize() ;
+        }
+        else{
+            this->transferPassWithoutFinalize() ;
+        }
+        #ifdef SCALFMM_USE_EZTRACE
+        eztrace_stop();
+        #endif
+    }
+
+    void transferPassWithoutFinalize(){
+        FLOG( FLog::Controller.write("\tStart Downward Pass (M2L)\n").write(FLog::Flush); );
+        FLOG(FTic counterTime);
+
+	//        #pragma omp parallel num_threads(MaxThreads)
+        {
+	  //            #pragma omp single nowait
+            {
+                typename OctreeClass::Iterator octreeIterator(tree);
+                // Goto the right level
+                octreeIterator.moveDown();
+                for(int idxLevel = 2 ; idxLevel < FAbstractAlgorithm::upperWorkingLevel ; ++idxLevel){
+                    octreeIterator.moveDown();
+                }
+                ////////////////////////////////////////////////////////////////
+                typename OctreeClass::Iterator avoidGotoLeftIterator(octreeIterator);
+                //
+                // for each levels
+                for(int idxLevel = FAbstractAlgorithm::upperWorkingLevel ; idxLevel < FAbstractAlgorithm::lowerWorkingLevel ; ++idxLevel ){
+                    FLOG(FTic counterTimeLevel);
+                    const int separationCriteria = (idxLevel != FAbstractAlgorithm::lowerWorkingLevel-1 ? 1 : leafLevelSeparationCriteria);
+                    // for each cell we apply the M2L with all cells in the implicit interaction list
+                    do{
+                        #pragma omp task firstprivate(octreeIterator,idxLevel) untied
+                        {
+                            const CellClass* neighbors[342];
+                            int neighborPositions[342];
+                            const int counter = tree->getInteractionNeighbors(
+                                neighbors, neighborPositions,
+                                octreeIterator.getCurrentGlobalCoordinate(),
+                                idxLevel, separationCriteria);
+
+                            if(counter) {
+                                local_expansion_t* const target_local_exp
+                                    = &(octreeIterator.getCurrentCell()->getLocalExpansionData());
+                                const symbolic_data_t* const target_symbolic
+                                    = octreeIterator.getCurrentCell();
+                                std::array<const multipole_t*, 342> neighbor_multipoles;
+                                std::transform(neighbors, neighbors+counter, neighbor_multipoles.begin(),
+                                               [](const CellClass* c) {
+                                                   return (c == nullptr ? nullptr
+                                                           : &(c->getMultipoleData()));
+                                               });
+                                std::array<const symbolic_data_t*, 342> neighbor_symbolics;
+                                std::transform(neighbors, neighbors+counter, neighbor_symbolics.begin(),
+                                               [](const CellClass* c) {return c;});
+
+                                kernels[omp_get_thread_num()]->M2L(
+                                    target_local_exp,
+                                    target_symbolic,
+                                    neighbor_multipoles.data(),
+                                    neighbor_symbolics.data(),
+                                    neighborPositions,
+                                    counter);
+                            }
+                        }
+
+                    } while(octreeIterator.moveRight());
+                    ////////////////////////////////////////////////////////////////
+                    // move up  and goto left
+                    avoidGotoLeftIterator.moveDown();
+                    octreeIterator = avoidGotoLeftIterator;
+
+                    FLOG( FLog::Controller << "\t\t>> Level " << idxLevel << " = "  << counterTimeLevel.tacAndElapsed() << " s\n" );
+                }
+            }
+        }  // end parallel region
+        //
+        FLOG( FLog::Controller << "\tFinished (@Downward Pass (M2L) = "  << counterTime.tacAndElapsed() << " s)\n" );
+
+    }
+    void transferPassWithFinalize(){
+
+        FLOG( FLog::Controller.write("\tStart Downward Pass (M2L)\n").write(FLog::Flush); );
+        FLOG(FTic counterTime);
+	//        #pragma omp parallel num_threads(MaxThreads)
+        {
+          //  #pragma omp single nowait
+            {
+
+                typename OctreeClass::Iterator octreeIterator(tree);
+                octreeIterator.moveDown();
+
+                for(int idxLevel = 2 ; idxLevel < FAbstractAlgorithm::upperWorkingLevel ; ++idxLevel){
+                    octreeIterator.moveDown();
+                }
+
+                typename OctreeClass::Iterator avoidGotoLeftIterator(octreeIterator);
+                // FIXME: hack around a clang bug
+                // it apparently can't manage a firstprivate const member
+                // such as 'tree', but can manage a local copy...
+                // getting the height first, or making 'tree' shared both
+                // workaround it.
+                OctreeClass * const treeAlias = tree;
+
+                // for each levels
+                for(int idxLevel = FAbstractAlgorithm::upperWorkingLevel ; idxLevel < FAbstractAlgorithm::lowerWorkingLevel ; ++idxLevel ){
+                    FLOG(FTic counterTimeLevel);
+                    const int separationCriteria = (idxLevel != FAbstractAlgorithm::lowerWorkingLevel-1 ? 1 : leafLevelSeparationCriteria);
+                    // for each cells
+                    do{
+                        #pragma omp task default(none) firstprivate(octreeIterator,separationCriteria,idxLevel,treeAlias,kernels) untied
+                        {
+                            const CellClass* neighbors[342];
+                            int neighborPositions[342];
+                            const int counter = treeAlias->getInteractionNeighbors(
+                                neighbors, neighborPositions,
+                                octreeIterator.getCurrentGlobalCoordinate(),
+                                idxLevel, separationCriteria);
+
+
+                            if(counter) {
+
+                                local_expansion_t* const target_local_exp
+                                    = &(octreeIterator.getCurrentCell()->getLocalExpansionData());
+                                const symbolic_data_t* const target_symbolic
+                                    = octreeIterator.getCurrentCell();
+                                std::array<const multipole_t*, 342> neighbor_multipoles;
+                                std::transform(neighbors, neighbors+counter, neighbor_multipoles.begin(),
+                                                                             FBasicCell::getMultipoleDataFromCell<const CellClass, const multipole_t>);
+
+                                std::array<const symbolic_data_t*, 342> neighbor_symbolics;
+                                std::transform(neighbors, neighbors+counter, neighbor_symbolics.begin(),
+                                                                             FBasicCell::identity<const CellClass>);
+
+                                kernels[omp_get_thread_num()]->M2L(
+                                    target_local_exp,
+                                    target_symbolic,
+                                    neighbor_multipoles.data(),
+                                    neighbor_symbolics.data(),
+                                    neighborPositions,
+                                    counter);
+                            }
+                        }
+
+                    } while(octreeIterator.moveRight());
+
+                    avoidGotoLeftIterator.moveDown();
+                    octreeIterator = avoidGotoLeftIterator;
+
+                    #pragma omp taskwait
+
+                    for( int idxThread = 0 ; idxThread < omp_get_num_threads() ; ++idxThread){
+                        #pragma omp task
+                        {
+                            kernels[idxThread]->finishedLevelM2L(idxLevel);
+                        }
+                    }
+                    #pragma omp taskwait
+                    FLOG( FLog::Controller << "\t\t>> Level " << idxLevel << " = "  << counterTimeLevel.tacAndElapsed() << " s\n" );
+                }
+            } // end single region
+        } // end // region
+        FLOG( FLog::Controller << "\tFinished (@Downward Pass (M2L) = "  << counterTime.tacAndElapsed() << " s)\n" );
+    }
+
+    /////////////////////////////////////////////////////////////////////////////
+    // Downward
+    /////////////////////////////////////////////////////////////////////////////
+
+    void downardPass(){ // second L2L
+        FLOG( FLog::Controller.write("\tStart Downward Pass (L2L)\n").write(FLog::Flush); );
+        FLOG(FTic counterTime);
+
+	//        #pragma omp parallel num_threads(MaxThreads)
+        {
+	  //            #pragma omp single nowait
+            {
+                typename OctreeClass::Iterator octreeIterator(tree);
+                octreeIterator.moveDown();
+
+                for(int idxLevel = 2 ; idxLevel < FAbstractAlgorithm::upperWorkingLevel ; ++idxLevel){
+                    octreeIterator.moveDown();
+                }
+
+                typename OctreeClass::Iterator avoidGotoLeftIterator(octreeIterator);
+
+                const int heightMinusOne = FAbstractAlgorithm::lowerWorkingLevel - 1;
+                // for each levels exepted leaf level
+                for(int idxLevel = FAbstractAlgorithm::upperWorkingLevel ; idxLevel < heightMinusOne ; ++idxLevel ){
+                    FLOG(FTic counterTimeLevel);
+                    // for each cells
+                    do{
+                        #pragma omp task firstprivate(octreeIterator,idxLevel) untied
+                        {
+                            local_expansion_t* const parent_local_exp
+                                = &(octreeIterator.getCurrentCell()->getLocalExpansionData());
+                            const symbolic_data_t* const parent_symbolic
+                                = octreeIterator.getCurrentCell();
+                            CellClass** children = octreeIterator.getCurrentChildren();
+                            std::array<local_expansion_t*, 8> child_local_expansions;
+                            std::transform(children, children+8, child_local_expansions.begin(),
+                                           [](CellClass* c) {return (c == nullptr ? nullptr
+                                                                     : &(c->getLocalExpansionData()));
+                                           });
+                            std::array<symbolic_data_t*, 8> child_symbolics;
+                            std::transform(children, children+8, child_symbolics.begin(),
+                                           [](CellClass* c) {return c;});
+                            kernels[omp_get_thread_num()]->L2L(
+                                parent_local_exp,
+                                parent_symbolic,
+                                child_local_expansions.data(),
+                                child_symbolics.data()
+                                );
+                        }
+
+                    } while(octreeIterator.moveRight());
+
+                    avoidGotoLeftIterator.moveDown();
+                    octreeIterator = avoidGotoLeftIterator;
+
+                    #pragma omp taskwait
+                    FLOG( FLog::Controller << "\t\t>> Level " << idxLevel << " = "  << counterTimeLevel.tacAndElapsed() << " s\n" );
+                }
+            }
+        }
+
+        FLOG( FLog::Controller << "\tFinished (@Downward Pass (L2L) = "  << counterTime.tacAndElapsed() << " s)\n" );
+    }
+
+
+    /////////////////////////////////////////////////////////////////////////////
+    // Direct
+    /////////////////////////////////////////////////////////////////////////////
+
+    /** P2P */
+    void directPass(){
+        FLOG( FLog::Controller.write("\tStart Direct Pass\n").write(FLog::Flush); );
+        FLOG(FTic counterTime);
+        FLOG(FTic computationCounter);
+
+        const int heightMinusOne = OctreeHeight - 1;
+
+	//        #pragma omp parallel num_threads(MaxThreads)
+        {
+
+          //  #pragma omp single nowait
+            {
+
+                const int SizeShape = P2PExclusionClass::SizeShape;
+                FVector<typename OctreeClass::Iterator> shapes[SizeShape];
+
+                typename OctreeClass::Iterator octreeIterator(tree);
+                octreeIterator.gotoBottomLeft();
+
+                // for each leafs
+                do{
+                    const FTreeCoordinate& coord = octreeIterator.getCurrentGlobalCoordinate();
+                    const int shapePosition = P2PExclusionClass::GetShapeIdx(coord);
+
+                    shapes[shapePosition].push(octreeIterator);
+
+                } while(octreeIterator.moveRight());
+
+                FLOG( computationCounter.tic() );
+
+                for( int idxShape = 0 ; idxShape < SizeShape ; ++idxShape){
+		  const FSize nbLeaf = (shapes[idxShape].getSize());
+		  for(FSize iterLeaf = 0 ; iterLeaf < nbLeaf ; ++iterLeaf ){
+		    typename OctreeClass::Iterator toWork = shapes[idxShape][iterLeaf];
+#pragma omp task firstprivate(toWork) untied
+		    {
+		      // There is a maximum of 26 neighbors
+		      ContainerClass* neighbors[26];
+		      int neighborPositions[26];
+		      const int counter = tree->getLeafsNeighbors(neighbors, neighborPositions, toWork.getCurrentGlobalCoordinate(),heightMinusOne);
+		      kernels[omp_get_thread_num()]->P2P(toWork.getCurrentGlobalCoordinate(), toWork.getCurrentListTargets(),
+							 toWork.getCurrentListSrc(), neighbors, neighborPositions, counter);
+		    }
+		  }
+
+#pragma omp taskwait
+                }
+		
+                FLOG( computationCounter.tac() );
+            }
+        }
+
+
+        FLOG( FLog::Controller << "\tFinished (@Direct Pass (L2P + P2P) = "  << counterTime.tacAndElapsed() << " s)\n" );
+        FLOG( FLog::Controller << "\t\t Computation L2P + P2P : " << computationCounter.cumulated() << " s\n" );
+    }
+    
+    void L2PPass(){
+        FLOG( FLog::Controller.write("\tStart L2P Pass\n").write(FLog::Flush); );
+        FLOG(FTic counterTime);
+
+        typename OctreeClass::Iterator octreeIterator(tree);
+        octreeIterator.gotoBottomLeft();
+
+        // for each leafs
+        do{
+            #pragma omp task firstprivate(octreeIterator) untied
+            {
+                kernels[omp_get_thread_num()]->L2P(
+                    &(octreeIterator.getCurrentCell()->getLocalExpansionData()),
+                    octreeIterator.getCurrentCell(),
+                    octreeIterator.getCurrentListTargets());
+            }
+        } while(octreeIterator.moveRight());
+
+        #pragma omp taskwait
+
+        FLOG( FLog::Controller << "\tFinished (@Direct Pass (L2P) = "  << counterTime.tacAndElapsed() << " s)\n" );
+    }
+};
+
+
+#endif //FFMMALGORITHMTASK_HPP
diff --git a/Src/Core/FFmmAlgorithmThread.hpp b/include/Core/FFmmAlgorithmThread.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmThread.hpp
rename to include/Core/FFmmAlgorithmThread.hpp
diff --git a/Src/Core/FFmmAlgorithmThreadBalance.hpp b/include/Core/FFmmAlgorithmThreadBalance.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmThreadBalance.hpp
rename to include/Core/FFmmAlgorithmThreadBalance.hpp
diff --git a/Src/Core/FFmmAlgorithmThreadProc.hpp b/include/Core/FFmmAlgorithmThreadProc.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmThreadProc.hpp
rename to include/Core/FFmmAlgorithmThreadProc.hpp
diff --git a/Src/Core/FFmmAlgorithmThreadProcPeriodic.hpp b/include/Core/FFmmAlgorithmThreadProcPeriodic.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmThreadProcPeriodic.hpp
rename to include/Core/FFmmAlgorithmThreadProcPeriodic.hpp
diff --git a/Src/Core/FFmmAlgorithmThreadProcTsm.hpp b/include/Core/FFmmAlgorithmThreadProcTsm.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmThreadProcTsm.hpp
rename to include/Core/FFmmAlgorithmThreadProcTsm.hpp
diff --git a/Src/Core/FFmmAlgorithmThreadTsm.hpp b/include/Core/FFmmAlgorithmThreadTsm.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmThreadTsm.hpp
rename to include/Core/FFmmAlgorithmThreadTsm.hpp
diff --git a/Src/Core/FFmmAlgorithmTsm.hpp b/include/Core/FFmmAlgorithmTsm.hpp
similarity index 100%
rename from Src/Core/FFmmAlgorithmTsm.hpp
rename to include/Core/FFmmAlgorithmTsm.hpp
diff --git a/Src/Core/FP2PExclusion.hpp b/include/Core/FP2PExclusion.hpp
similarity index 100%
rename from Src/Core/FP2PExclusion.hpp
rename to include/Core/FP2PExclusion.hpp
diff --git a/Src/Extensions/FExtendCellType.hpp b/include/Extensions/FExtendCellType.hpp
similarity index 100%
rename from Src/Extensions/FExtendCellType.hpp
rename to include/Extensions/FExtendCellType.hpp
diff --git a/Src/Files/FAbstractLoader.hpp b/include/Files/FAbstractLoader.hpp
similarity index 100%
rename from Src/Files/FAbstractLoader.hpp
rename to include/Files/FAbstractLoader.hpp
diff --git a/Src/Files/FBasicLoader.hpp b/include/Files/FBasicLoader.hpp
similarity index 100%
rename from Src/Files/FBasicLoader.hpp
rename to include/Files/FBasicLoader.hpp
diff --git a/Src/Files/FBlockedMpiInterpolation.hpp b/include/Files/FBlockedMpiInterpolation.hpp
similarity index 85%
rename from Src/Files/FBlockedMpiInterpolation.hpp
rename to include/Files/FBlockedMpiInterpolation.hpp
index 41731c094e3afd29e9d40531c73ca4fbc4a18dff..5ee5041bb1e559a73d2072c2033dd204013bf93e 100644
--- a/Src/Files/FBlockedMpiInterpolation.hpp
+++ b/include/Files/FBlockedMpiInterpolation.hpp
@@ -2,43 +2,43 @@
 #define _F_BLOCKED_MPI_INTERPOLATION_HPP_
 
 
-#include "../../Src/Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupTree.hpp"
+#include "GroupTree/Core/FGroupTree.hpp"
 
-#include "../../Src/Components/FSimpleLeaf.hpp"
-#include "../../Src/Components/FSymbolicData.hpp"
-#include "../../Src/Containers/FVector.hpp"
+#include "Components/FSimpleLeaf.hpp"
+#include "Components/FSymbolicData.hpp"
+#include "Containers/FVector.hpp"
 
-#include "../../Src/Kernels/P2P/FP2PParticleContainer.hpp"
+#include "Kernels/P2P/FP2PParticleContainer.hpp"
 
-#include "../../Src/Utils/FMath.hpp"
-#include "../../Src/Utils/FMemUtils.hpp"
-#include "../../Src/Utils/FParameters.hpp"
+#include "Utils/FMath.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FParameters.hpp"
 
-#include "../../Src/Files/FRandomLoader.hpp"
-#include "../../Src/Files/FFmaGenericLoader.hpp"
+#include "Files/FRandomLoader.hpp"
+#include "Files/FFmaGenericLoader.hpp"
 
-#include "../../Src/GroupTree/Core/FGroupSeqAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
-#include "../../Src/GroupTree/Core/FP2PGroupParticleContainer.hpp"
+#include "GroupTree/Core/FGroupSeqAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskAlgorithm.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp"
+#include "GroupTree/Core/FP2PGroupParticleContainer.hpp"
 
-#include "../../Src/Utils/FParameterNames.hpp"
+#include "Utils/FParameterNames.hpp"
 
-#include "../../Src/Components/FTestParticleContainer.hpp"
-#include "../../Src/Components/FTestCell.hpp"
-#include "../../Src/Components/FTestKernels.hpp"
+#include "Components/FTestParticleContainer.hpp"
+#include "Components/FTestCell.hpp"
+#include "Components/FTestKernels.hpp"
 
-#include "../../Src/Core/FFmmAlgorithmThreadProc.hpp"
-#include "../../Src/Files/FMpiTreeBuilder.hpp"
-#include "../../Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
-#include "../../Src/Core/FFmmAlgorithm.hpp" //For validation
+#include "Core/FFmmAlgorithmThreadProc.hpp"
+#include "Files/FMpiTreeBuilder.hpp"
+#include "GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp"
+#include "Core/FFmmAlgorithm.hpp" //For validation
 
-#include "../../Src/Files/FMpiFmaGenericLoader.hpp"
-#include "../../Src/Containers/FCoordinateComputer.hpp"
+#include "Files/FMpiFmaGenericLoader.hpp"
+#include "Containers/FCoordinateComputer.hpp"
 
-#include "../../Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
 #include <memory>
 using namespace std;
diff --git a/Src/Files/FDlpolyLoader.hpp b/include/Files/FDlpolyLoader.hpp
similarity index 100%
rename from Src/Files/FDlpolyLoader.hpp
rename to include/Files/FDlpolyLoader.hpp
diff --git a/Src/Files/FExportWriter.hpp b/include/Files/FExportWriter.hpp
similarity index 100%
rename from Src/Files/FExportWriter.hpp
rename to include/Files/FExportWriter.hpp
diff --git a/Src/Files/FFmaGenericLoader.hpp b/include/Files/FFmaGenericLoader.hpp
similarity index 100%
rename from Src/Files/FFmaGenericLoader.hpp
rename to include/Files/FFmaGenericLoader.hpp
diff --git a/Src/Files/FFmaScanfLoader.hpp b/include/Files/FFmaScanfLoader.hpp
similarity index 100%
rename from Src/Files/FFmaScanfLoader.hpp
rename to include/Files/FFmaScanfLoader.hpp
diff --git a/Src/Files/FFmaTsmLoader.hpp b/include/Files/FFmaTsmLoader.hpp
similarity index 100%
rename from Src/Files/FFmaTsmLoader.hpp
rename to include/Files/FFmaTsmLoader.hpp
diff --git a/Src/Files/FGenerateDistribution.hpp b/include/Files/FGenerateDistribution.hpp
similarity index 100%
rename from Src/Files/FGenerateDistribution.hpp
rename to include/Files/FGenerateDistribution.hpp
diff --git a/Src/Files/FHLoader.hpp b/include/Files/FHLoader.hpp
similarity index 100%
rename from Src/Files/FHLoader.hpp
rename to include/Files/FHLoader.hpp
diff --git a/Src/Files/FIOVtk.hpp b/include/Files/FIOVtk.hpp
similarity index 99%
rename from Src/Files/FIOVtk.hpp
rename to include/Files/FIOVtk.hpp
index c741569f9826e791e83b6fb8f35e5e0bdde30c4e..4dd277b832f940e5558966cc7c14cfed94b3874b 100644
--- a/Src/Files/FIOVtk.hpp
+++ b/include/Files/FIOVtk.hpp
@@ -6,7 +6,7 @@
 #include <fstream>
 #include <string>
 //
-#include "../../Src/Utils/FPoint.hpp"
+#include "Utils/FPoint.hpp"
 //
 template <class FReal>
 class FIOVtk {
diff --git a/Src/Files/FMpiFmaDivider.hpp b/include/Files/FMpiFmaDivider.hpp
similarity index 100%
rename from Src/Files/FMpiFmaDivider.hpp
rename to include/Files/FMpiFmaDivider.hpp
diff --git a/Src/Files/FMpiFmaGenericLoader.hpp b/include/Files/FMpiFmaGenericLoader.hpp
similarity index 100%
rename from Src/Files/FMpiFmaGenericLoader.hpp
rename to include/Files/FMpiFmaGenericLoader.hpp
diff --git a/Src/Files/FMpiSplitFmaLoader.hpp b/include/Files/FMpiSplitFmaLoader.hpp
similarity index 100%
rename from Src/Files/FMpiSplitFmaLoader.hpp
rename to include/Files/FMpiSplitFmaLoader.hpp
diff --git a/Src/Files/FMpiStaticTreeBuilder.hpp b/include/Files/FMpiStaticTreeBuilder.hpp
similarity index 100%
rename from Src/Files/FMpiStaticTreeBuilder.hpp
rename to include/Files/FMpiStaticTreeBuilder.hpp
diff --git a/Src/Files/FMpiTreeBuilder.hpp b/include/Files/FMpiTreeBuilder.hpp
similarity index 100%
rename from Src/Files/FMpiTreeBuilder.hpp
rename to include/Files/FMpiTreeBuilder.hpp
diff --git a/Src/Files/FPerLeafLoader.hpp b/include/Files/FPerLeafLoader.hpp
similarity index 100%
rename from Src/Files/FPerLeafLoader.hpp
rename to include/Files/FPerLeafLoader.hpp
diff --git a/Src/Files/FRandomLoader.hpp b/include/Files/FRandomLoader.hpp
similarity index 100%
rename from Src/Files/FRandomLoader.hpp
rename to include/Files/FRandomLoader.hpp
diff --git a/Src/Files/FTreeBuilder.hpp b/include/Files/FTreeBuilder.hpp
similarity index 100%
rename from Src/Files/FTreeBuilder.hpp
rename to include/Files/FTreeBuilder.hpp
diff --git a/Src/Files/FTreeCsvSaver.hpp b/include/Files/FTreeCsvSaver.hpp
similarity index 100%
rename from Src/Files/FTreeCsvSaver.hpp
rename to include/Files/FTreeCsvSaver.hpp
diff --git a/Src/Files/FTreeIO.hpp b/include/Files/FTreeIO.hpp
similarity index 100%
rename from Src/Files/FTreeIO.hpp
rename to include/Files/FTreeIO.hpp
diff --git a/Src/Files/FTreeMpiCsvSaver.hpp b/include/Files/FTreeMpiCsvSaver.hpp
similarity index 100%
rename from Src/Files/FTreeMpiCsvSaver.hpp
rename to include/Files/FTreeMpiCsvSaver.hpp
diff --git a/Src/GroupTree/Core/FBuildGroupTree.hpp b/include/GroupTree/Core/FBuildGroupTree.hpp
similarity index 100%
rename from Src/GroupTree/Core/FBuildGroupTree.hpp
rename to include/GroupTree/Core/FBuildGroupTree.hpp
diff --git a/Src/GroupTree/Core/FCheckResults.hpp b/include/GroupTree/Core/FCheckResults.hpp
similarity index 100%
rename from Src/GroupTree/Core/FCheckResults.hpp
rename to include/GroupTree/Core/FCheckResults.hpp
diff --git a/Src/GroupTree/Core/FDistributedGroupTreeBuilder.hpp b/include/GroupTree/Core/FDistributedGroupTreeBuilder.hpp
similarity index 100%
rename from Src/GroupTree/Core/FDistributedGroupTreeBuilder.hpp
rename to include/GroupTree/Core/FDistributedGroupTreeBuilder.hpp
diff --git a/Src/GroupTree/Core/FDistributedLETGroupTreeValidator.hpp b/include/GroupTree/Core/FDistributedLETGroupTreeValidator.hpp
similarity index 100%
rename from Src/GroupTree/Core/FDistributedLETGroupTreeValidator.hpp
rename to include/GroupTree/Core/FDistributedLETGroupTreeValidator.hpp
diff --git a/Src/GroupTree/Core/FGroupAttachedLeaf.hpp b/include/GroupTree/Core/FGroupAttachedLeaf.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupAttachedLeaf.hpp
rename to include/GroupTree/Core/FGroupAttachedLeaf.hpp
index b12f32a0217b70df62e1017e675f692a36861b10..b7816102a427b2552510bf6a4536029107de732e 100644
--- a/Src/GroupTree/Core/FGroupAttachedLeaf.hpp
+++ b/include/GroupTree/Core/FGroupAttachedLeaf.hpp
@@ -3,8 +3,8 @@
 #ifndef FGROUPATTACHEDLEAF_HPP
 #define FGROUPATTACHEDLEAF_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FAssert.hpp"
 
 /**
  * This class is "attached" to a buffer.
diff --git a/Src/GroupTree/Core/FGroupAttachedLeafDyn.hpp b/include/GroupTree/Core/FGroupAttachedLeafDyn.hpp
similarity index 93%
rename from Src/GroupTree/Core/FGroupAttachedLeafDyn.hpp
rename to include/GroupTree/Core/FGroupAttachedLeafDyn.hpp
index 9c43eb53943a044efddc5cd2f11956acdc08d0ae..0d937664278d47930bb9c9826c73c39be84090dc 100644
--- a/Src/GroupTree/Core/FGroupAttachedLeafDyn.hpp
+++ b/include/GroupTree/Core/FGroupAttachedLeafDyn.hpp
@@ -2,9 +2,9 @@
 #ifndef FGROUPATTACHEDLEAFDYN_HPP
 #define FGROUPATTACHEDLEAFDYN_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FPoint.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
 
 template <class FReal>
 struct UnknownDescriptor{
diff --git a/Src/GroupTree/Core/FGroupLinearTree.hpp b/include/GroupTree/Core/FGroupLinearTree.hpp
similarity index 100%
rename from Src/GroupTree/Core/FGroupLinearTree.hpp
rename to include/GroupTree/Core/FGroupLinearTree.hpp
diff --git a/Src/GroupTree/Core/FGroupOfCells.hpp b/include/GroupTree/Core/FGroupOfCells.hpp
similarity index 100%
rename from Src/GroupTree/Core/FGroupOfCells.hpp
rename to include/GroupTree/Core/FGroupOfCells.hpp
diff --git a/Src/GroupTree/Core/FGroupOfCellsDyn.hpp b/include/GroupTree/Core/FGroupOfCellsDyn.hpp
similarity index 98%
rename from Src/GroupTree/Core/FGroupOfCellsDyn.hpp
rename to include/GroupTree/Core/FGroupOfCellsDyn.hpp
index 61c95e709389207435b0d47931ee487c47bbc184..b1da73dd09fb2850a79a5d0d2b2d971a175e0b67 100644
--- a/Src/GroupTree/Core/FGroupOfCellsDyn.hpp
+++ b/include/GroupTree/Core/FGroupOfCellsDyn.hpp
@@ -3,10 +3,10 @@
 #define FGROUPOFCELLSDYN_HPP
 
 
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FAlignedMemory.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FAlignedMemory.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
 
 #include <list>
 #include <functional>
diff --git a/Src/GroupTree/Core/FGroupOfParticles.hpp b/include/GroupTree/Core/FGroupOfParticles.hpp
similarity index 97%
rename from Src/GroupTree/Core/FGroupOfParticles.hpp
rename to include/GroupTree/Core/FGroupOfParticles.hpp
index bf1a86d4dadaf08859493cba91942ebc3108775c..a76467f8a696398858240f38672a94602f48b5e4 100644
--- a/Src/GroupTree/Core/FGroupOfParticles.hpp
+++ b/include/GroupTree/Core/FGroupOfParticles.hpp
@@ -4,11 +4,11 @@
 #define FGROUPOFPARTICLES_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FAlignedMemory.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FAssert.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FAlignedMemory.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
 
 #include <list>
 #include <functional>
@@ -358,6 +358,15 @@ public:
                                             blockHeader->attributeLeadingDim);
     }
 
+    template<class F>
+    void forEachLeaf(F&& function){
+        using F_ = std::remove_reference_t<F>;
+        for(int idxLeafPtr = 0 ; idxLeafPtr < blockHeader->numberOfLeavesInBlock ; ++idxLeafPtr){
+            auto leaf = getLeaf<typename F_::leaf_type>(idxLeafPtr);
+            function(&leaf);
+        }
+    }
+  
 
     /** Extract methods */
 
diff --git a/Src/GroupTree/Core/FGroupOfParticlesDyn.hpp b/include/GroupTree/Core/FGroupOfParticlesDyn.hpp
similarity index 98%
rename from Src/GroupTree/Core/FGroupOfParticlesDyn.hpp
rename to include/GroupTree/Core/FGroupOfParticlesDyn.hpp
index 24a3b5b2120c844edb3677a68301ee40b319f42f..36865db5de0f11f9d8ccd9191c7f2f56ff10e188 100644
--- a/Src/GroupTree/Core/FGroupOfParticlesDyn.hpp
+++ b/include/GroupTree/Core/FGroupOfParticlesDyn.hpp
@@ -3,11 +3,11 @@
 #define FGROUPOFPARTICLESDYN_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FAlignedMemory.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FAssert.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FAlignedMemory.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
 
 #include <list>
 #include <functional>
diff --git a/Src/GroupTree/Core/FGroupSeqAlgorithm.hpp b/include/GroupTree/Core/FGroupSeqAlgorithm.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupSeqAlgorithm.hpp
rename to include/GroupTree/Core/FGroupSeqAlgorithm.hpp
index 05fbe7f5459d970975aae838e9bf90fea7c64ceb..0f500ac87988e94f123e18ab1893fe19821b63b1 100644
--- a/Src/GroupTree/Core/FGroupSeqAlgorithm.hpp
+++ b/include/GroupTree/Core/FGroupSeqAlgorithm.hpp
@@ -3,12 +3,12 @@
 #ifndef FGROUPSEQALGORITHM_HPP
 #define FGROUPSEQALGORITHM_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
 
 #include "FOutOfBlockInteraction.hpp"
 
diff --git a/Src/GroupTree/Core/FGroupTaskAlgorithm.hpp b/include/GroupTree/Core/FGroupTaskAlgorithm.hpp
similarity index 98%
rename from Src/GroupTree/Core/FGroupTaskAlgorithm.hpp
rename to include/GroupTree/Core/FGroupTaskAlgorithm.hpp
index f922422de705eb55f1c943ac0676aef94c833500..b995dc4b908623c556a60f45523fede64dede1d1 100644
--- a/Src/GroupTree/Core/FGroupTaskAlgorithm.hpp
+++ b/include/GroupTree/Core/FGroupTaskAlgorithm.hpp
@@ -3,13 +3,13 @@
 #ifndef FGROUPTASKALGORITHM_HPP
 #define FGROUPTASKALGORITHM_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAlgorithmTimers.hpp"
 #include "FOutOfBlockInteraction.hpp"
 
 #include <vector>
@@ -17,8 +17,8 @@
 
 #include <omp.h>
 
-template <class OctreeClass, class CellContainerClass, class CellClass, class KernelClass, class ParticleGroupClass, class ParticleContainerClass>
-class FGroupTaskAlgorithm : public FAbstractAlgorithm {
+template <class OctreeClass, class CellContainerClass, class KernelClass, class ParticleGroupClass, class ParticleContainerClass>
+class FGroupTaskAlgorithm : public FAbstractAlgorithm, public FAlgorithmTimers {
 protected:
     template <class OtherBlockClass>
     struct BlockInteractions{
@@ -87,7 +87,7 @@ protected:
       */
     void executeCore(const unsigned operationsToProceed) override {
         FLOG( FLog::Controller << "\tStart FGroupTaskAlgorithm\n" );
-
+        Timers[P2MTimer].tic();
         #pragma omp parallel num_threads(MaxThreads)
         {
             #pragma omp single nowait
@@ -114,6 +114,7 @@ protected:
                 if( operationsToProceed & FFmmL2P ) mergePass();
             }
         }
+        Timers[P2MTimer].tac();
     }
 
     /**
diff --git a/Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp b/include/GroupTree/Core/FGroupTaskDepAlgorithm.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp
rename to include/GroupTree/Core/FGroupTaskDepAlgorithm.hpp
index 7a58761177f95bb459ec33b3b3be77a88484421a..d906b8a85e3c59fb38a7cbba39e1c15a5207a280 100644
--- a/Src/GroupTree/Core/FGroupTaskDepAlgorithm.hpp
+++ b/include/GroupTree/Core/FGroupTaskDepAlgorithm.hpp
@@ -10,6 +10,7 @@
 #include "Containers/FTreeCoordinate.hpp"
 #include "Utils/FLog.hpp"
 #include "Utils/FTic.hpp"
+#include "Utils/FAlgorithmTimers.hpp"
 
 #include "Utils/FTaskTimer.hpp"
 
@@ -44,9 +45,9 @@
 #endif
 
 
-template <class OctreeClass, class CellContainerClass, class CellClass,
+template <class OctreeClass, class CellContainerClass,
           class SymboleCellClass, class PoleCellClass, class LocalCellClass, class KernelClass, class ParticleGroupClass, class ParticleContainerClass>
-class FGroupTaskDepAlgorithm : public FAbstractAlgorithm {
+class FGroupTaskDepAlgorithm : public FAbstractAlgorithm, public FAlgorithmTimers {
 protected:
     template <class OtherBlockClass>
     struct BlockInteractions{
@@ -141,7 +142,7 @@ protected:
         FLOG( FLog::Controller << "\tStart FGroupTaskDepAlgorithm\n" );
 
         FTIME_TASKS(taskTimeRecorder.start());
-
+        Timers[P2MTimer].tic();
         #pragma omp parallel num_threads(MaxThreads)
         {
             #pragma omp single nowait
@@ -166,7 +167,7 @@ protected:
                 #pragma omp taskwait
             }
         }
-
+        Timers[P2MTimer].tac();
         FTIME_TASKS(taskTimeRecorder.end());
         FTIME_TASKS(taskTimeRecorder.saveToDisk("/tmp/taskstime-FGroupTaskDepAlgorithm.txt"));
     }
diff --git a/Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp b/include/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp
rename to include/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp
index acc6772aa47c4b2c1fd6663e306a1eedc7f7741c..8ccb5b5ad930dcbb2e6d0dbf489a86a80a894e21 100644
--- a/Src/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp
+++ b/include/GroupTree/Core/FGroupTaskStarpuAlgorithm.hpp
@@ -2,14 +2,14 @@
 #ifndef FGROUPTASKSTARPUALGORITHM_HPP
 #define FGROUPTASKSTARPUALGORITHM_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FEnv.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FEnv.hpp"
 
 #include "FOutOfBlockInteraction.hpp"
 
@@ -24,25 +24,25 @@
 #ifdef STARPU_SIMGRID_MLR_MODELS
 #include "starpu_codelet_parameters.h"
 #endif
-#include "../StarPUUtils/FStarPUUtils.hpp"
-#include "../StarPUUtils/FStarPUFmmPriorities.hpp"
-#include "../StarPUUtils/FStarPUFmmPrioritiesV2.hpp"
-#include "../StarPUUtils/FStarPUReduxCpu.hpp"
+#include "GroupTree/StarPUUtils/FStarPUUtils.hpp"
+#include "GroupTree/StarPUUtils/FStarPUFmmPriorities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp"
+#include "GroupTree/StarPUUtils/FStarPUReduxCpu.hpp"
 
 #ifdef STARPU_USE_CPU
-#include "../StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
 #endif
 #ifdef SCALFMM_ENABLE_CUDA_KERNEL
-#include "../StarPUUtils/FStarPUCudaWrapper.hpp"
-#include "../Cuda/FCudaEmptyKernel.hpp"
-#include "../Cuda/FCudaGroupAttachedLeaf.hpp"
-#include "../Cuda/FCudaGroupOfParticles.hpp"
-#include "../Cuda/FCudaGroupOfCells.hpp"
-#include "../Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyKernel.hpp"
+#include "GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
 #endif
 #ifdef SCALFMM_ENABLE_OPENCL_KERNEL
-#include "../StarPUUtils/FStarPUOpenClWrapper.hpp"
-#include "../OpenCl/FOpenCLDeviceWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp"
+#include "GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp"
 #endif
 
 #include "Containers/FBoolArray.hpp"
diff --git a/Src/GroupTree/Core/FGroupTaskStarpuImplicitAlgorithm.hpp b/include/GroupTree/Core/FGroupTaskStarpuImplicitAlgorithm.hpp
similarity index 100%
rename from Src/GroupTree/Core/FGroupTaskStarpuImplicitAlgorithm.hpp
rename to include/GroupTree/Core/FGroupTaskStarpuImplicitAlgorithm.hpp
diff --git a/Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp b/include/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp
rename to include/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp
index e137735cb2471e30176074e525007697edcdd652..344224b8d33beb8101eb497141d172373c386a72 100644
--- a/Src/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp
+++ b/include/GroupTree/Core/FGroupTaskStarpuMpiAlgorithm.hpp
@@ -2,18 +2,18 @@
 #ifndef FGROUPTASKSTARPUMPIALGORITHM_HPP
 #define FGROUPTASKSTARPUMPIALGORITHM_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FAlignedMemory.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FEnv.hpp"
-
-#include "../../Utils/FMpi.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FAlignedMemory.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FEnv.hpp"
+
+#include "Utils/FMpi.hpp"
 
 #include "FOutOfBlockInteraction.hpp"
 
@@ -25,26 +25,26 @@
 #include <set>
 #include <starpu.h>
 #include <starpu_mpi.h>
-#include "../StarPUUtils/FStarPUUtils.hpp"
-#include "../StarPUUtils/FStarPUFmmPriorities.hpp"
-#include "../StarPUUtils/FStarPUFmmPrioritiesV2.hpp"
-#include "../StarPUUtils/FStarPUReduxCpu.hpp"
+#include "GroupTree/StarPUUtils/FStarPUUtils.hpp"
+#include "GroupTree/StarPUUtils/FStarPUFmmPriorities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp"
+#include "GroupTree/StarPUUtils/FStarPUReduxCpu.hpp"
 
 #ifdef STARPU_USE_CPU
-#include "../StarPUUtils/FStarPUCpuWrapper.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp"
 #endif
 #ifdef SCALFMM_ENABLE_CUDA_KERNEL
-#include "../StarPUUtils/FStarPUCudaWrapper.hpp"
-#include "../Cuda/FCudaEmptyKernel.hpp"
-#include "../Cuda/FCudaGroupAttachedLeaf.hpp"
-#include "../Cuda/FCudaGroupOfParticles.hpp"
-#include "../Cuda/FCudaGroupOfCells.hpp"
-#include "../Cuda/FCudaEmptyCellSymb.hpp"
+#include "GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp"
+#include "GroupTree/Cuda/FCudaEmptyKernel.hpp"
+#include "GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfParticles.hpp"
+#include "GroupTree/Cuda/FCudaGroupOfCells.hpp"
+#include "GroupTree/Cuda/FCudaEmptyCellSymb.hpp"
 #endif
 #ifdef SCALFMM_ENABLE_OPENCL_KERNEL
-#include "../StarPUUtils/FStarPUOpenClWrapper.hpp"
-#include "../OpenCl/FOpenCLDeviceWrapper.hpp"
-#include "../OpenCl/FEmptyOpenCLCode.hpp"
+#include "GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp"
+#include "GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp"
+#include "GroupTree/OpenCl/FEmptyOpenCLCode.hpp"
 #endif
 
 #include "../StarPUUtils/FStarPUReduxCpu.hpp"
diff --git a/Src/GroupTree/Core/FGroupTools.hpp b/include/GroupTree/Core/FGroupTools.hpp
similarity index 100%
rename from Src/GroupTree/Core/FGroupTools.hpp
rename to include/GroupTree/Core/FGroupTools.hpp
diff --git a/Src/GroupTree/Core/FGroupTree.hpp b/include/GroupTree/Core/FGroupTree.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupTree.hpp
rename to include/GroupTree/Core/FGroupTree.hpp
index 7b47be19b42c4782b9a6e9cd59f7957a714c5536..9eb0f6c9158e1213e5fd1dfa2dfb63c7381b9021 100644
--- a/Src/GroupTree/Core/FGroupTree.hpp
+++ b/include/GroupTree/Core/FGroupTree.hpp
@@ -962,6 +962,18 @@ public:
         block->forEachLeaf(function);
       }
   }
+
+  /**
+   * @brief forEachLeaf iterate on the leaf and apply the generic function
+   * @param function
+   */
+  template<class F>
+  void forEachLeaf(F&& function){
+    for (ParticleGroupClass* block: _particleBlocks){
+        block->forEachLeaf(function);
+      }
+  }
+
   /**
    * @brief forEachMyLeaf iterate on the leaf and apply the function
    * @param function
diff --git a/Src/GroupTree/Core/FGroupTreeDyn.hpp b/include/GroupTree/Core/FGroupTreeDyn.hpp
similarity index 99%
rename from Src/GroupTree/Core/FGroupTreeDyn.hpp
rename to include/GroupTree/Core/FGroupTreeDyn.hpp
index 5b551cbb056150104885aa3c1790db1ff0862565..5200e17dcf107877477d4201ec0437bea8b02bb6 100644
--- a/Src/GroupTree/Core/FGroupTreeDyn.hpp
+++ b/include/GroupTree/Core/FGroupTreeDyn.hpp
@@ -7,14 +7,14 @@
 #include <memory>
 #include <functional>
 
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FPoint.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Containers/FCoordinateComputer.hpp"
-#include "FGroupOfCellsDyn.hpp"
-#include "FGroupOfParticlesDyn.hpp"
-#include "FGroupAttachedLeafDyn.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FPoint.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Containers/FCoordinateComputer.hpp"
+#include "GroupTree/Core/FGroupOfCellsDyn.hpp"
+#include "GroupTree/Core/FGroupOfParticlesDyn.hpp"
+#include "GroupTree/Core/FGroupAttachedLeafDyn.hpp"
 
 
 
diff --git a/Src/GroupTree/Core/FOutOfBlockInteraction.hpp b/include/GroupTree/Core/FOutOfBlockInteraction.hpp
similarity index 100%
rename from Src/GroupTree/Core/FOutOfBlockInteraction.hpp
rename to include/GroupTree/Core/FOutOfBlockInteraction.hpp
diff --git a/Src/GroupTree/Core/FP2PGroupParticleContainer.hpp b/include/GroupTree/Core/FP2PGroupParticleContainer.hpp
similarity index 100%
rename from Src/GroupTree/Core/FP2PGroupParticleContainer.hpp
rename to include/GroupTree/Core/FP2PGroupParticleContainer.hpp
diff --git a/Src/GroupTree/Core/starpu_codelet_parameters.h b/include/GroupTree/Core/starpu_codelet_parameters.h
similarity index 100%
rename from Src/GroupTree/Core/starpu_codelet_parameters.h
rename to include/GroupTree/Core/starpu_codelet_parameters.h
diff --git a/Src/GroupTree/Cuda/FCudaCompositeCell.hpp b/include/GroupTree/Cuda/FCudaCompositeCell.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaCompositeCell.hpp
rename to include/GroupTree/Cuda/FCudaCompositeCell.hpp
diff --git a/Src/GroupTree/Cuda/FCudaData.hpp b/include/GroupTree/Cuda/FCudaData.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaData.hpp
rename to include/GroupTree/Cuda/FCudaData.hpp
diff --git a/Src/GroupTree/Cuda/FCudaDeviceWrapper.cu b/include/GroupTree/Cuda/FCudaDeviceWrapper.cu
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaDeviceWrapper.cu
rename to include/GroupTree/Cuda/FCudaDeviceWrapper.cu
diff --git a/Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp b/include/GroupTree/Cuda/FCudaDeviceWrapper.hpp
similarity index 98%
rename from Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp
rename to include/GroupTree/Cuda/FCudaDeviceWrapper.hpp
index 3762f7bf08ea36566ce3168e684649d3ad4ad4ea..081ff04c42ec2ad6128e0519486b938ca3de22e0 100644
--- a/Src/GroupTree/Cuda/FCudaDeviceWrapper.hpp
+++ b/include/GroupTree/Cuda/FCudaDeviceWrapper.hpp
@@ -2,9 +2,9 @@
 #define FCUDADEVICEWRAPPER_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "../Core/FOutOfBlockInteraction.hpp"
-#include "FCudaStructParams.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/Core/FOutOfBlockInteraction.hpp"
+#include "GroupTree/Cuda/FCudaStructParams.hpp"
 
 template <class SymboleCellClass, class PoleCellClass, class LocalCellClass,
           class CellContainerClass, class ParticleContainerGroupClass, class ParticleGroupClass, class CudaKernelClass>
diff --git a/Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp b/include/GroupTree/Cuda/FCudaEmptyCellSymb.hpp
similarity index 62%
rename from Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp
rename to include/GroupTree/Cuda/FCudaEmptyCellSymb.hpp
index 2f3342702ab969a9f391998c8a54fabb6e31d525..a34b6b8b7f2e54aa1e65f07c41a7ad0f641c9991 100644
--- a/Src/GroupTree/Cuda/FCudaEmptyCellSymb.hpp
+++ b/include/GroupTree/Cuda/FCudaEmptyCellSymb.hpp
@@ -1,9 +1,9 @@
 #ifndef FCUDAEMPTYCELLSYMB_HPP
 #define FCUDAEMPTYCELLSYMB_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
 
 struct alignas(FStarPUDefaultAlign::StructAlign) FCudaEmptyCellSymb {
     MortonIndex mortonIndex;
diff --git a/Src/GroupTree/Cuda/FCudaEmptyKernel.hpp b/include/GroupTree/Cuda/FCudaEmptyKernel.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaEmptyKernel.hpp
rename to include/GroupTree/Cuda/FCudaEmptyKernel.hpp
diff --git a/Src/GroupTree/Cuda/FCudaGlobal.hpp b/include/GroupTree/Cuda/FCudaGlobal.hpp
similarity index 95%
rename from Src/GroupTree/Cuda/FCudaGlobal.hpp
rename to include/GroupTree/Cuda/FCudaGlobal.hpp
index 4c86add3dd46d16523297943725fd55cd91394f7..f38f2ba7ac68e89ae41e1fd540e67f72c8cff969 100644
--- a/Src/GroupTree/Cuda/FCudaGlobal.hpp
+++ b/include/GroupTree/Cuda/FCudaGlobal.hpp
@@ -1,7 +1,7 @@
 #ifndef FCUDAGLOBAL_HPP
 #define FCUDAGLOBAL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
 // Manage special case for nvcc
 #if defined(__CUDACC__) || defined(__NVCC__)
diff --git a/Src/GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp b/include/GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp
rename to include/GroupTree/Cuda/FCudaGroupAttachedLeaf.hpp
diff --git a/Src/GroupTree/Cuda/FCudaGroupOfCells.hpp b/include/GroupTree/Cuda/FCudaGroupOfCells.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaGroupOfCells.hpp
rename to include/GroupTree/Cuda/FCudaGroupOfCells.hpp
diff --git a/Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp b/include/GroupTree/Cuda/FCudaGroupOfParticles.hpp
similarity index 98%
rename from Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp
rename to include/GroupTree/Cuda/FCudaGroupOfParticles.hpp
index a119cc22ed8b35c53fc0fc835a621fb1ce15e95f..15cfbf316ff258f5dc02c19e117b155a2c9d250f 100644
--- a/Src/GroupTree/Cuda/FCudaGroupOfParticles.hpp
+++ b/include/GroupTree/Cuda/FCudaGroupOfParticles.hpp
@@ -2,8 +2,8 @@
 #define FCUDAGROUPOFPARTICLES_HPP
 
 #include "FCudaGlobal.hpp"
-#include "../../Utils/FGlobal.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
 
 template <class FReal, unsigned NbSymbAttributes, unsigned NbAttributesPerParticle, class AttributeClass = FReal>
 class FCudaGroupOfParticles {
diff --git a/Src/GroupTree/Cuda/FCudaStructParams.hpp b/include/GroupTree/Cuda/FCudaStructParams.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaStructParams.hpp
rename to include/GroupTree/Cuda/FCudaStructParams.hpp
diff --git a/Src/GroupTree/Cuda/FCudaTic.hpp b/include/GroupTree/Cuda/FCudaTic.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaTic.hpp
rename to include/GroupTree/Cuda/FCudaTic.hpp
diff --git a/Src/GroupTree/Cuda/FCudaTreeCoordinate.hpp b/include/GroupTree/Cuda/FCudaTreeCoordinate.hpp
similarity index 100%
rename from Src/GroupTree/Cuda/FCudaTreeCoordinate.hpp
rename to include/GroupTree/Cuda/FCudaTreeCoordinate.hpp
diff --git a/Src/GroupTree/OpenCl/FEmptyKernel.cl b/include/GroupTree/OpenCl/FEmptyKernel.cl
similarity index 100%
rename from Src/GroupTree/OpenCl/FEmptyKernel.cl
rename to include/GroupTree/OpenCl/FEmptyKernel.cl
diff --git a/Src/GroupTree/OpenCl/FEmptyOpenCLCode.hpp b/include/GroupTree/OpenCl/FEmptyOpenCLCode.hpp
similarity index 100%
rename from Src/GroupTree/OpenCl/FEmptyOpenCLCode.hpp
rename to include/GroupTree/OpenCl/FEmptyOpenCLCode.hpp
diff --git a/Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp b/include/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
similarity index 97%
rename from Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
rename to include/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
index eaa6220a5d72f27210a6ea821fd53c2805f3cacf..2d338cd8287e67d319f45e437776b9bdd1ccb49c 100644
--- a/Src/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
+++ b/include/GroupTree/OpenCl/FOpenCLDeviceWrapper.hpp
@@ -1,19 +1,19 @@
 #ifndef FOPENCLDEVICEWRAPPER_HPP
 #define FOPENCLDEVICEWRAPPER_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
 
-#include "../Core/FOutOfBlockInteraction.hpp"
+#include "GroupTree/Core/FOutOfBlockInteraction.hpp"
 
-#include "FEmptyOpenCLCode.hpp"
+#include "GroupTree/OpenCl/FEmptyOpenCLCode.hpp"
 
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
 
 #include <starpu.h>
 
diff --git a/Src/GroupTree/OpenCl/FTextReplacer.hpp b/include/GroupTree/OpenCl/FTextReplacer.hpp
similarity index 98%
rename from Src/GroupTree/OpenCl/FTextReplacer.hpp
rename to include/GroupTree/OpenCl/FTextReplacer.hpp
index 81e69110bbeef8dec546abe1b688c61a4971ded0..9cad901370a03df067a9dc89d65284c314a57ffe 100644
--- a/Src/GroupTree/OpenCl/FTextReplacer.hpp
+++ b/include/GroupTree/OpenCl/FTextReplacer.hpp
@@ -1,8 +1,8 @@
 #ifndef FTEXTREPLACER_HPP
 #define FTEXTREPLACER_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FAssert.hpp"
 
 #include <sstream>
 #include <fstream>
diff --git a/Src/GroupTree/P2P/FCudaP2P.hpp b/include/GroupTree/P2P/FCudaP2P.hpp
similarity index 100%
rename from Src/GroupTree/P2P/FCudaP2P.hpp
rename to include/GroupTree/P2P/FCudaP2P.hpp
diff --git a/Src/GroupTree/StarPUUtils/FOmpPriorities.hpp b/include/GroupTree/StarPUUtils/FOmpPriorities.hpp
similarity index 98%
rename from Src/GroupTree/StarPUUtils/FOmpPriorities.hpp
rename to include/GroupTree/StarPUUtils/FOmpPriorities.hpp
index 57b1b91ffbcebdea98f9eb4e640bd5f424bfda27..79a2e2708a210c27d90b8a6e0b5a581d8e96cc12 100644
--- a/Src/GroupTree/StarPUUtils/FOmpPriorities.hpp
+++ b/include/GroupTree/StarPUUtils/FOmpPriorities.hpp
@@ -3,9 +3,9 @@
 
 #include <cassert>
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FEnv.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FEnv.hpp"
 
 class FOmpPriorities{
     int insertionPositionP2M;
diff --git a/Src/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp b/include/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp
similarity index 99%
rename from Src/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp
rename to include/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp
index d7fd4151a207d16a805695bd0852c50bab349d14..e2f2d2d0ebf21d39e1f6b7689f827687254877b9 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUCptInteractionsWrapper.hpp
@@ -1,18 +1,18 @@
 #ifndef FSTARPUCPTINTERACTIONSWRAPPER_HPP
 #define FSTARPUCPTINTERACTIONSWRAPPER_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
 
-#include "../Core/FOutOfBlockInteraction.hpp"
+#include "GroupTree/Core/FOutOfBlockInteraction.hpp"
 
 #ifdef SCALFMM_USE_MPI
-#include "../../Utils/FMpi.hpp"
+#include "Utils/FMpi.hpp"
 #endif
 
 #include <vector>
@@ -32,7 +32,7 @@
 
 #include "FStarPUUtils.hpp"
 
-#include "../../Utils/FTaskTimer.hpp"
+#include "Utils/FTaskTimer.hpp"
 
 template <class CellContainerClass, class CellClass, class KernelClass,
           class ParticleGroupClass, class ParticleContainerClass>
diff --git a/Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp b/include/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp
similarity index 98%
rename from Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp
rename to include/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp
index 87f118a1f641031de8844c785fb88af19982c61b..f5c51341624757333a803a91576ae9b1a2faf9ab 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUCpuWrapper.hpp
@@ -3,18 +3,18 @@
 #define FSTARPUCPUWRAPPER_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
 
-#include "../Core/FOutOfBlockInteraction.hpp"
+#include "GroupTree/Core/FOutOfBlockInteraction.hpp"
 
 #ifdef SCALFMM_USE_MPI
-#include "../../Utils/FMpi.hpp"
+#include "Utils/FMpi.hpp"
 #endif
 
 #include <vector>
@@ -34,7 +34,7 @@
 
 #include "FStarPUUtils.hpp"
 
-#include "../../Utils/FTaskTimer.hpp"
+#include "Utils/FTaskTimer.hpp"
 
 template <class CellContainerClass, class CellClass, class KernelClass,
           class ParticleGroupClass, class ParticleContainerClass>
diff --git a/Src/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp b/include/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp
similarity index 98%
rename from Src/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp
rename to include/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp
index c685242831af2fde522ac38e1b25a84cdfd4abe1..2c9a73fa9131250b872647e0a8ce76e4d3a348fc 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUCudaWrapper.hpp
@@ -1,19 +1,19 @@
 #ifndef FSTARPUCUDAWRAPPER_HPP
 #define FSTARPUCUDAWRAPPER_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
+#include "Utils/FAssert.hpp"
 
-#include "../Core/FOutOfBlockInteraction.hpp"
+#include "GroupTree/Core/FOutOfBlockInteraction.hpp"
 
 #ifdef SCALFMM_USE_MPI
-#include "../../Utils/FMpi.hpp"
+#include "Utils/FMpi.hpp"
 #endif
 
 #include <vector>
diff --git a/Src/GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp b/include/GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp
similarity index 100%
rename from Src/GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp
rename to include/GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp
diff --git a/Src/GroupTree/StarPUUtils/FStarPUFmmPriorities.hpp b/include/GroupTree/StarPUUtils/FStarPUFmmPriorities.hpp
similarity index 100%
rename from Src/GroupTree/StarPUUtils/FStarPUFmmPriorities.hpp
rename to include/GroupTree/StarPUUtils/FStarPUFmmPriorities.hpp
diff --git a/Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp b/include/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp
similarity index 99%
rename from Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp
rename to include/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp
index c3832b1af51439082d21607dbf362dc4c2769e1e..fdba743903b263e3c18a00f253f05b465c00795d 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUFmmPrioritiesV2.hpp
@@ -2,10 +2,10 @@
 #define FSTARPUFMMPRIORITIESV2_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "FStarPUUtils.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/StarPUUtils/FStarPUUtils.hpp"
 
-#include "FStarPUKernelCapacities.hpp"
+#include "GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp"
 
 /**
  * @brief The FStarPUFmmPrioritiesV2 class
diff --git a/Src/GroupTree/StarPUUtils/FStarPUHeteoprio.hpp b/include/GroupTree/StarPUUtils/FStarPUHeteoprio.hpp
similarity index 99%
rename from Src/GroupTree/StarPUUtils/FStarPUHeteoprio.hpp
rename to include/GroupTree/StarPUUtils/FStarPUHeteoprio.hpp
index 5aee8e3382c5f72eb2a15d6b2c48af7e91d2cc5e..d2c17f47cb82100ab5a487402170f97cb48e9e15 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUHeteoprio.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUHeteoprio.hpp
@@ -143,8 +143,8 @@
  * n = 10, w = 3 => 10/3 = 3.33 >= s (so a task will be given if s is no more than 3 times slower)
  */
 
-#include "../../Utils/FGlobal.hpp"
-#include "FStarPUUtils.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/StarPUUtils/FStarPUUtils.hpp"
 
 #ifdef __cplusplus
 extern "C"
diff --git a/Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp b/include/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp
similarity index 100%
rename from Src/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp
rename to include/GroupTree/StarPUUtils/FStarPUKernelCapacities.hpp
diff --git a/Src/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp b/include/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp
similarity index 97%
rename from Src/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp
rename to include/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp
index 45238335311f3f18990ce46af2c77e59a9d74489..a5263bc1af8d8da7ee746746b808e5512f078532 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUOpenClWrapper.hpp
@@ -4,18 +4,18 @@
 #define FSTARPUOPENCLWRAPPER_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Core/FCoreCommon.hpp"
-#include "../../Utils/FQuickSort.hpp"
-#include "../../Containers/FTreeCoordinate.hpp"
-#include "../../Utils/FLog.hpp"
-#include "../../Utils/FTic.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Core/FCoreCommon.hpp"
+#include "Utils/FQuickSort.hpp"
+#include "Containers/FTreeCoordinate.hpp"
+#include "Utils/FLog.hpp"
+#include "Utils/FTic.hpp"
+#include "Utils/FAssert.hpp"
 
-#include "../Core/FOutOfBlockInteraction.hpp"
+#include "GroupTree/Core/FOutOfBlockInteraction.hpp"
 
 #ifdef SCALFMM_USE_MPI
-#include "../../Utils/FMpi.hpp"
+#include "Utils/FMpi.hpp"
 #endif
 
 #include <vector>
diff --git a/Src/GroupTree/StarPUUtils/FStarPUReduxCpu.hpp b/include/GroupTree/StarPUUtils/FStarPUReduxCpu.hpp
similarity index 100%
rename from Src/GroupTree/StarPUUtils/FStarPUReduxCpu.hpp
rename to include/GroupTree/StarPUUtils/FStarPUReduxCpu.hpp
diff --git a/Src/GroupTree/StarPUUtils/FStarPUUtils.hpp b/include/GroupTree/StarPUUtils/FStarPUUtils.hpp
similarity index 99%
rename from Src/GroupTree/StarPUUtils/FStarPUUtils.hpp
rename to include/GroupTree/StarPUUtils/FStarPUUtils.hpp
index 8ee8d336ee7fc215a0693c04e89e6fa7869eab71..fa1fd6b7ad96a30e7e516451a3ebfc985c96e74d 100644
--- a/Src/GroupTree/StarPUUtils/FStarPUUtils.hpp
+++ b/include/GroupTree/StarPUUtils/FStarPUUtils.hpp
@@ -3,7 +3,7 @@
 #define FSTARPUUTILS_HPP
 
 /////////////////////////////////////////////////////
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
 /////////////////////////////////////////////////////
 
diff --git a/Src/GroupTree/TestKernel/FCudaTestKernels.hpp b/include/GroupTree/TestKernel/FCudaTestKernels.hpp
similarity index 100%
rename from Src/GroupTree/TestKernel/FCudaTestKernels.hpp
rename to include/GroupTree/TestKernel/FCudaTestKernels.hpp
diff --git a/Src/GroupTree/TestKernel/FGroupTestParticleContainer.hpp b/include/GroupTree/TestKernel/FGroupTestParticleContainer.hpp
similarity index 100%
rename from Src/GroupTree/TestKernel/FGroupTestParticleContainer.hpp
rename to include/GroupTree/TestKernel/FGroupTestParticleContainer.hpp
diff --git a/Src/GroupTree/TestKernel/FTestKernel.cl b/include/GroupTree/TestKernel/FTestKernel.cl
similarity index 100%
rename from Src/GroupTree/TestKernel/FTestKernel.cl
rename to include/GroupTree/TestKernel/FTestKernel.cl
diff --git a/Src/GroupTree/TestKernel/FTestOpenCLCode.hpp b/include/GroupTree/TestKernel/FTestOpenCLCode.hpp
similarity index 92%
rename from Src/GroupTree/TestKernel/FTestOpenCLCode.hpp
rename to include/GroupTree/TestKernel/FTestOpenCLCode.hpp
index cfee46a6d9a4f8102b0a25207d4f7747d371e165..1c41a8a96a4a677c1dcbeefff383c5a8ebfd44f8 100644
--- a/Src/GroupTree/TestKernel/FTestOpenCLCode.hpp
+++ b/include/GroupTree/TestKernel/FTestOpenCLCode.hpp
@@ -1,9 +1,9 @@
 #ifndef FTESTOPENCLCODE_HPP
 #define FTESTOPENCLCODE_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
-#include "../OpenCl/FTextReplacer.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "GroupTree/OpenCl/FTextReplacer.hpp"
 
 // Initialize the types
 template <class FReal>
diff --git a/Src/GroupTree/Uniform/FUnifCuda.hpp b/include/GroupTree/Uniform/FUnifCuda.hpp
similarity index 100%
rename from Src/GroupTree/Uniform/FUnifCuda.hpp
rename to include/GroupTree/Uniform/FUnifCuda.hpp
diff --git a/Src/GroupTree/Uniform/FUnifCudaSharedData.hpp b/include/GroupTree/Uniform/FUnifCudaSharedData.hpp
similarity index 77%
rename from Src/GroupTree/Uniform/FUnifCudaSharedData.hpp
rename to include/GroupTree/Uniform/FUnifCudaSharedData.hpp
index 847f487b1370443750c7eef1208fbda632385325..8d4e72a9e94616f5fec5743e1376c6ffba924457 100644
--- a/Src/GroupTree/Uniform/FUnifCudaSharedData.hpp
+++ b/include/GroupTree/Uniform/FUnifCudaSharedData.hpp
@@ -1,10 +1,10 @@
 #ifndef FUNIFCUDASHAREDDATA_HPP
 #define FUNIFCUDASHAREDDATA_HPP
 
-#include "../Cuda/FCudaGlobal.hpp"
-#include "../../Utils/FGlobal.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
-#include "FUnifCudaCellPOD.hpp"
+#include "GroupTree/Cuda/FCudaGlobal.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
+//#include "FUnifCudaCellPOD.hpp"
 
 template <class FReal, int ORDER>
 struct alignas(FStarPUDefaultAlign::StructAlign) FUnifCudaSharedData {
diff --git a/Src/GroupTree/Uniform/FUniformKernel.cl b/include/GroupTree/Uniform/FUniformKernel.cl
similarity index 100%
rename from Src/GroupTree/Uniform/FUniformKernel.cl
rename to include/GroupTree/Uniform/FUniformKernel.cl
diff --git a/Src/GroupTree/Uniform/FUniformOpenCLCode.hpp b/include/GroupTree/Uniform/FUniformOpenCLCode.hpp
similarity index 91%
rename from Src/GroupTree/Uniform/FUniformOpenCLCode.hpp
rename to include/GroupTree/Uniform/FUniformOpenCLCode.hpp
index 4556fa722c755c46fb7be820ff26badfc85a04c5..09e8c00719d318e1cf38f3a46b7289011dee8e0b 100644
--- a/Src/GroupTree/Uniform/FUniformOpenCLCode.hpp
+++ b/include/GroupTree/Uniform/FUniformOpenCLCode.hpp
@@ -2,11 +2,11 @@
 #define FUNIFORMOPENCLCODE_HPP
 
 
-#include "../../Utils/FGlobal.hpp"
-#include "../StarPUUtils/FStarPUDefaultAlign.hpp"
-#include "../OpenCl/FTextReplacer.hpp"
+#include "Utils/FGlobal.hpp"
+#include "GroupTree/StarPUUtils/FStarPUDefaultAlign.hpp"
+#include "GroupTree/OpenCl/FTextReplacer.hpp"
 
-#include "../../Kernels/Uniform/FUnifCell.hpp"
+#include "Kernels/Uniform/FUnifCell.hpp"
 
 // Initialize the types
 template <class FReal, const int ORDER>
diff --git a/Src/Kernels/Chebyshev/FAbstractChebKernel.hpp b/include/Kernels/Chebyshev/FAbstractChebKernel.hpp
similarity index 93%
rename from Src/Kernels/Chebyshev/FAbstractChebKernel.hpp
rename to include/Kernels/Chebyshev/FAbstractChebKernel.hpp
index 2edcfa06c02b00724a91f28ce16b337f55f7963e..23e51fc04b165d3ef5d6cf96c904d21bbb93e531 100644
--- a/Src/Kernels/Chebyshev/FAbstractChebKernel.hpp
+++ b/include/Kernels/Chebyshev/FAbstractChebKernel.hpp
@@ -2,16 +2,16 @@
 #ifndef FABSTRACTCHEBKERNEL_HPP
 #define FABSTRACTCHEBKERNEL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "../../Components/FAbstractKernels.hpp"
+#include "Components/FAbstractKernels.hpp"
 
-#include "../Interpolation/FInterpP2PKernels.hpp"
-#include "./FChebInterpolator.hpp"
+#include "Kernels/Interpolation/FInterpP2PKernels.hpp"
+#include "Kernels/Chebyshev/FChebInterpolator.hpp"
 
-#include "../../Containers/FTreeCoordinate.hpp"
+#include "Containers/FTreeCoordinate.hpp"
 
 /**
  * @author Matthias Messner(matthias.messner@inria.fr)
diff --git a/Src/Kernels/Chebyshev/FChebCell.hpp b/include/Kernels/Chebyshev/FChebCell.hpp
similarity index 100%
rename from Src/Kernels/Chebyshev/FChebCell.hpp
rename to include/Kernels/Chebyshev/FChebCell.hpp
diff --git a/Src/Kernels/Chebyshev/FChebDenseKernel.hpp b/include/Kernels/Chebyshev/FChebDenseKernel.hpp
similarity index 98%
rename from Src/Kernels/Chebyshev/FChebDenseKernel.hpp
rename to include/Kernels/Chebyshev/FChebDenseKernel.hpp
index 6a2d5274914f80ef3c16197a7cd36a3faf38a67c..68f2ef137d6daeb0602e6b54e0309d8c30bab8bb 100644
--- a/Src/Kernels/Chebyshev/FChebDenseKernel.hpp
+++ b/include/Kernels/Chebyshev/FChebDenseKernel.hpp
@@ -3,13 +3,13 @@
 #ifndef FCHEBDENSEKERNEL_HPP
 #define FCHEBDENSEKERNEL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "./FAbstractChebKernel.hpp"
+#include "Kernels/Chebyshev/FAbstractChebKernel.hpp"
 
-#include "./FChebDenseM2LHandler.hpp"
+#include "Kernels/Chebyshev/FChebDenseM2LHandler.hpp"
 
 class FTreeCoordinate;
 
diff --git a/Src/Kernels/Chebyshev/FChebDenseM2LHandler.hpp b/include/Kernels/Chebyshev/FChebDenseM2LHandler.hpp
similarity index 100%
rename from Src/Kernels/Chebyshev/FChebDenseM2LHandler.hpp
rename to include/Kernels/Chebyshev/FChebDenseM2LHandler.hpp
diff --git a/Src/Kernels/Chebyshev/FChebFlopsSymKernel.hpp b/include/Kernels/Chebyshev/FChebFlopsSymKernel.hpp
similarity index 98%
rename from Src/Kernels/Chebyshev/FChebFlopsSymKernel.hpp
rename to include/Kernels/Chebyshev/FChebFlopsSymKernel.hpp
index ef1b688ed31ba81450d12314445c25d4b63cdb70..6e98f1f44b9e0f3a99f4db366d30c2c69b74e58f 100644
--- a/Src/Kernels/Chebyshev/FChebFlopsSymKernel.hpp
+++ b/include/Kernels/Chebyshev/FChebFlopsSymKernel.hpp
@@ -4,14 +4,14 @@
 
 #include <stdexcept>
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "../../Components/FAbstractKernels.hpp"
+#include "Components/FAbstractKernels.hpp"
 
-#include "./FChebInterpolator.hpp"
-#include "../Interpolation/FInterpSymmetries.hpp"
+#include "Kernels/Chebyshev/FChebInterpolator.hpp"
+#include "Kernels/Interpolation/FInterpSymmetries.hpp"
 
 class FTreeCoordinate;
 
diff --git a/Src/Kernels/Chebyshev/FChebInterpolator.hpp b/include/Kernels/Chebyshev/FChebInterpolator.hpp
similarity index 100%
rename from Src/Kernels/Chebyshev/FChebInterpolator.hpp
rename to include/Kernels/Chebyshev/FChebInterpolator.hpp
diff --git a/Src/Kernels/Chebyshev/FChebKernel.hpp b/include/Kernels/Chebyshev/FChebKernel.hpp
similarity index 98%
rename from Src/Kernels/Chebyshev/FChebKernel.hpp
rename to include/Kernels/Chebyshev/FChebKernel.hpp
index 5b3343c2b81fda5bcc86b028865ee01652989240..56d9a58faad883a61b26534643c5f90f277a98d3 100644
--- a/Src/Kernels/Chebyshev/FChebKernel.hpp
+++ b/include/Kernels/Chebyshev/FChebKernel.hpp
@@ -2,13 +2,13 @@
 #ifndef FCHEBKERNEL_HPP
 #define FCHEBKERNEL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "./FAbstractChebKernel.hpp"
+#include "Kernels/Chebyshev/FAbstractChebKernel.hpp"
 
-#include "./FChebM2LHandler.hpp"
+#include "Kernels/Chebyshev/FChebM2LHandler.hpp"
 
 class FTreeCoordinate;
 
diff --git a/Src/Kernels/Chebyshev/FChebM2LHandler.hpp b/include/Kernels/Chebyshev/FChebM2LHandler.hpp
similarity index 100%
rename from Src/Kernels/Chebyshev/FChebM2LHandler.hpp
rename to include/Kernels/Chebyshev/FChebM2LHandler.hpp
diff --git a/Src/Kernels/Chebyshev/FChebRoots.hpp b/include/Kernels/Chebyshev/FChebRoots.hpp
similarity index 99%
rename from Src/Kernels/Chebyshev/FChebRoots.hpp
rename to include/Kernels/Chebyshev/FChebRoots.hpp
index 157459e50fbef42bb4cd33e26e49a37a17e025e8..f1ecfd4a75e4203ac30dbcc22c1ca5a17264c580 100644
--- a/Src/Kernels/Chebyshev/FChebRoots.hpp
+++ b/include/Kernels/Chebyshev/FChebRoots.hpp
@@ -7,7 +7,7 @@
 #include <cassert>
 #include <array>
 
-#include "../../Utils/FNoCopyable.hpp"
+#include "Utils/FNoCopyable.hpp"
 
 
 /**
diff --git a/Src/Kernels/Chebyshev/FChebSymKernel.hpp b/include/Kernels/Chebyshev/FChebSymKernel.hpp
similarity index 100%
rename from Src/Kernels/Chebyshev/FChebSymKernel.hpp
rename to include/Kernels/Chebyshev/FChebSymKernel.hpp
diff --git a/Src/Kernels/Chebyshev/FChebSymM2LHandler.hpp b/include/Kernels/Chebyshev/FChebSymM2LHandler.hpp
similarity index 100%
rename from Src/Kernels/Chebyshev/FChebSymM2LHandler.hpp
rename to include/Kernels/Chebyshev/FChebSymM2LHandler.hpp
diff --git a/Src/Kernels/Chebyshev/FChebTensor.hpp b/include/Kernels/Chebyshev/FChebTensor.hpp
similarity index 92%
rename from Src/Kernels/Chebyshev/FChebTensor.hpp
rename to include/Kernels/Chebyshev/FChebTensor.hpp
index 5abd6cd0820e67ceac36ac466eeaf383c61b6a48..0d16d8d01798ddb92f4a3debfa28d6b4ca68883d 100644
--- a/Src/Kernels/Chebyshev/FChebTensor.hpp
+++ b/include/Kernels/Chebyshev/FChebTensor.hpp
@@ -2,10 +2,10 @@
 #ifndef FCHEBTENSOR_HPP
 #define FCHEBTENSOR_HPP
 
-#include "../../Utils/FMath.hpp"
+#include "Utils/FMath.hpp"
 
-#include "./FChebRoots.hpp"
-#include "./../Interpolation/FInterpTensor.hpp"
+#include "Kernels/Chebyshev/FChebRoots.hpp"
+#include "Kernels/Interpolation/FInterpTensor.hpp"
 
 
 /**
diff --git a/Src/Kernels/Chebyshev/FChebTensorialKernel.hpp b/include/Kernels/Chebyshev/FChebTensorialKernel.hpp
similarity index 98%
rename from Src/Kernels/Chebyshev/FChebTensorialKernel.hpp
rename to include/Kernels/Chebyshev/FChebTensorialKernel.hpp
index 283729e86d67d973a3ae8cbfd37b0f30e23e3eae..648c6778ad909cd42e54ce17ef8c3aa85d0ea6f8 100644
--- a/Src/Kernels/Chebyshev/FChebTensorialKernel.hpp
+++ b/include/Kernels/Chebyshev/FChebTensorialKernel.hpp
@@ -2,12 +2,12 @@
 #ifndef FCHEBTENSORIALKERNEL_HPP
 #define FCHEBTENSORIALKERNEL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "./FAbstractChebKernel.hpp"
-#include "./FChebTensorialM2LHandler.hpp" //PB: temporary version
+#include "Kernels/Chebyshev/FAbstractChebKernel.hpp"
+#include "Kernels/Chebyshev/FChebTensorialM2LHandler.hpp" //PB: temporary version
 
 class FTreeCoordinate;
 
diff --git a/Src/Kernels/Chebyshev/FChebTensorialM2LHandler.hpp b/include/Kernels/Chebyshev/FChebTensorialM2LHandler.hpp
similarity index 99%
rename from Src/Kernels/Chebyshev/FChebTensorialM2LHandler.hpp
rename to include/Kernels/Chebyshev/FChebTensorialM2LHandler.hpp
index bc3eea9adb91b2af53af58cd483976c178b99db4..2dd3d55eaad7a1f535b0d83b28a0c5af335c482d 100644
--- a/Src/Kernels/Chebyshev/FChebTensorialM2LHandler.hpp
+++ b/include/Kernels/Chebyshev/FChebTensorialM2LHandler.hpp
@@ -9,10 +9,10 @@
 #include <fstream>
 #include <typeinfo>
 
-#include "../../Utils/FBlas.hpp"
-#include "../../Utils/FTic.hpp"
+#include "Utils/FBlas.hpp"
+#include "Utils/FTic.hpp"
 
-#include "./FChebTensor.hpp"
+#include "Kernels/Chebyshev/FChebTensor.hpp"
 
 /**
  * Computes and compresses all \f$K_t\f$.
diff --git a/Src/Kernels/FKernelConcepts.hpp b/include/Kernels/FKernelConcepts.hpp
similarity index 100%
rename from Src/Kernels/FKernelConcepts.hpp
rename to include/Kernels/FKernelConcepts.hpp
diff --git a/Src/Kernels/Generic/FGenericData.hpp b/include/Kernels/Generic/FGenericData.hpp
similarity index 100%
rename from Src/Kernels/Generic/FGenericData.hpp
rename to include/Kernels/Generic/FGenericData.hpp
diff --git a/Src/Kernels/Interpolation/FCutOffKernel.hpp b/include/Kernels/Interpolation/FCutOffKernel.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FCutOffKernel.hpp
rename to include/Kernels/Interpolation/FCutOffKernel.hpp
diff --git a/Src/Kernels/Interpolation/FInterpCell.hpp b/include/Kernels/Interpolation/FInterpCell.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpCell.hpp
rename to include/Kernels/Interpolation/FInterpCell.hpp
diff --git a/Src/Kernels/Interpolation/FInterpMapping.hpp b/include/Kernels/Interpolation/FInterpMapping.hpp
similarity index 98%
rename from Src/Kernels/Interpolation/FInterpMapping.hpp
rename to include/Kernels/Interpolation/FInterpMapping.hpp
index e2b07da4d198b751bb492c4f51bd76b677885ac4..eec652bb72fb9e730b6c4058cdfef2507e43ac0b 100644
--- a/Src/Kernels/Interpolation/FInterpMapping.hpp
+++ b/include/Kernels/Interpolation/FInterpMapping.hpp
@@ -5,8 +5,8 @@
 #include <iostream>
 #include <limits>
 
-#include "../../Utils/FNoCopyable.hpp"
-#include "../../Utils/FPoint.hpp"
+#include "Utils/FNoCopyable.hpp"
+#include "Utils/FPoint.hpp"
 
 /**
  * @author Matthias Messner (matthias.matthias@inria.fr)
diff --git a/Src/Kernels/Interpolation/FInterpMatrixKernel.hpp b/include/Kernels/Interpolation/FInterpMatrixKernel.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpMatrixKernel.hpp
rename to include/Kernels/Interpolation/FInterpMatrixKernel.hpp
diff --git a/Src/Kernels/Interpolation/FInterpMatrixKernel_Covariance.hpp b/include/Kernels/Interpolation/FInterpMatrixKernel_Covariance.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpMatrixKernel_Covariance.hpp
rename to include/Kernels/Interpolation/FInterpMatrixKernel_Covariance.hpp
diff --git a/Src/Kernels/Interpolation/FInterpMatrixKernel_TensorialInteractions.hpp b/include/Kernels/Interpolation/FInterpMatrixKernel_TensorialInteractions.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpMatrixKernel_TensorialInteractions.hpp
rename to include/Kernels/Interpolation/FInterpMatrixKernel_TensorialInteractions.hpp
diff --git a/Src/Kernels/Interpolation/FInterpP2PKernels.hpp b/include/Kernels/Interpolation/FInterpP2PKernels.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpP2PKernels.hpp
rename to include/Kernels/Interpolation/FInterpP2PKernels.hpp
diff --git a/Src/Kernels/Interpolation/FInterpSymmetries.hpp b/include/Kernels/Interpolation/FInterpSymmetries.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpSymmetries.hpp
rename to include/Kernels/Interpolation/FInterpSymmetries.hpp
diff --git a/Src/Kernels/Interpolation/FInterpTensor.hpp b/include/Kernels/Interpolation/FInterpTensor.hpp
similarity index 100%
rename from Src/Kernels/Interpolation/FInterpTensor.hpp
rename to include/Kernels/Interpolation/FInterpTensor.hpp
diff --git a/Src/Kernels/P2P/FP2P.hpp b/include/Kernels/P2P/FP2P.hpp
similarity index 100%
rename from Src/Kernels/P2P/FP2P.hpp
rename to include/Kernels/P2P/FP2P.hpp
diff --git a/Src/Kernels/P2P/FP2PMultiRhs.hpp b/include/Kernels/P2P/FP2PMultiRhs.hpp
similarity index 100%
rename from Src/Kernels/P2P/FP2PMultiRhs.hpp
rename to include/Kernels/P2P/FP2PMultiRhs.hpp
diff --git a/Src/Kernels/P2P/FP2PParticleContainer.hpp b/include/Kernels/P2P/FP2PParticleContainer.hpp
similarity index 100%
rename from Src/Kernels/P2P/FP2PParticleContainer.hpp
rename to include/Kernels/P2P/FP2PParticleContainer.hpp
diff --git a/Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp b/include/Kernels/P2P/FP2PParticleContainerIndexed.hpp
similarity index 100%
rename from Src/Kernels/P2P/FP2PParticleContainerIndexed.hpp
rename to include/Kernels/P2P/FP2PParticleContainerIndexed.hpp
diff --git a/Src/Kernels/P2P/FP2PR.hpp b/include/Kernels/P2P/FP2PR.hpp
similarity index 100%
rename from Src/Kernels/P2P/FP2PR.hpp
rename to include/Kernels/P2P/FP2PR.hpp
diff --git a/Src/Kernels/P2P/FP2PTensorialKij.hpp b/include/Kernels/P2P/FP2PTensorialKij.hpp
similarity index 100%
rename from Src/Kernels/P2P/FP2PTensorialKij.hpp
rename to include/Kernels/P2P/FP2PTensorialKij.hpp
diff --git a/Src/Kernels/Rotation/FRotationCell.hpp b/include/Kernels/Rotation/FRotationCell.hpp
similarity index 96%
rename from Src/Kernels/Rotation/FRotationCell.hpp
rename to include/Kernels/Rotation/FRotationCell.hpp
index 6936d6c9f9b93b2f13f397b78fbe974bb7d384b1..8f65257f94594dc11df32b5aa8d932fcf61f23fd 100644
--- a/Src/Kernels/Rotation/FRotationCell.hpp
+++ b/include/Kernels/Rotation/FRotationCell.hpp
@@ -2,12 +2,12 @@
 #ifndef FROTATIONCELL_HPP
 #define FROTATIONCELL_HPP
 
-#include "../../Utils/FComplex.hpp"
-#include "../../Utils/FMemUtils.hpp"
+#include "Utils/FComplex.hpp"
+#include "Utils/FMemUtils.hpp"
 
-#include "../../Extensions/FExtendCellType.hpp"
+#include "Extensions/FExtendCellType.hpp"
 
-#include "../../Components/FBasicCell.hpp"
+#include "Components/FBasicCell.hpp"
 
 
 /** This class is a cell used for the rotation based kernel
diff --git a/Src/Kernels/Rotation/FRotationKernel.hpp b/include/Kernels/Rotation/FRotationKernel.hpp
similarity index 100%
rename from Src/Kernels/Rotation/FRotationKernel.hpp
rename to include/Kernels/Rotation/FRotationKernel.hpp
diff --git a/Src/Kernels/Rotation/FRotationOriginalKernel.hpp b/include/Kernels/Rotation/FRotationOriginalKernel.hpp
similarity index 99%
rename from Src/Kernels/Rotation/FRotationOriginalKernel.hpp
rename to include/Kernels/Rotation/FRotationOriginalKernel.hpp
index 0273bb605ee2670dbd8792fbd58983e7f4fc676f..2fe05bc64d856f8469934f1df4790e8e0c893d8b 100644
--- a/Src/Kernels/Rotation/FRotationOriginalKernel.hpp
+++ b/include/Kernels/Rotation/FRotationOriginalKernel.hpp
@@ -2,13 +2,13 @@
 #ifndef FROTATIONORIGINALKERNEL_HPP
 #define FROTATIONORIGINALKERNEL_HPP
 
-#include "../../Components/FAbstractKernels.hpp"
-#include "../../Utils/FSmartPointer.hpp"
-#include "../../Utils/FComplex.hpp"
-#include "../../Utils/FMemUtils.hpp"
-#include "../../Utils/FSpherical.hpp"
+#include "Components/FAbstractKernels.hpp"
+#include "Utils/FSmartPointer.hpp"
+#include "Utils/FComplex.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FSpherical.hpp"
 
-#include "../P2P/FP2PR.hpp"
+#include "Kernels/P2P/FP2PR.hpp"
 
 /**
 * @author Berenger Bramas (berenger.bramas@inria.fr)
diff --git a/Src/Kernels/Rotation/FRotationParticleContainer.hpp b/include/Kernels/Rotation/FRotationParticleContainer.hpp
similarity index 95%
rename from Src/Kernels/Rotation/FRotationParticleContainer.hpp
rename to include/Kernels/Rotation/FRotationParticleContainer.hpp
index 649a73adf16ebff8fdc52129aeb221d237e0cb57..577cd77934582bc8feb50b1d6912c731347761c1 100644
--- a/Src/Kernels/Rotation/FRotationParticleContainer.hpp
+++ b/include/Kernels/Rotation/FRotationParticleContainer.hpp
@@ -3,7 +3,7 @@
 #define FROTATIONLPARTICLECONTAINER_HPP
 
 
-#include "../../Components/FBasicParticleContainer.hpp"
+#include "Components/FBasicParticleContainer.hpp"
 
 template <class FReal>
 class FRotationParticleContainer : public FBasicParticleContainer<FReal, 5> {
diff --git a/Src/Kernels/Spherical/FAbstractSphericalKernel.hpp b/include/Kernels/Spherical/FAbstractSphericalKernel.hpp
similarity index 99%
rename from Src/Kernels/Spherical/FAbstractSphericalKernel.hpp
rename to include/Kernels/Spherical/FAbstractSphericalKernel.hpp
index df1d8be63b464bd9ae5537dbd4c6e3102538c395..710664377393dcd9be1b65c3dda15602cf76d3a6 100644
--- a/Src/Kernels/Spherical/FAbstractSphericalKernel.hpp
+++ b/include/Kernels/Spherical/FAbstractSphericalKernel.hpp
@@ -3,18 +3,18 @@
 #define FABSTRACTSPHERICALKERNEL_HPP
 
 #include <iostream>
-#include "../../Components/FAbstractKernels.hpp"
+#include "Components/FAbstractKernels.hpp"
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FMemUtils.hpp"
-#include "../../Utils/FSmartPointer.hpp"
-#include "../../Utils/FPoint.hpp"
-#include "../../Utils/FAssert.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FSmartPointer.hpp"
+#include "Utils/FPoint.hpp"
+#include "Utils/FAssert.hpp"
 
-#include "../../Containers/FTreeCoordinate.hpp"
+#include "Containers/FTreeCoordinate.hpp"
 
-#include "../P2P/FP2PR.hpp"
+#include "Kernels/P2P/FP2PR.hpp"
 
 #include "FHarmonic.hpp"
 
diff --git a/Src/Kernels/Spherical/FHarmonic.hpp b/include/Kernels/Spherical/FHarmonic.hpp
similarity index 98%
rename from Src/Kernels/Spherical/FHarmonic.hpp
rename to include/Kernels/Spherical/FHarmonic.hpp
index bab498f0174f8612fc05607f5f44d177f67ec0b6..aea8ae64cb884d6fbe58ae22165c41c997fb8d8b 100644
--- a/Src/Kernels/Spherical/FHarmonic.hpp
+++ b/include/Kernels/Spherical/FHarmonic.hpp
@@ -2,10 +2,10 @@
 #ifndef FHARMONIC_HPP
 #define FHARMONIC_HPP
 
-#include "../../Utils/FGlobal.hpp"
-#include "../../Utils/FComplex.hpp"
-#include "../../Utils/FSpherical.hpp"
-#include "../../Utils/FNoCopyable.hpp"
+#include "Utils/FGlobal.hpp"
+#include "Utils/FComplex.hpp"
+#include "Utils/FSpherical.hpp"
+#include "Utils/FNoCopyable.hpp"
 
 
 /** This class compute the spherical harmonic.
diff --git a/Src/Kernels/Spherical/FSphericalBlasKernel.hpp b/include/Kernels/Spherical/FSphericalBlasKernel.hpp
similarity index 100%
rename from Src/Kernels/Spherical/FSphericalBlasKernel.hpp
rename to include/Kernels/Spherical/FSphericalBlasKernel.hpp
diff --git a/Src/Kernels/Spherical/FSphericalBlockBlasKernel.hpp b/include/Kernels/Spherical/FSphericalBlockBlasKernel.hpp
similarity index 99%
rename from Src/Kernels/Spherical/FSphericalBlockBlasKernel.hpp
rename to include/Kernels/Spherical/FSphericalBlockBlasKernel.hpp
index 134af36965146b8a8d981b641dcf01bb30f68517..ec3d19d67c3e95d472d823917a65b573ec0b05d1 100644
--- a/Src/Kernels/Spherical/FSphericalBlockBlasKernel.hpp
+++ b/include/Kernels/Spherical/FSphericalBlockBlasKernel.hpp
@@ -4,9 +4,9 @@
 
 #include "FAbstractSphericalKernel.hpp"
 
-#include "../../Utils/FMemUtils.hpp"
-#include "../../Utils/FBlas.hpp"
-#include "../../Containers/FVector.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FBlas.hpp"
+#include "Containers/FVector.hpp"
 
 /**
 * @author Berenger Bramas (berenger.bramas@inria.fr)
diff --git a/Src/Kernels/Spherical/FSphericalCell.hpp b/include/Kernels/Spherical/FSphericalCell.hpp
similarity index 97%
rename from Src/Kernels/Spherical/FSphericalCell.hpp
rename to include/Kernels/Spherical/FSphericalCell.hpp
index ea925e6db9355991929264fe89bcfc2d8c551f06..0250b550231d51972c00613604ebfc8d9fae6b13 100644
--- a/Src/Kernels/Spherical/FSphericalCell.hpp
+++ b/include/Kernels/Spherical/FSphericalCell.hpp
@@ -4,12 +4,12 @@
 
 #include <algorithm>
 
-#include "../../Utils/FComplex.hpp"
-#include "../../Utils/FMemUtils.hpp"
+#include "Utils/FComplex.hpp"
+#include "Utils/FMemUtils.hpp"
 
-#include "../../Extensions/FExtendCellType.hpp"
+#include "Extensions/FExtendCellType.hpp"
 
-#include "../../Components/FBasicCell.hpp"
+#include "Components/FBasicCell.hpp"
 
 /**
 * @author Berenger Bramas (berenger.bramas@inria.fr)
diff --git a/Src/Kernels/Spherical/FSphericalKernel.hpp b/include/Kernels/Spherical/FSphericalKernel.hpp
similarity index 99%
rename from Src/Kernels/Spherical/FSphericalKernel.hpp
rename to include/Kernels/Spherical/FSphericalKernel.hpp
index 01b34d7b653eafbc93bd79eefeed43dc3f5e22be..3f7c28200a60128df501f9f06f6289b199155ace 100644
--- a/Src/Kernels/Spherical/FSphericalKernel.hpp
+++ b/include/Kernels/Spherical/FSphericalKernel.hpp
@@ -3,7 +3,7 @@
 #define FSPHERICALKERNEL_HPP
 
 #include "FAbstractSphericalKernel.hpp"
-#include "../../Utils/FMemUtils.hpp"
+#include "Utils/FMemUtils.hpp"
 
 /**
 * @author Berenger Bramas (berenger.bramas@inria.fr)
diff --git a/Src/Kernels/Spherical/FSphericalRotationKernel.hpp b/include/Kernels/Spherical/FSphericalRotationKernel.hpp
similarity index 100%
rename from Src/Kernels/Spherical/FSphericalRotationKernel.hpp
rename to include/Kernels/Spherical/FSphericalRotationKernel.hpp
diff --git a/Src/Kernels/Taylor/FTaylorCell.hpp b/include/Kernels/Taylor/FTaylorCell.hpp
similarity index 96%
rename from Src/Kernels/Taylor/FTaylorCell.hpp
rename to include/Kernels/Taylor/FTaylorCell.hpp
index b17e10a241c6b861ab4de9deee0fb8cd8319ac5d..570c710cf9a5a836bc7d599abf0b9635230a5de6 100644
--- a/Src/Kernels/Taylor/FTaylorCell.hpp
+++ b/include/Kernels/Taylor/FTaylorCell.hpp
@@ -2,10 +2,10 @@
 #ifndef FTAYLORCELL_HPP
 #define FTAYLORCELL_HPP
 
-#include "../../Components/FBasicCell.hpp"
-#include "../../Containers/FVector.hpp"
-#include "../../Utils/FMemUtils.hpp"
-#include "../../Extensions/FExtendCellType.hpp"
+#include "Components/FBasicCell.hpp"
+#include "Containers/FVector.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Extensions/FExtendCellType.hpp"
 
 /**
  *@author Cyrille Piacibello
diff --git a/Src/Kernels/Taylor/FTaylorFlopsKernel.hpp b/include/Kernels/Taylor/FTaylorFlopsKernel.hpp
similarity index 100%
rename from Src/Kernels/Taylor/FTaylorFlopsKernel.hpp
rename to include/Kernels/Taylor/FTaylorFlopsKernel.hpp
diff --git a/Src/Kernels/Taylor/FTaylorKernel.hpp b/include/Kernels/Taylor/FTaylorKernel.hpp
similarity index 100%
rename from Src/Kernels/Taylor/FTaylorKernel.hpp
rename to include/Kernels/Taylor/FTaylorKernel.hpp
diff --git a/Src/Kernels/Taylor/FTaylorKernelSimple.hpp b/include/Kernels/Taylor/FTaylorKernelSimple.hpp
similarity index 99%
rename from Src/Kernels/Taylor/FTaylorKernelSimple.hpp
rename to include/Kernels/Taylor/FTaylorKernelSimple.hpp
index c849e281c016b67d6349f8d3cee1dfe8fa4990ed..0b5e8924ac044f23f363a09dbf524dbedfd0b7e4 100644
--- a/Src/Kernels/Taylor/FTaylorKernelSimple.hpp
+++ b/include/Kernels/Taylor/FTaylorKernelSimple.hpp
@@ -2,11 +2,11 @@
 #ifndef FTAYLORKERNEL_HPP
 #define FTAYLORKERNEL_HPP
 
-#include "../../Components/FAbstractKernels.hpp"
-#include "../../Utils/FMemUtils.hpp"
-#include "../../Utils/FLog.hpp"
+#include "Components/FAbstractKernels.hpp"
+#include "Utils/FMemUtils.hpp"
+#include "Utils/FLog.hpp"
 
-#include "../P2P/FP2PR.hpp"
+#include "Kernels/P2P/FP2PR.hpp"
 
 /**
  * @author Cyrille Piacibello
diff --git a/Src/Kernels/Uniform/FAbstractUnifKernel.hpp b/include/Kernels/Uniform/FAbstractUnifKernel.hpp
similarity index 100%
rename from Src/Kernels/Uniform/FAbstractUnifKernel.hpp
rename to include/Kernels/Uniform/FAbstractUnifKernel.hpp
diff --git a/Src/Kernels/Uniform/FUnifCell.hpp b/include/Kernels/Uniform/FUnifCell.hpp
similarity index 100%
rename from Src/Kernels/Uniform/FUnifCell.hpp
rename to include/Kernels/Uniform/FUnifCell.hpp
diff --git a/Src/Kernels/Uniform/FUnifDenseKernel.hpp b/include/Kernels/Uniform/FUnifDenseKernel.hpp
similarity index 97%
rename from Src/Kernels/Uniform/FUnifDenseKernel.hpp
rename to include/Kernels/Uniform/FUnifDenseKernel.hpp
index 7de7b4cbe851256305543dd7b64d92e2502461cd..a6de56ff4604c8c81951f8bc7d801e496c27ddf8 100644
--- a/Src/Kernels/Uniform/FUnifDenseKernel.hpp
+++ b/include/Kernels/Uniform/FUnifDenseKernel.hpp
@@ -4,12 +4,12 @@
 #ifndef FUNIFDENSEKERNEL_HPP
 #define FUNIFDENSEKERNEL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "./FAbstractUnifKernel.hpp"
-#include "./FUnifM2LHandler.hpp"
+#include "Kernels/Uniform/FAbstractUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifM2LHandler.hpp"
 
 class FTreeCoordinate;
 
diff --git a/Src/Kernels/Uniform/FUnifInterpolator.hpp b/include/Kernels/Uniform/FUnifInterpolator.hpp
similarity index 100%
rename from Src/Kernels/Uniform/FUnifInterpolator.hpp
rename to include/Kernels/Uniform/FUnifInterpolator.hpp
diff --git a/Src/Kernels/Uniform/FUnifKernel.hpp b/include/Kernels/Uniform/FUnifKernel.hpp
similarity index 100%
rename from Src/Kernels/Uniform/FUnifKernel.hpp
rename to include/Kernels/Uniform/FUnifKernel.hpp
diff --git a/Src/Kernels/Uniform/FUnifM2LHandler.hpp b/include/Kernels/Uniform/FUnifM2LHandler.hpp
similarity index 98%
rename from Src/Kernels/Uniform/FUnifM2LHandler.hpp
rename to include/Kernels/Uniform/FUnifM2LHandler.hpp
index eebbdae48ed76d1446c2c5ac9bdea5f43bfaac6c..9be70a4ea2cff65fb45671ea19af11826024b217 100644
--- a/Src/Kernels/Uniform/FUnifM2LHandler.hpp
+++ b/include/Kernels/Uniform/FUnifM2LHandler.hpp
@@ -277,12 +277,12 @@ public:
     {
         // Perform entrywise product manually
         for (unsigned int j=0; j<opt_rc; ++j){
-//            FX[j].addMul(newFComplex<FReal>(scale*FC[idx*opt_rc + j].real(),
-//                                  scale*FC[idx*opt_rc + j].imag()),
-//                         FY[j]);
-            FX[j] += stdComplex<FReal>(scale*FC[idx*opt_rc + j].real(),
-                                  scale*FC[idx*opt_rc + j].imag())
-                         *FY[j];
+                    FX[j].addMul(stdComplex<FReal>(scale*FC[idx*opt_rc + j].real(),
+                                  scale*FC[idx*opt_rc + j].imag()),
+                         FY[j]);
+//            FX[j] += stdComplex<FReal>(scale*FC[idx*opt_rc + j].real(),
+//                                  scale*FC[idx*opt_rc + j].imag())
+//                         *FY[j];
         }
     }
 
@@ -463,8 +463,8 @@ public:
     {
         // Perform entrywise product manually
         for (unsigned int j=0; j<opt_rc; ++j){
-  //          FX[j].addMul(FC[TreeLevel][idx*opt_rc + j],FY[j]);
-            FX[j] += (FC[TreeLevel][idx*opt_rc + j]*FY[j]);
+            FX[j].addMul(FC[TreeLevel][idx*opt_rc + j],FY[j]);
+  //          FX[j] += (FC[TreeLevel][idx*opt_rc + j]*FY[j]);
         }
     }
 
diff --git a/Src/Kernels/Uniform/FUnifRoots.hpp b/include/Kernels/Uniform/FUnifRoots.hpp
similarity index 99%
rename from Src/Kernels/Uniform/FUnifRoots.hpp
rename to include/Kernels/Uniform/FUnifRoots.hpp
index 1e9bd18502486bb389caa84679d1246c4a1294ad..9e1c0aeef21c29dba4e9b41050a8670f03e8ba81 100644
--- a/Src/Kernels/Uniform/FUnifRoots.hpp
+++ b/include/Kernels/Uniform/FUnifRoots.hpp
@@ -8,8 +8,8 @@
 #include <limits>
 #include <cassert>
 
-#include "../../Utils/FNoCopyable.hpp"
-#include "../../Utils/FMath.hpp"
+#include "Utils/FNoCopyable.hpp"
+#include "Utils/FMath.hpp"
 
 #include <array>
 
diff --git a/Src/Kernels/Uniform/FUnifSymM2LHandler.hpp b/include/Kernels/Uniform/FUnifSymM2LHandler.hpp
similarity index 98%
rename from Src/Kernels/Uniform/FUnifSymM2LHandler.hpp
rename to include/Kernels/Uniform/FUnifSymM2LHandler.hpp
index 4f7d06b4ec9f83b8c1287a6ce4f05b57cbef643b..9150de79f80c641beb84d5c2f2e405c553b0df4a 100644
--- a/Src/Kernels/Uniform/FUnifSymM2LHandler.hpp
+++ b/include/Kernels/Uniform/FUnifSymM2LHandler.hpp
@@ -6,14 +6,14 @@
 
 #include <climits>
 
-#include "../../Utils/FBlas.hpp"
-#include "../../Utils/FDft.hpp"
+#include "Utils/FBlas.hpp"
+#include "Utils/FDft.hpp"
 
-#include "../../Utils/FComplex.hpp"
+#include "Utils/FComplex.hpp"
 
-#include "./FUnifTensor.hpp"
-#include "../Interpolation/FInterpSymmetries.hpp"
-#include "./FUnifM2LHandler.hpp"
+#include "Kernels/Uniform/FUnifTensor.hpp"
+#include "Kernels/Interpolation/FInterpSymmetries.hpp"
+#include "Kernels/Uniform/FUnifM2LHandler.hpp"
 
 /**
  * @author Pierre Blanchard (pierre.blanchard@inria.fr)
diff --git a/Src/Kernels/Uniform/FUnifTensor.hpp b/include/Kernels/Uniform/FUnifTensor.hpp
similarity index 100%
rename from Src/Kernels/Uniform/FUnifTensor.hpp
rename to include/Kernels/Uniform/FUnifTensor.hpp
diff --git a/Src/Kernels/Uniform/FUnifTensorialKernel.hpp b/include/Kernels/Uniform/FUnifTensorialKernel.hpp
similarity index 98%
rename from Src/Kernels/Uniform/FUnifTensorialKernel.hpp
rename to include/Kernels/Uniform/FUnifTensorialKernel.hpp
index b206937f6452a25bc1723cd919eda98587e4bc7e..4374b035a77472f352a91a794ea50debfb71c54e 100644
--- a/Src/Kernels/Uniform/FUnifTensorialKernel.hpp
+++ b/include/Kernels/Uniform/FUnifTensorialKernel.hpp
@@ -4,13 +4,13 @@
 #ifndef FUNIFTENSORIALKERNEL_HPP
 #define FUNIFTENSORIALKERNEL_HPP
 
-#include "../../Utils/FGlobal.hpp"
+#include "Utils/FGlobal.hpp"
 
-#include "../../Utils/FSmartPointer.hpp"
+#include "Utils/FSmartPointer.hpp"
 
-#include "./FAbstractUnifKernel.hpp"
-#include "./FUnifM2LHandler.hpp"
-#include "./FUnifTensorialM2LHandler.hpp" //PB: temporary version
+#include "Kernels/Uniform/FAbstractUnifKernel.hpp"
+#include "Kernels/Uniform/FUnifM2LHandler.hpp"
+#include "Kernels/Uniform/FUnifTensorialM2LHandler.hpp" //PB: temporary version
 
 class FTreeCoordinate;
 
diff --git a/Src/Kernels/Uniform/FUnifTensorialM2LHandler.hpp b/include/Kernels/Uniform/FUnifTensorialM2LHandler.hpp
similarity index 99%
rename from Src/Kernels/Uniform/FUnifTensorialM2LHandler.hpp
rename to include/Kernels/Uniform/FUnifTensorialM2LHandler.hpp
index 64fbd11ebd54bb0654f24a6c3873c90d224cff1c..d0b8dc255438d9d1eff565782feabbd5337b5968 100644
--- a/Src/Kernels/Uniform/FUnifTensorialM2LHandler.hpp
+++ b/include/Kernels/Uniform/FUnifTensorialM2LHandler.hpp
@@ -502,8 +502,8 @@ public:
     {
         // Perform entrywise product manually
         for (unsigned int j=0; j<opt_rc; ++j){
-//           FX[j].addMul(FC[TreeLevel][d][idx*opt_rc + j], FY[j]);
-            FX[j] += (FC[TreeLevel][d][idx*opt_rc + j]*FY[j]);
+           FX[j].addMul(FC[TreeLevel][d][idx*opt_rc + j], FY[j]);
+//            FX[j] += (FC[TreeLevel][d][idx*opt_rc + j]*FY[j]);
         }
 
     }
diff --git a/Src/ScalFmmConfig.h.cmake b/include/ScalFmmConfig.h.cmake
similarity index 100%
rename from Src/ScalFmmConfig.h.cmake
rename to include/ScalFmmConfig.h.cmake
diff --git a/Src/Utils/FAbstractBalanceAlgorithm.hpp b/include/Utils/FAbstractBalanceAlgorithm.hpp
similarity index 100%
rename from Src/Utils/FAbstractBalanceAlgorithm.hpp
rename to include/Utils/FAbstractBalanceAlgorithm.hpp
diff --git a/Src/Utils/FAca.hpp b/include/Utils/FAca.hpp
similarity index 100%
rename from Src/Utils/FAca.hpp
rename to include/Utils/FAca.hpp
diff --git a/Src/Utils/FAlgorithmTimers.hpp b/include/Utils/FAlgorithmTimers.hpp
similarity index 100%
rename from Src/Utils/FAlgorithmTimers.hpp
rename to include/Utils/FAlgorithmTimers.hpp
diff --git a/Src/Utils/FAlignedAllocator.hpp b/include/Utils/FAlignedAllocator.hpp
similarity index 100%
rename from Src/Utils/FAlignedAllocator.hpp
rename to include/Utils/FAlignedAllocator.hpp
diff --git a/Src/Utils/FAlignedMemory.hpp b/include/Utils/FAlignedMemory.hpp
similarity index 100%
rename from Src/Utils/FAlignedMemory.hpp
rename to include/Utils/FAlignedMemory.hpp
diff --git a/Src/Utils/FAssert.hpp b/include/Utils/FAssert.hpp
similarity index 100%
rename from Src/Utils/FAssert.hpp
rename to include/Utils/FAssert.hpp
diff --git a/Src/Utils/FBinding.hpp b/include/Utils/FBinding.hpp
similarity index 100%
rename from Src/Utils/FBinding.hpp
rename to include/Utils/FBinding.hpp
diff --git a/Src/Utils/FBitonicSort.hpp b/include/Utils/FBitonicSort.hpp
similarity index 100%
rename from Src/Utils/FBitonicSort.hpp
rename to include/Utils/FBitonicSort.hpp
diff --git a/Src/Utils/FBlas.hpp b/include/Utils/FBlas.hpp
similarity index 100%
rename from Src/Utils/FBlas.hpp
rename to include/Utils/FBlas.hpp
diff --git a/Src/Utils/FCompareResults.hpp b/include/Utils/FCompareResults.hpp
similarity index 100%
rename from Src/Utils/FCompareResults.hpp
rename to include/Utils/FCompareResults.hpp
diff --git a/Src/Utils/FComplex.hpp b/include/Utils/FComplex.hpp
similarity index 100%
rename from Src/Utils/FComplex.hpp
rename to include/Utils/FComplex.hpp
diff --git a/Src/Utils/FConstFuncs.hpp b/include/Utils/FConstFuncs.hpp
similarity index 100%
rename from Src/Utils/FConstFuncs.hpp
rename to include/Utils/FConstFuncs.hpp
diff --git a/Src/Utils/FDft.hpp b/include/Utils/FDft.hpp
similarity index 99%
rename from Src/Utils/FDft.hpp
rename to include/Utils/FDft.hpp
index 967630bc6ebd8d49d3d1998461007e2e9a70cbd6..00ed5c1f3a46e69fe158b193e3625da08948e448 100644
--- a/Src/Utils/FDft.hpp
+++ b/include/Utils/FDft.hpp
@@ -17,6 +17,8 @@
 
 #ifdef SCALFMM_USE_ESSL_AS_FFTW
 #include <fftw3_essl.h>
+#elif defined(SCALFMM_USE_MKL_AS_FFTW)
+#include <fftw/fftw3.h>
 #else
 #include <fftw3.h>
 #endif
diff --git a/Src/Utils/FDoc.hpp b/include/Utils/FDoc.hpp
similarity index 100%
rename from Src/Utils/FDoc.hpp
rename to include/Utils/FDoc.hpp
diff --git a/Src/Utils/FEnv.hpp b/include/Utils/FEnv.hpp
similarity index 100%
rename from Src/Utils/FEnv.hpp
rename to include/Utils/FEnv.hpp
diff --git a/Src/Utils/FEqualize.hpp b/include/Utils/FEqualize.hpp
similarity index 100%
rename from Src/Utils/FEqualize.hpp
rename to include/Utils/FEqualize.hpp
diff --git a/Src/Utils/FFortranMangling.hpp b/include/Utils/FFortranMangling.hpp
similarity index 100%
rename from Src/Utils/FFortranMangling.hpp
rename to include/Utils/FFortranMangling.hpp
diff --git a/Src/Utils/FGlobal.hpp b/include/Utils/FGlobal.hpp
similarity index 100%
rename from Src/Utils/FGlobal.hpp
rename to include/Utils/FGlobal.hpp
diff --git a/Src/Utils/FGlobalPeriodic.hpp b/include/Utils/FGlobalPeriodic.hpp
similarity index 100%
rename from Src/Utils/FGlobalPeriodic.hpp
rename to include/Utils/FGlobalPeriodic.hpp
diff --git a/Src/Utils/FLeafBalance.hpp b/include/Utils/FLeafBalance.hpp
similarity index 100%
rename from Src/Utils/FLeafBalance.hpp
rename to include/Utils/FLeafBalance.hpp
diff --git a/Src/Utils/FLog.hpp b/include/Utils/FLog.hpp
similarity index 100%
rename from Src/Utils/FLog.hpp
rename to include/Utils/FLog.hpp
diff --git a/Src/Utils/FMath.hpp b/include/Utils/FMath.hpp
similarity index 100%
rename from Src/Utils/FMath.hpp
rename to include/Utils/FMath.hpp
diff --git a/Src/Utils/FMemStats.h b/include/Utils/FMemStats.h
similarity index 100%
rename from Src/Utils/FMemStats.h
rename to include/Utils/FMemStats.h
diff --git a/Src/Utils/FMemUtils.hpp b/include/Utils/FMemUtils.hpp
similarity index 100%
rename from Src/Utils/FMemUtils.hpp
rename to include/Utils/FMemUtils.hpp
diff --git a/Src/Utils/FMpi.hpp b/include/Utils/FMpi.hpp
similarity index 100%
rename from Src/Utils/FMpi.hpp
rename to include/Utils/FMpi.hpp
diff --git a/Src/Utils/FNoCopyable.hpp b/include/Utils/FNoCopyable.hpp
similarity index 100%
rename from Src/Utils/FNoCopyable.hpp
rename to include/Utils/FNoCopyable.hpp
diff --git a/Src/Utils/FOffetOf.hpp b/include/Utils/FOffetOf.hpp
similarity index 100%
rename from Src/Utils/FOffetOf.hpp
rename to include/Utils/FOffetOf.hpp
diff --git a/Src/Utils/FOstreamTuple.hpp b/include/Utils/FOstreamTuple.hpp
similarity index 100%
rename from Src/Utils/FOstreamTuple.hpp
rename to include/Utils/FOstreamTuple.hpp
diff --git a/Src/Utils/FParObject.hpp b/include/Utils/FParObject.hpp
similarity index 100%
rename from Src/Utils/FParObject.hpp
rename to include/Utils/FParObject.hpp
diff --git a/Src/Utils/FParameterNames.hpp b/include/Utils/FParameterNames.hpp
similarity index 100%
rename from Src/Utils/FParameterNames.hpp
rename to include/Utils/FParameterNames.hpp
diff --git a/Src/Utils/FParameters.hpp b/include/Utils/FParameters.hpp
similarity index 100%
rename from Src/Utils/FParameters.hpp
rename to include/Utils/FParameters.hpp
diff --git a/Src/Utils/FPartitionsMapping.hpp b/include/Utils/FPartitionsMapping.hpp
similarity index 100%
rename from Src/Utils/FPartitionsMapping.hpp
rename to include/Utils/FPartitionsMapping.hpp
diff --git a/Src/Utils/FPoint.hpp b/include/Utils/FPoint.hpp
similarity index 100%
rename from Src/Utils/FPoint.hpp
rename to include/Utils/FPoint.hpp
diff --git a/Src/Utils/FQuickSort.hpp b/include/Utils/FQuickSort.hpp
similarity index 100%
rename from Src/Utils/FQuickSort.hpp
rename to include/Utils/FQuickSort.hpp
diff --git a/Src/Utils/FQuickSortMpi.hpp b/include/Utils/FQuickSortMpi.hpp
similarity index 100%
rename from Src/Utils/FQuickSortMpi.hpp
rename to include/Utils/FQuickSortMpi.hpp
diff --git a/Src/Utils/FRepeatAction.hpp b/include/Utils/FRepeatAction.hpp
similarity index 100%
rename from Src/Utils/FRepeatAction.hpp
rename to include/Utils/FRepeatAction.hpp
diff --git a/Src/Utils/FSignalHandler.h b/include/Utils/FSignalHandler.h
similarity index 100%
rename from Src/Utils/FSignalHandler.h
rename to include/Utils/FSignalHandler.h
diff --git a/Src/Utils/FSmartPointer.hpp b/include/Utils/FSmartPointer.hpp
similarity index 100%
rename from Src/Utils/FSmartPointer.hpp
rename to include/Utils/FSmartPointer.hpp
diff --git a/Src/Utils/FSpherical.hpp b/include/Utils/FSpherical.hpp
similarity index 100%
rename from Src/Utils/FSpherical.hpp
rename to include/Utils/FSpherical.hpp
diff --git a/Src/Utils/FStdAlignPolyfill.hpp b/include/Utils/FStdAlignPolyfill.hpp
similarity index 100%
rename from Src/Utils/FStdAlignPolyfill.hpp
rename to include/Utils/FStdAlignPolyfill.hpp
diff --git a/Src/Utils/FSvd.hpp b/include/Utils/FSvd.hpp
similarity index 100%
rename from Src/Utils/FSvd.hpp
rename to include/Utils/FSvd.hpp
diff --git a/Src/Utils/FTaskTimer.hpp b/include/Utils/FTaskTimer.hpp
similarity index 100%
rename from Src/Utils/FTaskTimer.hpp
rename to include/Utils/FTaskTimer.hpp
diff --git a/Src/Utils/FTemplate.hpp b/include/Utils/FTemplate.hpp
similarity index 100%
rename from Src/Utils/FTemplate.hpp
rename to include/Utils/FTemplate.hpp
diff --git a/Src/Utils/FTic.hpp b/include/Utils/FTic.hpp
similarity index 100%
rename from Src/Utils/FTic.hpp
rename to include/Utils/FTic.hpp
diff --git a/Src/Utils/FTypePack.hpp b/include/Utils/FTypePack.hpp
similarity index 100%
rename from Src/Utils/FTypePack.hpp
rename to include/Utils/FTypePack.hpp
diff --git a/Src/Utils/make_unique.hpp b/include/Utils/make_unique.hpp
similarity index 100%
rename from Src/Utils/make_unique.hpp
rename to include/Utils/make_unique.hpp
diff --git a/include/Utils/stdComplex.hpp b/include/Utils/stdComplex.hpp
new file mode 100644
index 0000000000000000000000000000000000000000..0f254f5eb63bd4f2f8da6108f53695abb5fd73a7
--- /dev/null
+++ b/include/Utils/stdComplex.hpp
@@ -0,0 +1,51 @@
+// ===================================================================================
+// olivier.coulaud@inria.fr, berenger.bramas@inria.fr
+// This software is a computer program whose purpose is to compute the FMM.
+//
+// This software is governed by the CeCILL-C and LGPL licenses and
+// abiding by the rules of distribution of free software.  
+// 
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public and CeCILL-C Licenses for more details.
+// "http://www.cecill.info". 
+// "http://www.gnu.org/licenses".
+// ===================================================================================
+#ifndef STDCOMPLEXE_HPP
+#define STDCOMPLEXE_HPP
+
+#include <complex>
+template<typename T>
+//using stdComplex = std::complex<T> ;
+class stdComplex : public std::complex<T>  {
+public:
+    using Base = std::complex<T> ; 
+    using Base::Base ; 
+
+    /** Mul other and another and add the result to current complexe 
+    
+    
+    */
+    /*!
+     * \brief addMul perform  z += other*another without using the  function __muldc3 from libgcc. ;
+     * 
+     * "Without -ffast-math or other, complex multiplication yields a call to the function __muldc3 from libgcc. "
+     * @see https://stackoverflow.com/questions/42659668/stdcomplex-multiplication-is-extremely-slow 
+     * 
+     * \param other 
+     * \param another
+     */
+    void addMul(const stdComplex<T>& other, const stdComplex<T>& another){
+     //   this->complex[0] += (other.complex[0] * another.complex[0]) - (other.complex[1] * another.complex[1]);
+     //     this->complex[1] += (other.complex[0] * another.complex[1]) + (other.complex[1] * another.complex[0]);
+        
+        T realPart = this->real() + (other.real() * another.real()) - (other.imag() * another.imag());
+        T imagPart = this->imag() + (other.real() * another.imag()) + (other.imag() * another.real());
+        this->real(realPart) ; 
+        this->imag(imagPart) ; 
+    }
+} ; 
+#endif //STDCOMPLEXE_HPP
+
+
diff --git a/Src/Utils/variadic_container.hpp b/include/Utils/variadic_container.hpp
similarity index 100%
rename from Src/Utils/variadic_container.hpp
rename to include/Utils/variadic_container.hpp
diff --git a/Contribs/inria/algorithm/distributed/distribute.hpp b/include/inria/algorithm/distributed/distribute.hpp
similarity index 100%
rename from Contribs/inria/algorithm/distributed/distribute.hpp
rename to include/inria/algorithm/distributed/distribute.hpp
diff --git a/Contribs/inria/algorithm/distributed/impl_sort/binary_search.hpp b/include/inria/algorithm/distributed/impl_sort/binary_search.hpp
similarity index 100%
rename from Contribs/inria/algorithm/distributed/impl_sort/binary_search.hpp
rename to include/inria/algorithm/distributed/impl_sort/binary_search.hpp
diff --git a/Contribs/inria/algorithm/distributed/mpi.hpp b/include/inria/algorithm/distributed/mpi.hpp
similarity index 100%
rename from Contribs/inria/algorithm/distributed/mpi.hpp
rename to include/inria/algorithm/distributed/mpi.hpp
diff --git a/Contribs/inria/algorithm/distributed/sort.hpp b/include/inria/algorithm/distributed/sort.hpp
similarity index 100%
rename from Contribs/inria/algorithm/distributed/sort.hpp
rename to include/inria/algorithm/distributed/sort.hpp
diff --git a/Contribs/inria/algorithm/distributed/unique.hpp b/include/inria/algorithm/distributed/unique.hpp
similarity index 100%
rename from Contribs/inria/algorithm/distributed/unique.hpp
rename to include/inria/algorithm/distributed/unique.hpp
diff --git a/Contribs/inria/checker.hpp b/include/inria/checker.hpp
similarity index 100%
rename from Contribs/inria/checker.hpp
rename to include/inria/checker.hpp
diff --git a/Contribs/inria/ct_array.hpp b/include/inria/ct_array.hpp
similarity index 100%
rename from Contribs/inria/ct_array.hpp
rename to include/inria/ct_array.hpp
diff --git a/Contribs/inria/detection_idiom.hpp b/include/inria/detection_idiom.hpp
similarity index 100%
rename from Contribs/inria/detection_idiom.hpp
rename to include/inria/detection_idiom.hpp
diff --git a/Contribs/inria/integer_sequence.hpp b/include/inria/integer_sequence.hpp
similarity index 98%
rename from Contribs/inria/integer_sequence.hpp
rename to include/inria/integer_sequence.hpp
index d9042ee56eba50d4393e12a79e2660239ed74fd8..ebb859add47fed19996bdf858c46ad2b4243818d 100644
--- a/Contribs/inria/integer_sequence.hpp
+++ b/include/inria/integer_sequence.hpp
@@ -13,7 +13,7 @@
 
 
 #if __cplusplus < 201103L
-#error "The definition of integer_sequence needs at least c++11."
+//#error "The definition of integer_sequence needs at least c++11."
 #endif
 
 
diff --git a/Contribs/inria/io.hpp b/include/inria/io.hpp
similarity index 100%
rename from Contribs/inria/io.hpp
rename to include/inria/io.hpp
diff --git a/Contribs/inria/linear_tree/balance_tree.hpp b/include/inria/linear_tree/balance_tree.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/balance_tree.hpp
rename to include/inria/linear_tree/balance_tree.hpp
diff --git a/Contribs/inria/linear_tree/configuration.hpp b/include/inria/linear_tree/configuration.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/configuration.hpp
rename to include/inria/linear_tree/configuration.hpp
diff --git a/Contribs/inria/linear_tree/distributed_regions_to_linear_tree.hpp b/include/inria/linear_tree/distributed_regions_to_linear_tree.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/distributed_regions_to_linear_tree.hpp
rename to include/inria/linear_tree/distributed_regions_to_linear_tree.hpp
diff --git a/Contribs/inria/linear_tree/gather_octant_weights.hpp b/include/inria/linear_tree/gather_octant_weights.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/gather_octant_weights.hpp
rename to include/inria/linear_tree/gather_octant_weights.hpp
diff --git a/Contribs/inria/linear_tree/linear_tree.hpp b/include/inria/linear_tree/linear_tree.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/linear_tree.hpp
rename to include/inria/linear_tree/linear_tree.hpp
diff --git a/Contribs/inria/linear_tree/linearize.hpp b/include/inria/linear_tree/linearize.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/linearize.hpp
rename to include/inria/linear_tree/linearize.hpp
diff --git a/Contribs/inria/linear_tree/node.hpp b/include/inria/linear_tree/node.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/node.hpp
rename to include/inria/linear_tree/node.hpp
diff --git a/Contribs/inria/linear_tree/node_info_traits.hpp b/include/inria/linear_tree/node_info_traits.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/node_info_traits.hpp
rename to include/inria/linear_tree/node_info_traits.hpp
diff --git a/Contribs/inria/linear_tree/region.hpp b/include/inria/linear_tree/region.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/region.hpp
rename to include/inria/linear_tree/region.hpp
diff --git a/Contribs/inria/linear_tree/weight_traits.hpp b/include/inria/linear_tree/weight_traits.hpp
similarity index 100%
rename from Contribs/inria/linear_tree/weight_traits.hpp
rename to include/inria/linear_tree/weight_traits.hpp
diff --git a/Contribs/inria/logic.hpp b/include/inria/logic.hpp
similarity index 100%
rename from Contribs/inria/logic.hpp
rename to include/inria/logic.hpp
diff --git a/Contribs/inria/meta.hpp b/include/inria/meta.hpp
similarity index 100%
rename from Contribs/inria/meta.hpp
rename to include/inria/meta.hpp
diff --git a/Contribs/inria/ostream_joiner.hpp b/include/inria/ostream_joiner.hpp
similarity index 100%
rename from Contribs/inria/ostream_joiner.hpp
rename to include/inria/ostream_joiner.hpp
diff --git a/Contribs/inria/ostream_typeinfo.hpp b/include/inria/ostream_typeinfo.hpp
similarity index 100%
rename from Contribs/inria/ostream_typeinfo.hpp
rename to include/inria/ostream_typeinfo.hpp
diff --git a/Contribs/inria/require_input.hpp b/include/inria/require_input.hpp
similarity index 100%
rename from Contribs/inria/require_input.hpp
rename to include/inria/require_input.hpp
diff --git a/Contribs/inria/span.hpp b/include/inria/span.hpp
similarity index 100%
rename from Contribs/inria/span.hpp
rename to include/inria/span.hpp
diff --git a/Contribs/inria/tcli/exceptions.hpp b/include/inria/tcli/exceptions.hpp
similarity index 100%
rename from Contribs/inria/tcli/exceptions.hpp
rename to include/inria/tcli/exceptions.hpp
diff --git a/Contribs/inria/tcli/help_descriptor.hpp b/include/inria/tcli/help_descriptor.hpp
similarity index 100%
rename from Contribs/inria/tcli/help_descriptor.hpp
rename to include/inria/tcli/help_descriptor.hpp
diff --git a/Contribs/inria/tcli/impl_tcli/meta.hpp b/include/inria/tcli/impl_tcli/meta.hpp
similarity index 100%
rename from Contribs/inria/tcli/impl_tcli/meta.hpp
rename to include/inria/tcli/impl_tcli/meta.hpp
diff --git a/Contribs/inria/tcli/impl_tcli/parameter_model.hpp b/include/inria/tcli/impl_tcli/parameter_model.hpp
similarity index 100%
rename from Contribs/inria/tcli/impl_tcli/parameter_model.hpp
rename to include/inria/tcli/impl_tcli/parameter_model.hpp
diff --git a/Contribs/inria/tcli/impl_tcli/utils.hpp b/include/inria/tcli/impl_tcli/utils.hpp
similarity index 100%
rename from Contribs/inria/tcli/impl_tcli/utils.hpp
rename to include/inria/tcli/impl_tcli/utils.hpp
diff --git a/Contribs/inria/tcli/tcli.hpp b/include/inria/tcli/tcli.hpp
similarity index 100%
rename from Contribs/inria/tcli/tcli.hpp
rename to include/inria/tcli/tcli.hpp
diff --git a/Contribs/inria/utils.hpp b/include/inria/utils.hpp
similarity index 100%
rename from Contribs/inria/utils.hpp
rename to include/inria/utils.hpp
diff --git a/Contribs/inria/version.hpp b/include/inria/version.hpp
similarity index 100%
rename from Contribs/inria/version.hpp
rename to include/inria/version.hpp
diff --git a/Contribs/json.hpp b/include/json.hpp
similarity index 100%
rename from Contribs/json.hpp
rename to include/json.hpp
diff --git a/scalfmmConfig.cmake.in b/scalfmmConfig.cmake.in
new file mode 100644
index 0000000000000000000000000000000000000000..247a22f91a3ab1bff8f0cda5c73c408617dd6d25
--- /dev/null
+++ b/scalfmmConfig.cmake.in
@@ -0,0 +1,26 @@
+#-----------------------------------------------------------------------------
+#
+# SCALFMMConfig.cmake - SCALFMM CMake configuration file for external projects.
+#
+# This file is configured by SCALFMM and used by the SCALFMM.cmake module
+# to load SCALFMM's settings for an external project.
+#
+
+@PACKAGE_INIT@
+
+if(NOT TARGET @PROJECT_NAME@::@PROJECT_NAME@)
+  list(APPEND CMAKE_MODULE_PATH "@MORSE_CMAKE_MODULE_PATH@/find")
+  set(IMPORTED_LIBS @SCALFMM_LIBRARIES@)
+  set(BLA_VENDOR @BLA_VENDOR@)
+  include(CMakeFindDependencyMacro)
+  foreach(lib IN LISTS IMPORTED_LIBS)
+    find_dependency(${lib})
+    if(NOT ${lib}_FOUND)
+      message(FATAL_ERROR "MISSING ${lib} DEPENDENCY !")
+    else()
+      message(STATUS "Found ${lib} dependency.")
+    endif()
+  endforeach()
+  include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
+endif()
+
diff --git a/Src/Utils/FAlgorithmTimers.cpp b/src/FAlgorithmTimers.cpp
similarity index 92%
rename from Src/Utils/FAlgorithmTimers.cpp
rename to src/FAlgorithmTimers.cpp
index b30b4e04fd720a359b685f7b79dc3212895224fb..c1e23ed171b6abba3600b4ecbc2bf93fb16bb329 100644
--- a/Src/Utils/FAlgorithmTimers.cpp
+++ b/src/FAlgorithmTimers.cpp
@@ -1,4 +1,4 @@
-#include "FAlgorithmTimers.hpp"
+#include <Utils/FAlgorithmTimers.hpp>
 
 constexpr const char* FAlgorithmTimers::P2MTimer;
 constexpr const char* FAlgorithmTimers::M2MTimer;
diff --git a/Src/Utils/FLog.cpp b/src/FLog.cpp
similarity index 84%
rename from Src/Utils/FLog.cpp
rename to src/FLog.cpp
index f4542e1ff87872be8802afcff5eebfe15d63a773..95fe52333e6830ffba720583314089bde12640f2 100644
--- a/Src/Utils/FLog.cpp
+++ b/src/FLog.cpp
@@ -1,6 +1,6 @@
 // See LICENCE file at project root
 
-#include "FLog.hpp"
+#include <Utils/FLog.hpp>
 
 #ifdef SCALFMM_USE_LOG
 
diff --git a/Src/Utils/FMemStats.cpp b/src/FMemStats.cpp
similarity index 98%
rename from Src/Utils/FMemStats.cpp
rename to src/FMemStats.cpp
index 760b61b0a1652def264b255bf023409b605c7d0f..0e9f629f1fc817da91b9a9dcc18ecc100281f1d2 100644
--- a/Src/Utils/FMemStats.cpp
+++ b/src/FMemStats.cpp
@@ -1,5 +1,5 @@
 // See LICENCE file at project root
-#include "FMemStats.h"
+#include <Utils/FMemStats.h>
 
 FMemStats FMemStats::controler;
 
diff --git a/Src/Utils/FMpi.cpp b/src/FMpi.cpp
similarity index 62%
rename from Src/Utils/FMpi.cpp
rename to src/FMpi.cpp
index 6ca6e5021eef41e0cd7ed1a902ddb264a7807da7..a8fc30efff4ee64ad0d818a650dac98abb421490 100644
--- a/Src/Utils/FMpi.cpp
+++ b/src/FMpi.cpp
@@ -1,5 +1,5 @@
 // @FUSE_MPI
 
-#include "Utils/FMpi.hpp"
+#include <Utils/FMpi.hpp>
 
 int FMpi::instanceCount = 0;
diff --git a/Src/Utils/FSignalHandler.cpp b/src/FSignalHandler.cpp
similarity index 97%
rename from Src/Utils/FSignalHandler.cpp
rename to src/FSignalHandler.cpp
index 3a17d84f3d2f486777217168e4ecc5c82f07e853..3662180b635bdeda0182711e8ce7d294be57fc6e 100644
--- a/Src/Utils/FSignalHandler.cpp
+++ b/src/FSignalHandler.cpp
@@ -6,8 +6,8 @@
  * the trace is print when a signal is caught.
  */
 
-#include "FGlobal.hpp"
-#include "FSignalHandler.h"
+#include <Utils/FGlobal.hpp>
+#include <Utils/FSignalHandler.h>
 
 
 //< Singleton/Controler of the signal system.