diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8c723f373..fe21ba339 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,194 +1,198 @@
 #===============================================================================
 # @file   CMakeLists.txt
 #
 # @author Guillaume Anciaux <guillaume.anciaux@epfl.ch>
 # @author Nicolas Richart <nicolas.richart@epfl.ch>
 #
 # @date creation: Mon Jun 14 2010
 # @date last modification: Fri Jan 22 2016
 #
 # @brief  main configuration file
 #
 # @section LICENSE
 #
 # Copyright (©)  2010-2012, 2014,  2015 EPFL  (Ecole Polytechnique  Fédérale de
 # Lausanne)  Laboratory (LSMS  -  Laboratoire de  Simulation  en Mécanique  des
 # Solides)
 #
 # Akantu is free  software: you can redistribute it and/or  modify it under the
 # terms  of the  GNU Lesser  General Public  License as  published by  the Free
 # Software Foundation, either version 3 of the License, or (at your option) any
 # later version.
 #
 # Akantu 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  Lesser General  Public License  for more
 # details.
 #
 # You should  have received  a copy  of the GNU  Lesser General  Public License
 # along with Akantu. If not, see <http://www.gnu.org/licenses/>.
 #
 # @section DESCRIPTION
 #-------------------------------------------------------------------------------
 #                      _               _
 #                     | |             | |
 #                 __ _| | ____ _ _ __ | |_ _   _
 #                / _` | |/ / _` | '_ \| __| | | |
 #               | (_| |   < (_| | | | | |_| |_| |
 #                \__,_|_|\_\__,_|_| |_|\__|\__,_|
 #
 #===============================================================================
 
 #===============================================================================
 # CMake Project
 #===============================================================================
 cmake_minimum_required(VERSION 3.1.3)
 
 # add this options before PROJECT keyword
 set(CMAKE_DISABLE_SOURCE_CHANGES ON)
 set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
 
 project(Akantu)
 enable_language(CXX)
 
 #===============================================================================
 # Misc. config for cmake
 #===============================================================================
 set(AKANTU_CMAKE_DIR "${PROJECT_SOURCE_DIR}/cmake")
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/Modules")
+
 set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries.")
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL
+  "Enable/Disable output of compile commands during generation" FORCE)
+
 mark_as_advanced(BUILD_SHARED_LIBS)
 
 if(NOT AKANTU_TARGETS_EXPORT)
   set(AKANTU_TARGETS_EXPORT AkantuTargets)
 endif()
 
 include(CMakeVersionGenerator)
 include(CMakePackagesSystem)
 include(CMakeFlagsHandling)
 
 include(AkantuPackagesSystem)
 include(AkantuMacros)
 include(AkantuCleaning)
 
 #cmake_activate_debug_message()
 
 #===============================================================================
 # Version Number
 #===============================================================================
 # AKANTU version number.  An even minor number corresponds to releases.
 set(AKANTU_MAJOR_VERSION 3)
 set(AKANTU_MINOR_VERSION 0)
 set(AKANTU_PATCH_VERSION 0)
 define_project_version()
 
 #===============================================================================
 # Options
 #===============================================================================
 # Debug
 set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -DAKANTU_NDEBUG"
   CACHE STRING "Flags used by the compiler during release builds" FORCE)
 
 #add_flags(cxx "-Wall -Wextra -pedantic -Werror")
 if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
   add_flags(cxx "-Wall -Wextra -pedantic") # -Weffc++
   set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG_INIT} -ggdb3"
     CACHE STRING "Flags used by the compiler during debug builds" FORCE)
   set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT} -ggdb3"
     CACHE STRING "Flags used by the compiler during debug builds" FORCE)
 else()
   add_flags(cxx "-Wall")
 endif()
 
 option(AKANTU_EXAMPLES "Activate examples" OFF)
 option(AKANTU_TESTS "Activate tests" OFF)
 
 set(AKANTU_PREFERRED_PYTHON_VERSION 3 CACHE STRING "Preferred version for python related things")
 mark_as_advanced(AKANTU_PREFERRED_PYTHON_VERSION)
 
 include(AkantuExtraCompilationProfiles)
 #===============================================================================
 # Dependencies
 #===============================================================================
 declare_akantu_types()
 
 package_list_packages(${PROJECT_SOURCE_DIR}/packages
   EXTRA_PACKAGES_FOLDER ${PROJECT_SOURCE_DIR}/extra_packages
   NO_AUTO_COMPILE_FLAGS)
 
 ## meta option \todo better way to do it when multiple package give enable the
 ## same feature
 if(AKANTU_SCOTCH)
   set(AKANTU_PARTITIONER ON)
 else()
   set(AKANTU_PARTITIONER OFF)
 endif()
 
 if(AKANTU_MUMPS)
   set(AKANTU_SOLVER ON)
 else()
   set(AKANTU_SOLVER OFF)
 endif()
 
 #===============================================================================
 # Akantu library
 #===============================================================================
 add_subdirectory(src)
 
 #===============================================================================
 # Documentation
 #===============================================================================
 if(AKANTU_DOCUMENTATION_DOXYGEN OR AKANTU_DOCUMENTATION_MANUAL)
   add_subdirectory(doc)
 else()
   set(AKANTU_DOC_EXCLUDE_FILES "${PROJECT_SOURCE_DIR}/doc/manual" CACHE INTERNAL "")
 endif()
 
 #===============================================================================
 # Examples and tests
 #===============================================================================
 include(AkantuTestsMacros)
 include(AkantuExampleMacros)
 
 if(AKANTU_TESTS)
   option(AKANTU_BUILD_ALL_TESTS "Build all tests" ON)
   find_package(GMSH REQUIRED)
   # package_is_activated(pybind11 _pybind11_act)
   # if(_pybind11_act)
   #   find_package(pybind11 CONFIG REQUIRED QUIET) # to get the pybind11_add_module macro
   # endif()
 endif()
 
 if(AKANTU_EXAMPLES)
   find_package(GMSH REQUIRED)
   add_subdirectory(examples)
 endif()
 
 # tests
 add_test_tree(test)
 
 #===============================================================================
 # Python interface
 #===============================================================================
 package_is_activated(python_interface _python_act)
 if(_python_act)
   if(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
     set(AKANTU_PYTHON_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
   else()
     set(AKANTU_PYTHON_INSTALL_PREFIX "${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_PREFIX}")
   endif()
   add_subdirectory(python)
 endif()
 
 #===============================================================================
 # Install and Packaging
 #===============================================================================
 include(AkantuInstall)
 
 option(AKANTU_DISABLE_CPACK
   "This option commands the generation of extra info for the \"make package\" target" ON)
 mark_as_advanced(AKANTU_DISABLE_CPACK)
 if(NOT AKANTU_DISABLE_CPACK)
   include(AkantuCPack)
 endif()
diff --git a/cmake/AkantuCleaning.cmake b/cmake/AkantuCleaning.cmake
index 39202265c..8fd50e667 100644
--- a/cmake/AkantuCleaning.cmake
+++ b/cmake/AkantuCleaning.cmake
@@ -1,85 +1,82 @@
 #===============================================================================
 # @file   AkantuCleaning.cmake
 #
 # @author Nicolas Richart <nicolas.richart@epfl.ch>
 #
 # @date creation: Thu Jun 1, 2017
 #
 # @brief  set of tools to clean the code
 #
 # @section LICENSE
 #
 # Copyright (©)  2010-2012, 2014,  2015 EPFL  (Ecole Polytechnique  Fédérale de
 # Lausanne)  Laboratory (LSMS  -  Laboratoire de  Simulation  en Mécanique  des
 # Solides)
 #
 # Akantu is free  software: you can redistribute it and/or  modify it under the
 # terms  of the  GNU Lesser  General Public  License as  published by  the Free
 # Software Foundation, either version 3 of the License, or (at your option) any
 # later version.
 #
 # Akantu 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  Lesser General  Public License  for more
 # details.
 #
 # You should  have received  a copy  of the GNU  Lesser General  Public License
 # along with Akantu. If not, see <http://www.gnu.org/licenses/>.
 #===============================================================================
 
 # Adding clang-format target if executable is found
 find_program(CLANG_FORMAT "clang-format")
 mark_as_advanced(CLANG_FORMAT)
 macro(register_code_to_format)
   if(CLANG_FORMAT)
     add_custom_target(
       clang-format-all
       COMMAND ${CLANG_FORMAT}
       -i
       -style=file
       ${ARGN}
       )
   endif()
 endmacro()
 
 # Adding clang-tidy target if executable is found
 find_program(CLANG_TIDY "clang-tidy")
 mark_as_advanced(CLANG_TIDY)
 macro(register_target_to_tidy target)
   if(CLANG_TIDY)
     option(AKANTU_CLANG_TIDY_AUTOFIX OFF)
     mark_as_advanced(AKANTU_CLANG_TIDY_AUTOFIX)
 
     set(_autofix_option)
     if(AKANTU_CLANG_TIDY_AUTOFIX)
       set(_autofix_option -fix)
     endif()
     get_target_property(_sources ${target} SOURCES)
 
-    set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL
-      "Enable/Disable output of compile commands during generation" FORCE)
-
     file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/clang-tidy)
 
     set(_depends)
 
     foreach(_src ${_sources})
       get_filename_component(_src_dir ${_src} DIRECTORY)
       file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/clang-tidy/${_src_dir})
 
       add_custom_command(
         OUTPUT ${PROJECT_BINARY_DIR}/clang-tidy/${_src}.yaml
         COMMAND ${CLANG_TIDY}
          -p=${PROJECT_BINARY_DIR}
          -export-fixes=${PROJECT_BINARY_DIR}/clang-tidy/${_src}.yaml
          ${_autofix_option}
         ${_src}
         COMMENT "Tidying ${_src}"
         WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
         )
 
       list(APPEND _depends ${PROJECT_BINARY_DIR}/clang-tidy/${_src}.yaml)
     endforeach()
     add_custom_target(clang-tidy DEPENDS ${_depends})
   endif()
 endmacro()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fbe0b1ed8..e2735564e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,223 +1,220 @@
 #===============================================================================
 # @file   CMakeLists.txt
 #
 # @author Guillaume Anciaux <guillaume.anciaux@epfl.ch>
 # @author Nicolas Richart <nicolas.richart@epfl.ch>
 #
 # @date creation: Mon Jun 14 2010
 # @date last modification: Tue Feb 13 2018
 #
 # @brief  CMake file for the library
 #
 # @section LICENSE
 #
 # Copyright (©)  2010-2018 EPFL (Ecole Polytechnique Fédérale de Lausanne) Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)
 #
 # Akantu is free  software: you can redistribute it and/or  modify it under the terms  of the  GNU Lesser  General Public  License as published by  the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 #
 # Akantu 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  Lesser General  Public License  for more details.
 #
 # You should  have received  a copy  of the GNU  Lesser General  Public License along with Akantu. If not, see <http://www.gnu.org/licenses/>.
 #
 #===============================================================================
 
 #===============================================================================
 # Package Management
 #===============================================================================
 package_get_all_source_files(
   AKANTU_LIBRARY_SRCS
   AKANTU_LIBRARY_PUBLIC_HDRS
   AKANTU_LIBRARY_PRIVATE_HDRS
   )
 
 package_get_all_include_directories(
   AKANTU_LIBRARY_INCLUDE_DIRS
   )
 
 package_get_all_external_informations(
   PRIVATE_INCLUDE AKANTU_PRIVATE_EXTERNAL_INCLUDE_DIR
   INTERFACE_INCLUDE AKANTU_INTERFACE_EXTERNAL_INCLUDE_DIR
   LIBRARIES AKANTU_EXTERNAL_LIBRARIES
   )
 
 package_get_all_compilation_flags(CXX _cxx_flags)
 set(AKANTU_EXTRA_CXX_FLAGS
   "${_cxx_flags}" CACHE STRING "Extra flags defined by loaded packages" FORCE)
 mark_as_advanced(AKANTU_EXTRA_CXX_FLAGS)
 
 foreach(src_ ${AKANTU_SPIRIT_SOURCES})
   set_property(SOURCE ${src_} PROPERTY COMPILE_FLAGS "-g0 -Werror")
 endforeach()
 
 #===========================================================================
 # header for blas/lapack (any other fortran libraries)
 #===========================================================================
 package_is_activated(BLAS _blas_activated)
 package_is_activated(LAPACK _lapack_activated)
 
 if(_blas_activated OR _lapack_activated)
   if(CMAKE_Fortran_COMPILER)
     # ugly hack
     set(CMAKE_Fortran_COMPILER_LOADED TRUE)
   endif()
 
   include(FortranCInterface)
   FortranCInterface_HEADER(
     "${CMAKE_CURRENT_BINARY_DIR}/aka_fortran_mangling.hh"
     MACRO_NAMESPACE "AKA_FC_")
   mark_as_advanced(CDEFS)
   list(APPEND AKANTU_LIBRARY_PUBLIC_HDRS
     "${CMAKE_CURRENT_BINARY_DIR}/aka_fortran_mangling.hh"
     )
 endif()
 
 list(APPEND AKANTU_LIBRARY_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}")
 set(AKANTU_INCLUDE_DIRS
   ${CMAKE_CURRENT_BINARY_DIR} ${AKANTU_LIBRARY_INCLUDE_DIRS}
   CACHE INTERNAL "Internal include directories to link with Akantu as a subproject")
 
 #===========================================================================
 # configurations
 #===========================================================================
 package_get_all_material_includes(AKANTU_MATERIAL_INCLUDES)
 package_get_all_material_lists(AKANTU_MATERIAL_LISTS)
 configure_file(model/solid_mechanics/material_list.hh.in
   "${CMAKE_CURRENT_BINARY_DIR}/material_list.hh" @ONLY)
 
 package_get_element_lists()
 configure_file(common/aka_element_classes_info.hh.in
   "${CMAKE_CURRENT_BINARY_DIR}/aka_element_classes_info.hh" @ONLY)
 
 configure_file(common/aka_config.hh.in
   "${CMAKE_CURRENT_BINARY_DIR}/aka_config.hh" @ONLY)
 
 list(APPEND AKANTU_LIBRARY_PUBLIC_HDRS
   "${CMAKE_CURRENT_BINARY_DIR}/material_list.hh"
   "${CMAKE_CURRENT_BINARY_DIR}/aka_element_classes_info.hh"
   "${CMAKE_CURRENT_BINARY_DIR}/aka_config.hh")
 
 #===============================================================================
 # Debug infos
 #===============================================================================
 set(AKANTU_GDB_DIR ${PROJECT_SOURCE_DIR}/cmake)
 if(UNIX)
   string(TOUPPER "${CMAKE_BUILD_TYPE}" _u_build_type)
   if(_u_build_type STREQUAL "DEBUG" OR _u_build_type STREQUAL "RELWITHDEBINFO")
     configure_file(${PROJECT_SOURCE_DIR}/cmake/libakantu-gdb.py.in
       "${PROJECT_BINARY_DIR}/libakantu-gdb.py"
       @ONLY)
     configure_file(${PROJECT_SOURCE_DIR}/cmake/akantu-debug.cc.in
       "${PROJECT_BINARY_DIR}/akantu-debug.cc" @ONLY)
 
     list(APPEND AKANTU_LIBRARY_SRCS ${PROJECT_BINARY_DIR}/akantu-debug.cc)
   endif()
 else()
   find_program(GDB_EXECUTABLE gdb)
 
   if(GDB_EXECUTABLE)
     execute_process(COMMAND
       ${GDB_EXECUTABLE} --batch -x "${PROJECT_SOURCE_DIR}/cmake/gdb_python_path"
       OUTPUT_VARIABLE AKANTU_PYTHON_GDB_DIR
       ERROR_QUIET
       RESULT_VARIABLE _res)
 
     if(_res EQUAL 0 AND UNIX)
       set(GDB_USER_CONFIG $ENV{HOME}/.gdb/auto-load)
       file(MAKE_DIRECTORY ${GDB_USER_CONFIG})
 
       configure_file(${PROJECT_SOURCE_DIR}/cmake/libakantu-gdb.py.in
         "${GDB_USER_CONFIG}/${CMAKE_SHARED_LIBRARY_PREFIX}akantu${CMAKE_SHARED_LIBRARY_SUFFIX}.${AKANTU_VERSION}-gdb.py"
         @ONLY)
     endif()
   endif()
 endif()
 
 #===============================================================================
 # Library generation
 #===============================================================================
 add_library(akantu ${AKANTU_LIBRARY_SRCS})
 
 target_include_directories(akantu
   PRIVATE   $<BUILD_INTERFACE:${AKANTU_INCLUDE_DIRS}>
   INTERFACE $<INSTALL_INTERFACE:include/akantu>
   )
 
 # small trick for build includes in public
 set_property(TARGET akantu APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
   $<BUILD_INTERFACE:${AKANTU_INCLUDE_DIRS}>)
 
 target_include_directories(akantu SYSTEM
   PUBLIC ${AKANTU_INTERFACE_EXTERNAL_INCLUDE_DIR}
   )
 
 target_include_directories(akantu SYSTEM
   PRIVATE ${AKANTU_PRIVATE_EXTERNAL_INCLUDE_DIR}
   )
 
 target_link_libraries(akantu ${AKANTU_EXTERNAL_LIBRARIES})
 
 set_target_properties(akantu
   PROPERTIES
     ${AKANTU_LIBRARY_PROPERTIES} # this contains the version
     COMPILE_FLAGS "${_cxx_flags}"
     #PRIVATE_HEADER ${AKANTU_LIBRARY_PRIVATE_HDRS}
     )
 
 if(AKANTU_LIBRARY_PUBLIC_HDRS)
   set_property(TARGET akantu PROPERTY PUBLIC_HEADER ${AKANTU_LIBRARY_PUBLIC_HDRS})
 endif()
 
 if(AKANTU_LIBRARY_PRIVATE_HDRS)
   set_property(TARGET akantu PROPERTY PRIVATE_HEADER ${AKANTU_LIBRARY_PRIVATE_HDRS})
 endif()
 
 if(NOT CMAKE_VERSION VERSION_LESS 3.1)
   package_get_all_features_public(_PUBLIC_features)
   package_get_all_features_private(_PRIVATE_features)
   foreach(_type PRIVATE PUBLIC)
     if(_${_type}_features)
       target_compile_features(akantu ${_type} ${_${_type}_features})
     endif()
   endforeach()
 else()
   set_target_properties(akantu
     PROPERTIES
     CXX_STANDARD 14
     )
 endif()
 
 package_get_all_extra_dependencies(_extra_target_dependencies)
 if(_extra_target_dependencies)
   # This only adding todo: find a solution for when a dependency was add the is removed...
   add_dependencies(akantu ${_extra_target_dependencies})
 endif()
 
 package_get_all_export_list(AKANTU_EXPORT_LIST)
 list(APPEND AKANTU_EXPORT_LIST akantu)
 
 # TODO separate public from private headers
 install(TARGETS akantu
   EXPORT ${AKANTU_TARGETS_EXPORT}
   LIBRARY DESTINATION lib COMPONENT lib
   ARCHIVE DESTINATION lib COMPONENT lib
   RUNTIME DESTINATION bin COMPONENT bin
   PUBLIC_HEADER DESTINATION include/akantu/ COMPONENT dev
   )
 
 if("${AKANTU_TARGETS_EXPORT}" STREQUAL "AkantuTargets")
   install(EXPORT AkantuTargets DESTINATION share/cmake/${PROJECT_NAME}
     COMPONENT dev)
 
   #Export for build tree
   export(EXPORT AkantuTargets
     FILE "${CMAKE_BINARY_DIR}/AkantuTargets.cmake")
   export(PACKAGE Akantu)
 endif()
 
