diff --git a/Utils/src/ChebyshevInterpolationCmpAlgo.cpp b/Utils/src/ChebyshevInterpolationCmpAlgo.cpp
deleted file mode 100644
index f22105dcead1c650e1b4a7640c1acc65d29bff21..0000000000000000000000000000000000000000
--- a/Utils/src/ChebyshevInterpolationCmpAlgo.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// ==== CMAKE =====
-// @FUSE_BLAS
-// ================
-// Keep in private GIT
-//
-//
-/** \brief Chebyshev FMM example
- *
- * \file
- * \authors B. Bramas, O. Coulaud
- *
- * This program runs the FMM Algorithm with the interpolation kernel based on
- * Chebyshev (grid points) interpolation (1/r kernel). It then compares the
- * results with a direct computation.
- */
-#include <string> 
-#include "Kernels/Chebyshev/FChebCell.hpp"
-#include "Kernels/Chebyshev/FChebSymKernel.hpp"
-//
-template<typename FReal, int ORDER> 
-using FInterpolationCell =  FChebCell<FReal, ORDER>;
-
-template<typename FReal, typename GroupCellClass,
-	 typename GroupContainerClass,
-	 typename MatrixKernelClass, int ORDER>  
-using FInterpolationKernel = FChebSymKernel<FReal,
-					    GroupCellClass,
-					    GroupContainerClass,
-					    MatrixKernelClass,
-					    ORDER> ;
-const std::string interpolationType("Chebyshev interpolation");
-
-#include "sharedMemoryInterpolatiomCmpAlgos.hpp" 
diff --git a/Utils/src/UniformInterpolationCmpAlgo.cpp b/Utils/src/UniformInterpolationCmpAlgo.cpp
deleted file mode 100644
index 43cdf1bdeef8dbd1eeb75f72e3d616296f1a3cce..0000000000000000000000000000000000000000
--- a/Utils/src/UniformInterpolationCmpAlgo.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// ==== CMAKE =====
-// @FUSE_BLAS
-// @FUSE_FFT
-// ================
-// Keep in private GIT
-//
-//
-/** \brief Uniform FMM example
- *
- * \file
- * \authors B. Bramas, O. Coulaud
- *
- * This program runs the FMM Algorithm with the interpolation kernel based on
- * uniform (grid points) interpolation (1/r kernel). It then compares the
- * results with a direct computation.
- */
-#include <string> 
-#include "Kernels/Uniform/FUnifCell.hpp"
-#include "Kernels/Uniform/FUnifKernel.hpp"
-//
-template<typename FReal, int ORDER> 
-using FInterpolationCell =  FUnifCell<FReal, ORDER>;
-
-template<typename FReal, typename GroupCellClass,
-	 typename GroupContainerClass,
-	 typename MatrixKernelClass, int ORDER>  
-using FInterpolationKernel = FUnifKernel<FReal,
-					    GroupCellClass,
-					    GroupContainerClass,
-					    MatrixKernelClass,
-					    ORDER> ;
-const std::string interpolationType("Uniform interpolation");
-
-#include "sharedMemoryInterpolatiomCmpAlgos.hpp" 
diff --git a/Utils/src/sharedMemoryInterpolatiomCmpAlgos.hpp b/Utils/src/sharedMemoryInterpolatiomCmpAlgos.hpp
deleted file mode 100644
index 80d9ce8b7bb75bce851174b38d1e903c794e044e..0000000000000000000000000000000000000000
--- a/Utils/src/sharedMemoryInterpolatiomCmpAlgos.hpp
+++ /dev/null
@@ -1,387 +0,0 @@
-// -*-c++-*-
-// See LICENCE file at project root
-
-// ==== CMAKE =====
-// @FUSE_FFT
-// @FUSE_BLAS
-//  ==== Git =====
-
-// ================
-
-/** \brief Uniform FMM example
- *
- * \file
- * \authors B. Bramas, O. Coulaud
- *
- * This program runs the FMM Algorithm with the interpolation kernel based on
- * either uniform (grid points) or Chebychev interpolation (1/r kernel). 
- * It then compares the results with a direct computation.
- */
-
-#include <iostream>
-#include <iomanip>
-#include <memory>
-
-#include <cstdio>
-#include <cstdlib>
-#include <string>
-
-
-#include "ScalFmmConfig.h"
-#include "Utils/FGlobal.hpp"
-
-#include "Utils/FParameters.hpp"
-#include "Utils/FParameterNames.hpp"
-
-#include "Files/FFmaGenericLoader.hpp"
-// Leaves
-#include "Components/FSimpleLeaf.hpp"
-#include "Kernels/P2P/FP2PParticleContainerIndexed.hpp"
-// Octree
-#include "Containers/FOctree.hpp"
-//
-#include "Kernels/Interpolation/FInterpMatrixKernel.hpp"
-//
-#ifdef _OPENMP
-#include "Core/FFmmAlgorithmTask.hpp"
-#include "Core/FFmmAlgorithmNewTask.hpp"
-#include "Core/FFmmAlgorithmSectionTask.hpp"
-#include "Core/FFmmAlgorithmOmp4.hpp"
-#else
-#include "Core/FFmmAlgorithm.hpp"
-#endif
-//
-// Order of the Interpolation approximation
-static constexpr unsigned ORDER = 6 ;
-using FReal                 = double;
-//   1/r kernel
-//
-using MatrixKernelType     = FInterpMatrixKernelR<FReal> ;
-
-//
-/// definition of the common tree structure
-using CellType      = FInterpolationCell<FReal, ORDER>;
-//using CellUpType    = typename CellType::multipole_t;
-//using CellDownType  = typename CellType::local_expansion_t;
-//using CellSymbType  = FSymbolicData;  
-using ContainerType = FP2PParticleContainerIndexed<FReal>;
-using LeafType      = FSimpleLeaf<FReal,  ContainerType >   ;
-using OctreeType     = FOctree<FReal, CellType,ContainerType,LeafType>;
-using KernelType    = FInterpolationKernel<FReal,CellType,ContainerType,MatrixKernelType,ORDER> ;
-
-
-#ifdef _OPENMP
-using TaskFmmAlgo        = FFmmAlgorithmTask<OctreeType,CellType,ContainerType,KernelType,LeafType>;
-using TaskNewFmmAlgo     = FFmmAlgorithmNewTask<OctreeType,CellType,ContainerType,KernelType,LeafType>;
-using SectionTaskFmmAlgo = FFmmAlgorithmSectionTask<OctreeType,CellType,ContainerType,KernelType,LeafType> ;
-using Omp4FmmAlgo        = FFmmAlgorithmOmp4<OctreeType,CellType,ContainerType,KernelType,LeafType>;
-#else
-using FmmType  = FFmmAlgorithm<OctreeType,CellType,ContainerType,KernelType,LeafType>;
-#endif
-
-
-
-// Simply create particles and try the kernels
-int main(int argc, char* argv[]) {
-  const FParameterNames LocalOptionAlgo= { {"-algo"} , " Algorithm to run (task, newtask, sectiontask, omp4)\n"};
-  const FParameterNames LocalOptionCmp = {
-    {"-cmp"} , "Use to check the result with the exact solution given in the input file\n" };
-  FHelpDescribeAndExit(
-		       argc, argv,
-		       "Driver for Lagrange Or Chebychev interpolation kernel  (1/r kernel).",
-		       FParameterDefinitions::OctreeHeight,
-		       FParameterDefinitions::OctreeSubHeight,
-		       FParameterDefinitions::InputFile,
-		       FParameterDefinitions::OutputFile,
-		       FParameterDefinitions::NbThreads,
-		       LocalOptionAlgo,LocalOptionCmp
-		       );
-  
-
-  const std::string defaultFile(SCALFMMDataPath+"unitCubeXYZQ100.bfma" );
-  const std::string filename       = FParameters::getStr(argc,argv,FParameterDefinitions::InputFile.options, defaultFile.c_str());
-  const int TreeHeight    = FParameters::getValue(argc, argv, FParameterDefinitions::OctreeHeight.options, 5);
-  const int SubTreeHeight = FParameters::getValue(argc, argv, FParameterDefinitions::OctreeSubHeight.options, 2);
-  
-#ifdef _OPENMP
-  const unsigned int NbThreads = FParameters::getValue(argc, argv, FParameterDefinitions::NbThreads.options, omp_get_max_threads());
-  omp_set_num_threads(NbThreads);
-  std::cout << "\n>> Using " << NbThreads << " threads.\n" << std::endl;
-#else
-  const int NbThreads = FParameters::getValue(argc, argv, FParameterDefinitions::NbThreads.options, 1);
-  std::cout << "\n>> Sequential version.\n" << std::endl;
-#endif
-  //
-  {
-    std::string indent("    ");
-    auto w = std::setw(18);
-    std::cout << "Parameters" << std::endl << std::left
-	      << indent << w << "Octree Depth: "     << TreeHeight    << std::endl
-	      << indent << w << "SubOctree depth: "  << SubTreeHeight << std::endl
-	      << indent << w << "Input file  name: " << filename      << std::endl
-	      << indent << w << "Thread number: "    << NbThreads     << std::endl
-	      << std::endl;
-  }
-  //
-  // init timer
-  FTic time;
-  
-  // open particle file
-  ////////////////////////////////////////////////////////////////////
-  //
-  FFmaGenericLoader<FReal> loader(filename);
-  if (loader.getNbRecordPerline() !=8 && FParameters::existParameter(argc, argv, "-cmp") ){
-    std::cerr << "File should contain 8 data to read (x,y,z,q,p,fx,fy,fz)\n";
-    std::exit(EXIT_FAILURE);
-  }
-  FSize nbParticles = loader.getNumberOfParticles() ;
-  FmaRWParticle<FReal,8,8> * const particles = new FmaRWParticle<FReal, 8,8>[nbParticles];
-    //
-  //
-  // open particle file
-  ////////////////////////////////////////////////////////////////////
-  //
-  if(loader.getNbRecordPerline() == 8 ){
-    loader.fillParticle(particles,nbParticles);
-  }
-  else {
-    FmaRWParticle<FReal,4,4> * const part = new FmaRWParticle<FReal, 4,4>[nbParticles];
-    loader.fillParticle(part,nbParticles);
-    for(int idx = 0 ; idx <  nbParticles  ; ++idx){
-      auto p = part[idx].getPosition() ;
-      particles[idx].setPosition(p) ; 
-      particles[idx].setPhysicalValue(part[idx].getPhysicalValue() );
-    }
-  }
-  time.tac();
-  //
-  // init oct-tree
-  OctreeType tree(TreeHeight, SubTreeHeight, loader.getBoxWidth(), loader.getCenterOfBox());
-  FReal  energyD = 0.0 ;
-  //
-  // Read particles and insert them in octree
-  { // -----------------------------------------------------
-    std::cout << "Creating & Inserting " << loader.getNumberOfParticles()
-	      << " particles ..." << std::endl;
-    std::cout << "\tHeight : " << TreeHeight << " \t sub-height : " << SubTreeHeight << std::endl;
-    time.tic();
-    //
-    //
-    //
-    /////////////////////////////////////////////////////////////////////////////////////////////////
-    // Compute direct energy
-    /////////////////////////////////////////////////////////////////////////////////////////////////
-    
-    for(int idx = 0 ; idx <  nbParticles  ; ++idx){
-      tree.insert(particles[idx].getPosition() , idx, particles[idx].getPhysicalValue() );
-      energyD +=  particles[idx].getPotential()*particles[idx].getPhysicalValue() ;
-    } 
-    time.tac();
-    std::cout << "Done  " << "(@Creating and Inserting Particles = "
-	      << time.elapsed() << " s) ." << std::endl;
-  }
-  ////////////////////////////////////////////////////////////////////
-  //
-  //    Execute FMM Algorithm
-  //
-  ////////////////////////////////////////////////////////////////////
-
-  { // -----------------------------------------------------
-    std::cout << "\n" << interpolationType << "  FMM (ORDER= "<< ORDER << ") ... " << std::endl;
-    
-    const MatrixKernelType    MatrixKernel;
-    time.tic();
-    //
-    std::unique_ptr<KernelType> kernels(new KernelType(TreeHeight, loader.getBoxWidth(), 
-							 loader.getCenterOfBox(),&MatrixKernel));
-    std::string  algoStr  = FParameters::getStr(argc,argv,"-algo",  "task");
-    //
-    TaskFmmAlgo         algo1(&tree, kernels.get() );
-    TaskNewFmmAlgo      algo2(&tree, kernels.get() );
-    SectionTaskFmmAlgo  algo3(&tree, kernels.get() );
-    Omp4FmmAlgo         algo4(&tree, kernels.get() );
-    
-    FAbstractAlgorithm * algo  = nullptr;
-    FAlgorithmTimers   * timer = nullptr;
-    if( "task" == algoStr) {
-      algo  = &algo1 ;
-      timer = &algo1 ;
-    } else if( "newtask" == algoStr) {
-      algo  = &algo2 ;
-      timer = &algo2 ;
-    } else if ( "sectiontask" == algoStr ) {
-      algo  = &algo3 ;
-      timer = &algo3 ;   
-    } else if ( "omp4" == algoStr ) {
-      algo  = &algo4 ;
-      timer = &algo4 ;
-    } else {
-      std::cout << "Unknown algorithm: " << algoStr << std::endl;
-      std::exit(EXIT_FAILURE);
-    }
-    std::cout << "Algorithm to check: "<< algoStr <<std::endl;
-    time.tic();
-    
-    //
-    algo->execute();   // Here the call of the FMM algorithm
-    //
-    time.tac();
-    std::cout << "Timers Far Field \n"
-	      << "P2M " << timer->getTime(FAlgorithmTimers::P2MTimer) << " seconds\n"
-	      << "M2M " << timer->getTime(FAlgorithmTimers::M2MTimer) << " seconds\n"
-	      << "M2L " << timer->getTime(FAlgorithmTimers::M2LTimer) << " seconds\n"
-	      << "L2L " << timer->getTime(FAlgorithmTimers::L2LTimer) << " seconds\n"
-	      << "L2P " << timer->getTime(FAlgorithmTimers::L2PTimer) << " seconds\n"
-	      << "P2P and L2P " << timer->getTime(FAlgorithmTimers::NearTimer) << " seconds\n"
-	      << std::endl;
-    
-    
-    std::cout << "Done  " << "(@Algorithm = " << time.elapsed() << " s) ." << std::endl;
-  }
-  // -----------------------------------------------------
-  //
-  // Some output
-  //
-  //
-  { // -----------------------------------------------------
-    FSize N1=0, N2= loader.getNumberOfParticles()/2, N3= loader.getNumberOfParticles() -1; ;
-    FReal energy =0.0 ;
-    //
-    //   Loop over all leaves
-    //
-    std::cout <<std::endl<<" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "<<std::endl;
-    std::cout << std::scientific;
-    std::cout.precision(10) ;
-
-    tree.forEachLeaf([&](LeafType* leaf){
-	const FReal*const posX = leaf->getTargets()->getPositions()[0];
-	const FReal*const posY = leaf->getTargets()->getPositions()[1];
-	const FReal*const posZ = leaf->getTargets()->getPositions()[2];
-
-	const FReal*const potentials = leaf->getTargets()->getPotentials();
-	const FReal*const forcesX = leaf->getTargets()->getForcesX();
-	const FReal*const forcesY = leaf->getTargets()->getForcesY();
-	const FReal*const forcesZ = leaf->getTargets()->getForcesZ();
-	const FSize nbParticlesInLeaf = leaf->getTargets()->getNbParticles();
-	const FReal*const physicalValues = leaf->getTargets()->getPhysicalValues();
-
-	const FVector<FSize>& indexes = leaf->getTargets()->getIndexes();
-
-	for(FSize idxPart = 0 ; idxPart < nbParticlesInLeaf ; ++idxPart){
-	  const FSize indexPartOrig = indexes[idxPart];
-	  if ((indexPartOrig == N1) || (indexPartOrig == N2) || (indexPartOrig == N3)  ) {
-	    std::cout << "Index "<< indexPartOrig <<"  potential  " << potentials[idxPart]
-		      << " Pos "<<posX[idxPart]<<" "<<posY[idxPart]<<" "<<posZ[idxPart]
-		      << "   Forces: " << forcesX[idxPart] << " " << forcesY[idxPart] << " "<< forcesZ[idxPart] <<std::endl;
-	  }
-	  energy += potentials[idxPart]*physicalValues[idxPart] ;
-	}
-      });
-    std::cout <<std::endl<<"Energy: "<< energy<<std::endl;
-    std::cout <<std::endl<<" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "<<std::endl<<std::endl;
-
-  }
-  // -----------------------------------------------------
-  if(FParameters::existParameter(argc, argv, FParameterDefinitions::OutputFile.options)){
-    std::string name(FParameters::getStr(argc,argv,FParameterDefinitions::OutputFile.options,   "output.fma"));
-    FFmaGenericWriter<FReal> writer(name) ;
-    //
-    FSize NbPoints = loader.getNumberOfParticles();
-    FReal * computedParticles = new FReal[8*NbPoints]() ;
-    memset(computedParticles,0,8*NbPoints*sizeof(FReal));
-    FSize j = 0 ;
-    tree.forEachLeaf([&](LeafType* leaf){
-	//
-	// Input
-	const FReal*const posX = leaf->getTargets()->getPositions()[0];
-	const FReal*const posY = leaf->getTargets()->getPositions()[1];
-	const FReal*const posZ = leaf->getTargets()->getPositions()[2];
-	const FReal*const physicalValues = leaf->getTargets()->getPhysicalValues();
-	const FVector<FSize>& indexes = leaf->getTargets()->getIndexes();
-	//
-	// Computed data
-	const FReal*const potentials = leaf->getTargets()->getPotentials();
-	const FReal*const forcesX = leaf->getTargets()->getForcesX();
-	const FReal*const forcesY = leaf->getTargets()->getForcesY();
-	const FReal*const forcesZ = leaf->getTargets()->getForcesZ();
-	//
-	const FSize nbParticlesInLeaf = leaf->getTargets()->getNbParticles();
-	for(FSize idxPart = 0 ; idxPart < nbParticlesInLeaf ; ++idxPart){
-	  j = 8*indexes[idxPart];
-	  computedParticles[j]      = posX[idxPart] ;
-	  computedParticles[j+1]  = posY[idxPart] ;
-	  computedParticles[j+2]  = posZ[idxPart] ;
-	  computedParticles[j+3]  = physicalValues[idxPart] ;
-	  computedParticles[j+4]  = potentials[idxPart] ;
-	  computedParticles[j+5]  =  forcesX[idxPart] ;
-	  computedParticles[j+6]  =  forcesY[idxPart] ;
-	  computedParticles[j+7]  =  forcesZ[idxPart] ;
-	}
-      });
-
-    writer.writeHeader( loader.getCenterOfBox(), loader.getBoxWidth() ,  NbPoints, sizeof(FReal), 8) ;
-    writer.writeArrayOfReal(computedParticles,  8 , NbPoints);
-
-    delete[] computedParticles;
-
-    //
-    std::string name1( "output.fma");
-    //
-    FFmaGenericWriter<FReal> writer1(name1) ;
-    writer1.writeDistributionOfParticlesFromOctree(&tree,NbPoints) ;
-  }
-  if(FParameters::existParameter(argc, argv, "-cmp") ){
-    std::cout <<std::endl<<" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "<<std::endl;
-    std::cout << std::scientific;
-    std::cout.precision(10) ;
-
-    printf("Compute Diff...");
-    FMath::FAccurater<FReal> potentialDiff;
-    FMath::FAccurater<FReal> fx, fy, fz, f;
-    FReal energy = 0.0;
-    { // Check that each particle has been summed with all other
-      
-      tree.forEachLeaf([&](LeafType* leaf){
-	  const FReal*const potentials = leaf->getTargets()->getPotentials();
-	  const FReal*const forcesX = leaf->getTargets()->getForcesX();
-	  const FReal*const forcesY = leaf->getTargets()->getForcesY();
-	  const FReal*const forcesZ = leaf->getTargets()->getForcesZ();
-	  const FSize nbParticlesInLeaf = leaf->getTargets()->getNbParticles();
-	  const FReal*const physicalValues = leaf->getTargets()->getPhysicalValues();
-	  
-	  const FVector<FSize>& indexes = leaf->getTargets()->getIndexes();
-	  
-	  for(FSize idxPart = 0 ; idxPart < nbParticlesInLeaf ; ++idxPart){
-	    const FSize indexPartOrig = indexes[idxPart];
-	    potentialDiff.add(particles[indexPartOrig].getPotential(),potentials[idxPart]);
-	    fx.add(particles[indexPartOrig].getForces()[0],forcesX[idxPart]);
-	    fy.add(particles[indexPartOrig].getForces()[1],forcesY[idxPart]);
-	    fz.add(particles[indexPartOrig].getForces()[2],forcesZ[idxPart]);
-	    f.add(particles[indexPartOrig].getForces()[0],forcesX[idxPart]);
-	    f.add(particles[indexPartOrig].getForces()[1],forcesY[idxPart]);
-	    f.add(particles[indexPartOrig].getForces()[2],forcesZ[idxPart]);
-	    energy   += potentials[idxPart]*physicalValues[idxPart];
-	  }
-	});
-
-      std::cout << energy << " " << energyD << std::endl;
-      delete[] particles;
-
-      f.setNbElements(nbParticles);
-      std::cout << "FChebSymKernel Energy "  << FMath::Abs(energy-energyD) <<  "  Relative     "<< FMath::Abs(energy-energyD) / FMath::Abs(energyD) <<std::endl;
-      std::cout << " Potential Error " << potentialDiff << std::endl;
-      std::cout << " Fx Error " << fx << std::endl;
-      std::cout << " Fy Error " << fy << std::endl;
-      std::cout << " Fz Error " << fz << std::endl;
-      std::cout << " F  Error " << f << std::endl;
-      std::cout <<std::endl<<"Energy: "<< energy<<std::endl;
-      std::cout <<std::endl<<" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "<<std::endl<<std::endl;
-    }
-    
-    // -----------------------------------------------------
-    
-  }
-
-
-  return 0;
-}