diff --git a/build.sh b/build.sh
index 778d3dc66068e13031e26b0ea61f8c15e33d40ef..c6e3ecd381c52651b9ac08ce55c8ad0657d28a05 100755
--- a/build.sh
+++ b/build.sh
@@ -27,6 +27,7 @@ if [ x"$hostname" == x"cifarm-centos-node.mpi-cbg.de"  ]; then
 	./install_CMAKE_on_CI.sh $HOME/openfpm_dependencies/openfpm_pdata/$branch/
 	export PATH="$HOME/openfpm_dependencies/openfpm_pdata/$branch/CMAKE/bin:$PATH"
 	foward_options="--with-cuda-on-backend=OpenMP"
+	rm -rf $HOME/openfpm_dependencies/openfpm_pdata/$branch/EIGEN
 fi
 
 if [ x"$hostname" == x"cifarm-ubuntu-node"  ]; then
@@ -35,6 +36,7 @@ if [ x"$hostname" == x"cifarm-ubuntu-node"  ]; then
 	./install_MPI_mpich.sh $HOME/openfpm_dependencies/openfpm_pdata/$branch/ 4
 	export PATH="/opt/bin:$PATH"
 	foward_options="--with-cuda-on-backend=OpenMP"
+	rm -rf $HOME/openfpm_dependencies/openfpm_pdata/$branch/EIGEN
 fi
 
 if [ x"$hostname" == x"cifarm-mac-node.mpi-cbg.de"  ]; then
@@ -47,6 +49,7 @@ if [ x"$hostname" == x"cifarm-mac-node.mpi-cbg.de"  ]; then
 #	rm -rf $HOME/openfpm_dependencies/openfpm_pdata/$branch/PETSC
         #./install_CMAKE_on_CI.sh $HOME/openfpm_dependencies/openfpm_pdata/$branch/
 #	export PATH="$HOME/openfpm_dependencies/openfpm_pdata/$branch/CMAKE/bin:$PATH"
+	rm -rf $HOME/openfpm_dependencies/openfpm_pdata/$branch/EIGEN
 fi
 
 if [ x"$hostname" == x"falcon1" ]; then
diff --git a/script/remove_old b/script/remove_old
index 8ecffb858cebf4ee124cb791f6267b054eb93323..639453e988388bb6f6264cfe68dd4cd2442c15a8 100755
--- a/script/remove_old
+++ b/script/remove_old
@@ -136,6 +136,7 @@ function remove_old()
             echo -e "\033[1;34;5m  SuiteSparse has been updated to version 5.10.1, the component will be updated automatically      \033[0m"
             echo -e "\033[1;34;5m  ------------------------------------------------------------------------------------------- \033[0m"
             sleep 5
+	    rm -rf $1/EIGEN
             rm -rf $1/SUITESPARSE
             rm -rf $1/PETSC
         fi
diff --git a/src/Amr/grid_dist_amr.hpp b/src/Amr/grid_dist_amr.hpp
index 8fd29645029de596b15563e1c0d9760dd4e77187..95160d9a0a3d61f8c9937671e320399768c2f25b 100644
--- a/src/Amr/grid_dist_amr.hpp
+++ b/src/Amr/grid_dist_amr.hpp
@@ -977,6 +977,43 @@ public:
 		return gd_array.get(v1.getLvl()).getGKey(v1.getKey());
 	}
 
+	/*! \brief Get the position on the grid in global coordinates
+	 *
+	 * \param lvl level
+	 * \param v1 point in the level
+	 *
+	 * \return the position in global coordinates
+	 *
+	 */
+	grid_key_dx<dim> getGKey(int lvl, const grid_dist_key_dx<dim> & v1)
+	{
+		return gd_array.get(lvl).getGKey(v1);
+	}
+
+	/*! \brief Get the the position of the point
+	 *
+	 * \param v1 AMR point
+	 *
+	 * \return the position in global coordinates
+	 *
+	 */
+	Point<dim,St> getPos(const grid_dist_amr_key<dim> & v1)
+	{
+		return gd_array.get(v1.getLvl()).getPos(v1.getKey());
+	}
+
+	/*! \brief Get the the position of the point
+	 *
+	 * \param v1 AMR point
+	 *
+	 * \return the position in global coordinates
+	 *
+	 */
+	Point<dim,St> getPos(int lvl, const grid_dist_key_dx<dim> & v1)
+	{
+		return gd_array.get(lvl).getPos(v1);
+	}
+
 	/*! \brief return the spacing for the grid in the level lvl
 	 *
 	 * \param lvl level
@@ -989,6 +1026,27 @@ public:
 		return gd_array.get(lvl).getSpacing();
 	}
 
+	/* \brief Check if a point exist
+	 *
+	 * \param v1 point to checl
+	 * 
+	 */
+	bool existPoint(const grid_dist_amr_key<dim> & v1)
+	{
+		return gd_array.get(v1.getLvl()).existPoint(v1.getKey());
+	}
+
+	/* \brief Check if a point exist
+	 *
+	 * \param v1 point to checl
+	 * 
+	 */
+	bool existPoint(int lvl, const grid_dist_key_dx<dim> & v1)
+	{
+		return gd_array.get(lvl).existPoint(v1);
+	}
+
+
 	/*! \brief Write on vtk file
 	 *
 	 * \param output filename output