-
-
-
 # print out the list of materials
 generate_material_list()
 
 register_target_to_tidy(akantu)
diff --git a/test/ci/Dockerfile b/test/ci/Dockerfile
index 1e9b2aa6e..1a4feb681 100644
--- a/test/ci/Dockerfile
+++ b/test/ci/Dockerfile
@@ -1,16 +1,20 @@
 FROM debian:testing
 MAINTAINER Nicolas Richart <nicolas.richart@epfl.ch>
 
 # Make sure the package repository is up to date.
 RUN apt-get -qq update && apt-get -qq -y install \
     g++ gfortran  cmake \
     libmumps-seq-dev libscotch-dev \
     libboost-dev libopenblas-dev \
     python3 python3-dev \
     python3-numpy python3-scipy python3-mpi4py\
     python3-phabricator python3-click python3-yaml \
     swig3.0 gmsh curl flake8 \
-    git arcanist arcanist-clang-format-linter clang-format xsltproc jq \
+    git clang-format xsltproc jq \
     && rm -rf /var/lib/apt/lists/*
 
 # apt-get on one line due to https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
+RUN git clone https://github.com/phacility/libphutil.git /libphutil
+RUN git clone https://github.com/phacility/arcanist.git /arcanist
+
+ENV PATH="$PATH:/arcanist/bin/"
\ No newline at end of file