diff --git a/Src/Files/FMpiFmaLoader.hpp b/Src/Files/FMpiFmaLoader.hpp
index ec1184e26f160d9d278e6f14d5b9194f0b6e5c79..a964a8c3fec83b3181b817a5741b920d41a893d4 100755
--- a/Src/Files/FMpiFmaLoader.hpp
+++ b/Src/Files/FMpiFmaLoader.hpp
@@ -24,66 +24,66 @@
 #include "FAbstractLoader.hpp"
 #include "../Utils/FPoint.hpp"
 #include "../Utils/FMpi.hpp"
-
+#include "../Utils/FLog.hpp"
 /**
-* @author Berenger Bramas (berenger.bramas@inria.fr)
-* @class FMpiFmaLoader
-* Please read the license
-*
-* Load a file with a format like :
-* NB_particles Box_width Box_X Box_Y Box_Z // init
-* X Y Z // one particle by line
-* ....
-* @code
-*    FMpiFmaLoader<FBasicParticle> loader("../ADir/Tests/particles.basic.txt"); <br>
-*    if(!loader.isOpen()){ <br>
-*        std::cout << "Loader Error\n"; <br>
-*        return 1; <br>
-*    } <br>
-* <br>
-*    FOctree<FBasicParticle, TestCell, FSimpleLeaf> tree(loader.getBoxWidth(),loader.getCenterOfBox()); <br>
-* <br>
-*    for(int idx = 0 ; idx < loader.getNumberOfParticles() ; ++idx){ <br>
-*        FBasicParticle* const part = new FBasicParticle(); <br>
-*        loader.fillParticle(part); <br>
-*        tree.insert(part); <br>
-*    } <br>
-* @endcode
-*
-* Particle has to extend {FExtendPhysicalValue,FExtendPosition}
-*/
+ * @author Berenger Bramas (berenger.bramas@inria.fr)
+ * @class FMpiFmaLoader
+ * Please read the license
+ *
+ * Load a file with a format like :
+ * NB_particles Box_width Box_X Box_Y Box_Z // init
+ * X Y Z // one particle by line
+ * ....
+ * @code
+ *    FMpiFmaLoader<FBasicParticle> loader("../ADir/Tests/particles.basic.txt"); <br>
+ *    if(!loader.isOpen()){ <br>
+ *        std::cout << "Loader Error\n"; <br>
+ *        return 1; <br>
+ *    } <br>
+ * <br>
+ *    FOctree<FBasicParticle, TestCell, FSimpleLeaf> tree(loader.getBoxWidth(),loader.getCenterOfBox()); <br>
+ * <br>
+ *    for(int idx = 0 ; idx < loader.getNumberOfParticles() ; ++idx){ <br>
+ *        FBasicParticle* const part = new FBasicParticle(); <br>
+ *        loader.fillParticle(part); <br>
+ *        tree.insert(part); <br>
+ *    } <br>
+ * @endcode
+ *
+ * Particle has to extend {FExtendPhysicalValue,FExtendPosition}
+ */
 class FMpiFmaLoader : public FAbstractLoader {
 protected:
-    FPoint centerOfBox;    //< The center of box read from file
-    FReal boxWidth;             //< the box width read from file
-    FSize totalNbParticles;     //< the number of particles read from file
-    FSize nbParticles;          //< the number of particles read from file
-    bool isOpenFlag;            //< to knwo if the file is open now
-    FReal* particles;           //< the particles loaded from the binary file
-    MPI_Offset idxParticles;    //< to iterate on the particles array
-
+  FPoint centerOfBox;         //< The center of box read from file
+  FReal boxWidth;             //< the box width read from file
+  FSize totalNbParticles;     //< the number of particles read from file
+  FSize nbParticles;          //< the number of particles read from file for this proc
+  bool isOpenFlag;            //< to knwo if the file is open now
+  FReal* particles;           //< the particles loaded from the binary file
+  MPI_Offset idxParticles;    //< to iterate on the particles array
+  int start;
 public:
-    /**
-    * The constructor need the file name
-    * @param filename the name of the file to open
-    * you can test if file is successfuly open by calling hasNotFinished()
-    */
-    FMpiFmaLoader(const char* const filename, const FMpi::FComm& comm, const bool useMpiIO = false)
-            : boxWidth(0), totalNbParticles(0), nbParticles(0), isOpenFlag(false), particles(0), idxParticles(0) {
-        if( useMpiIO ){
-            char nonConstFilename[512];
-            strcpy(nonConstFilename,filename);
-            MPI_File file;
-            if(MPI_File_open(comm.getComm(), nonConstFilename, MPI_MODE_RDONLY, MPI_INFO_NULL, &file) == MPI_SUCCESS){
-                int sizeOfElement(0);
-                FReal xyzBoxWidth[4];
+  /**
+   * The constructor need txhe file name
+   * @param filename the name of the file to open
+   * you can test if file is successfuly open by calling hasNotFinished()
+   */
+  FMpiFmaLoader(const char* const filename, const FMpi::FComm& comm, const bool useMpiIO = false)
+    : boxWidth(0), totalNbParticles(0), nbParticles(0), isOpenFlag(false), particles(0), idxParticles(0), start(0) {
+    if( useMpiIO ){
+      char nonConstFilename[512];
+      strcpy(nonConstFilename,filename);
+      MPI_File file;
+      if(MPI_File_open(comm.getComm(), nonConstFilename, MPI_MODE_RDONLY, MPI_INFO_NULL, &file) == MPI_SUCCESS){
+	int sizeOfElement(0);
+	FReal xyzBoxWidth[4];
 
-                MPI_Status status;
-                if( MPI_File_read(file, &sizeOfElement, 1, MPI_INT, &status) == MPI_SUCCESS
-                    && MPI_File_read(file, &this->totalNbParticles, 1, MPI_LONG_LONG, &status) == MPI_SUCCESS
-                        && MPI_File_read(file, xyzBoxWidth, 4, FMpi::GetType(xyzBoxWidth[0]), &status) == MPI_SUCCESS ){
+	MPI_Status status;
+	if( MPI_File_read(file, &sizeOfElement, 1, MPI_INT, &status) == MPI_SUCCESS
+	    && MPI_File_read(file, &this->totalNbParticles, 1, MPI_LONG_LONG, &status) == MPI_SUCCESS
+	    && MPI_File_read(file, xyzBoxWidth, 4, FMpi::GetType(xyzBoxWidth[0]), &status) == MPI_SUCCESS ){
 
-                    FLOG(if(sizeOfElement != sizeof(FReal)){)
+	  FLOG(if(sizeOfElement != sizeof(FReal)){)
                         FLOG( FLog::Controller.writeFromLine("Warning type size between file and FReal are differents\n", __LINE__, __FILE__); )
                     FLOG(})
 
@@ -106,6 +106,7 @@ public:
                     const FSize startPart = comm.getLeft(this->totalNbParticles);
                     const FSize endPart   = comm.getRight(this->totalNbParticles);
                     nbParticles = (endPart - startPart);
+		    this->start = int(startPart);
                     const FSize bufsize = nbParticles * 4;
                     // local number to read
                     particles = new FReal[bufsize];
@@ -160,10 +161,11 @@ public:
                 const FSize startPart = comm.getLeft(this->totalNbParticles);
                 const FSize endPart   = comm.getRight(this->totalNbParticles);
                 nbParticles = (endPart - startPart);
+		this->start = int(startPart);
                 const FSize bufsize = nbParticles * 4;
                 // local number to read
                 particles = new FReal[bufsize];
-
+		
                 fseek(file, long(headDataOffSet + startPart * 4 * sizeof(FReal)), SEEK_SET);
 
                 if( fread(particles, sizeof(FReal), int(bufsize), file) != unsigned(bufsize)){
@@ -194,13 +196,21 @@ public:
     }
 
     /**
-      * To get the number of particles from this loader
-      * @param the number of particles the loader can fill
+      * To get the number of particles to be used by this proc from this loader
+      * @param the number of particles for this proc the loader can fill
       */
     FSize getNumberOfParticles() const{
         return this->nbParticles;
     }
 
+  /**
+   * To get the number of particles to be used by this proc from this loader
+   * @param the number of particles for this proc the loader can fill
+   */
+  FSize getTotalNumberOfParticles() const{
+        return this->totalNbParticles;
+  }
+  
     /**
       * The center of the box from the simulation file opened by the loader
       * @return box center
@@ -217,6 +227,15 @@ public:
         return this->boxWidth;
     }
 
+  /**
+   * The starting index of calling processus
+   * @return start
+   */
+  int getStart() const{
+    return int(this->start);
+  }
+  
+
     /**
       * Fill a particle
       * @warning to work with the loader, particles has to expose a setPosition method