diff --git a/example/Vector/0_simple/main.cpp b/example/Vector/0_simple/main.cpp
index 0b7a3364b5f8a86a05c7521e810f6d2dfa46eb2b..45d205a71cbcd3f15cf20c37771bd132123f7537 100644
--- a/example/Vector/0_simple/main.cpp
+++ b/example/Vector/0_simple/main.cpp
@@ -7,6 +7,7 @@
  * \subpage Vector_4_reo
  * \subpage Vector_4_comp_reo
  * \subpage Vector_4_complex_prop
+ * \subpage Vector_4_mp_cl
  *
  */
 
diff --git a/example/Vector/4_multiphase_celllist/main.cpp b/example/Vector/4_multiphase_celllist/main.cpp
index 8acfd6f1879a31f6f8110f7954cd249b7f50198e..772fb4b6c8d27f2382053b4458f81c4d6c810526 100644
--- a/example/Vector/4_multiphase_celllist/main.cpp
+++ b/example/Vector/4_multiphase_celllist/main.cpp
@@ -28,7 +28,7 @@ int main(int argc, char* argv[])
 	 * Here we Initialize the library, and we create a set of distributed vectors all forced to have the same
 	 * decomposition. Each vector identify one phase
 	 *
-	 * \snippet Vector/1_celllist/main.cpp Initialization and parameters
+	 * \snippet Vector/4_multiphase_celllist/main.cpp Initialization and parameters
 	 *
 	 */
 
@@ -49,25 +49,6 @@ int main(int argc, char* argv[])
 	// ghost, big enough to contain the interaction radius
 	Ghost<3,float> ghost(1.0/(128-2));
 
-	//! \cond [Initialization and parameters] \endcond
-
-	/*!
-	 * \page Vector_1_celllist Vector 1 Cell-list
-	 *
-	 * ## %Vector create ##
-	 *
-	 * Here we define a distributed vector in 3D, containing 3 properties, a
-	 * scalar double, a vector double[3], and a tensor or rank 2 double[3][3].
-	 * In this case the vector contain 0 particles initially
-	 *
-	 * \see \ref vector_inst
-	 *
-	 * \snippet Vector/1_celllist/main.cpp vector inst
-	 *
-	 */
-
-	//! \cond [vector inst] \endcond
-
 	openfpm::vector< vector_dist<3,float, aggregate<double,double>> > phases;
 
 	// first phase
@@ -78,7 +59,21 @@ int main(int argc, char* argv[])
 	phases.add( vector_dist<3,float, aggregate<double,double>>(phases.get(2).getDecomposition(),4096) );
 	phases.add( vector_dist<3,float, aggregate<double,double>>(phases.get(3).getDecomposition(),4096) );
 
-	//! \cond [grid like part] \endcond
+	//! \cond [Initialization and parameters] \endcond
+
+
+	/*!
+	 * \page Vector_4_mp_cl Vector 4 Multi Phase cell-list
+	 *
+	 * ## Initialization ##
+	 *
+	 * We initialize all the phases with particle randomly positioned in the space
+	 *
+	 * \snippet Vector/4_multiphase_celllist/main.cpp rand dist
+	 *
+	 */
+
+	//! \cond [rand dist] \endcond
 
 	auto it = phases.get(0).getDomainIterator();
 
@@ -104,27 +99,64 @@ int main(int argc, char* argv[])
 	openfpm::vector<iterator> phase_it;
 
 	for (size_t i = 0 ; i < phases.size() ; i++)
-	{
 		phases.get(i).map();
-		phase_it.add(phases.get(i).getDomainIterator());
-	}
 
-	// Construct one single Multi-phase cell list to use in the computation
+	//! \cond [rand dist] \endcond
+
+	/*!
+	 * \page Vector_4_mp_cl Vector 4 Multi Phase cell-list
+	 *
+	 * ## Multi-phase cell-list construction ##
+	 *
+	 * In this part we construct the Multi-phase cell list. The multiphase cell list has 3 parameters
+	 * * one is the dimensionality (3)
+	 * * The precision of the coordinates (float),
+	 * * How many bit to use for the phase.
+	 *   Multi-phase cell-list try to pack into a 64bit number information about the particle id and the
+	 *   the phase id.
+	 *
+	 * \snippet Vector/4_multiphase_celllist/main.cpp cl construction
+	 *
+	 */
 
+	//! \cond [cl construction] \endcond
+
+	// Construct one single Multi-phase cell list to use in the computation
+	// in 3d, precision float, 2 bit dedicated to the phase for a maximum of 2^2 = 4 (Maximum number of phase)
 	CellListM<3,float,2> NN;
 
-	while (it.isNext())
+	// for all the phases i
+	for (size_t i = 0; i < phases.size() ; i++)
 	{
-		for (size_t i = 0; i < phases.size() ; i++)
+		// iterate across all the particle of the phase i
+		auto it = phases.get(i).getDomainIterator();
+		while (it.isNext())
 		{
 			auto key = it.get();
 
+			// Add the particle of the phase i to the cell list
 			NN.add(phases.get(i).getPos(key), key.getKey(), i);
 
 			++it;
 		}
 	}
 
+	//! \cond [cl construction] \endcond
+
+	/*!
+	 * \page Vector_4_mp_cl Vector 4 Multi Phase cell-list
+	 *
+	 * ## Multi-phase cell-list usage ##
+	 *
+	 * After construction we show how to use the Cell-list. In this case we accumulate on the property
+	 * 0 of the phase 0 the distance of the near particles from all the phases
+	 *
+	 * \snippet Vector/4_multiphase_celllist/main.cpp cl usage
+	 *
+	 */
+
+	//! \cond [cl usage] \endcond
+
 	vector_dist<3,float, aggregate<double,double> > & current_phase = phases.get(0);
 
 	// Get the iterator of the particles of phase 0
@@ -163,16 +195,16 @@ int main(int argc, char* argv[])
 		++it2;
 	}
 
-	//! \cond [verletlist] \endcond
+	//! \cond [cl usage] \endcond
 
 	/*!
-	 * \page Vector_1_celllist Vector 1 Cell-list
+	 * \page Vector_4_mp_cl Vector 4 Multi Phase cell-list
 	 *
 	 * ## Finalize ## {#finalize}
 	 *
-	 *  At the very end of the program we have always to de-initialize the library
+	 *  At the very end of the program we have always de-initialize the library
 	 *
-	 * \snippet Vector/1_celllist/main.cpp finalize
+	 * \snippet Vector/4_multiphase_celllist/main.cpp finalize
 	 *
 	 */
 
@@ -183,11 +215,11 @@ int main(int argc, char* argv[])
 	//! \cond [finalize] \endcond
 
 	/*!
-	 * \page Vector_1_celllist Vector 1 Cell-list
+	 * \page Vector_4_mp_cl Vector 4 Multi Phase cell-list
 	 *
 	 * # Full code # {#code}
 	 *
-	 * \include Vector/1_celllist/main.cpp
+	 * \include Vector/4_multiphase_celllist/main.cpp
 	 *
 	 */
 }