diff --git a/src/FiniteDifference/FDScheme.hpp b/src/FiniteDifference/FDScheme.hpp
index 9f50ef2e1f6a4f7e9a9a9069d88ed9080f1c946c..75718266fabbd864b8236bdc360cbafb4c5126a2 100644
--- a/src/FiniteDifference/FDScheme.hpp
+++ b/src/FiniteDifference/FDScheme.hpp
@@ -12,7 +12,6 @@
 #include "Grid/grid_dist_id.hpp"
 #include "Grid/Iterators/grid_dist_id_iterator_sub.hpp"
 #include "eq.hpp"
-#include "data_type/scalar.hpp"
 #include "NN/CellList/CellDecomposer.hpp"
 #include "Grid/staggered_dist_grid_util.hpp"
 #include "Grid/grid_dist_id.hpp"
@@ -127,7 +126,7 @@ class FDScheme
 public:
 
 	//! Distributed grid map
-	typedef grid_dist_id<Sys_eqs::dims,typename Sys_eqs::stype,scalar<size_t>,typename Sys_eqs::b_grid::decomposition::extended_type> g_map_type;
+	typedef grid_dist_id<Sys_eqs::dims,typename Sys_eqs::stype,aggregate<size_t>,typename Sys_eqs::b_grid::decomposition::extended_type> g_map_type;
 
 	//! Type that specify the properties of the system of equations
 	typedef Sys_eqs Sys_eqs_typ;
diff --git a/src/FiniteDifference/FDScheme_unit_tests.hpp b/src/FiniteDifference/FDScheme_unit_tests.hpp
index 83dd6f93b461b49491c2c604e510e529f59d3fb5..43cc916b127a2a1cc20a09c519d1967dfbe06bcc 100644
--- a/src/FiniteDifference/FDScheme_unit_tests.hpp
+++ b/src/FiniteDifference/FDScheme_unit_tests.hpp
@@ -37,7 +37,7 @@ struct sys_nn
 	typedef float stype;
 
 	//! Base grid
-	typedef grid_dist_id<dims,stype,scalar<float>,CartDecomposition<2,stype> > b_grid;
+	typedef grid_dist_id<dims,stype,aggregate<float>,CartDecomposition<2,stype> > b_grid;
 
 	//! specify that we are on testing
 	typedef void testing;
@@ -60,7 +60,7 @@ struct sys_pp
 	typedef float stype;
 
 	//! Base grid
-	typedef grid_dist_id<dims,stype,scalar<float>,CartDecomposition<2,stype> > b_grid;
+	typedef grid_dist_id<dims,stype,aggregate<float>,CartDecomposition<2,stype> > b_grid;
 
 	//! Indicate we are on testing
 	typedef void testing;
@@ -89,7 +89,7 @@ struct syss_nn
 	typedef float stype;
 
 	//! Base grid
-	typedef grid_dist_id<dims,stype,scalar<float>,CartDecomposition<2,stype> > b_grid;
+	typedef grid_dist_id<dims,stype,aggregate<float>,CartDecomposition<2,stype> > b_grid;
 
 	//! Indicate we are on testing
 	typedef void testing;
@@ -115,7 +115,7 @@ struct syss_pp
 	typedef float stype;
 
 	//! Base grid
-	typedef grid_dist_id<dims,stype,scalar<float>,CartDecomposition<2,stype> > b_grid;
+	typedef grid_dist_id<dims,stype,aggregate<float>,CartDecomposition<2,stype> > b_grid;
 
 	//! Indicate we are on testing
 	typedef void testing;
diff --git a/src/FiniteDifference/eq.hpp b/src/FiniteDifference/eq.hpp
index 183437eaa10886810e95e17dcf92b25da20d7ec8..e14175116e24ec92d19b56152c7d497b7c4365f6 100644
--- a/src/FiniteDifference/eq.hpp
+++ b/src/FiniteDifference/eq.hpp
@@ -14,7 +14,6 @@
 //#define PERIODIC true
 //#define NON_PERIODIC false
 
-#include "data_type/scalar.hpp"
 #include "util/util_num.hpp"
 
 /*! \brief Equation
diff --git a/src/FiniteDifference/eq_unit_test.hpp b/src/FiniteDifference/eq_unit_test.hpp
index 97af1306e54909f700ff2bdf48586b216b1a4ce3..099c3da423e80a9da93c11fd667a35896d24dcce 100644
--- a/src/FiniteDifference/eq_unit_test.hpp
+++ b/src/FiniteDifference/eq_unit_test.hpp
@@ -13,7 +13,6 @@
 #include "FiniteDifference/sum.hpp"
 #include "FiniteDifference/mul.hpp"
 #include "Grid/grid_dist_id.hpp"
-#include "data_type/scalar.hpp"
 #include "Decomposition/CartDecomposition.hpp"
 #include "Vector/Vector.hpp"
 #include "Solvers/umfpack_solver.hpp"
diff --git a/src/FiniteDifference/eq_unit_test_3d.hpp b/src/FiniteDifference/eq_unit_test_3d.hpp
index 368483b9a403670e2df6275568441fdf4c8d7073..26f6ad250fcc167eb0ed9b1a30ec232deed610b8 100644
--- a/src/FiniteDifference/eq_unit_test_3d.hpp
+++ b/src/FiniteDifference/eq_unit_test_3d.hpp
@@ -14,7 +14,6 @@
 #include "FiniteDifference/sum.hpp"
 #include "FiniteDifference/mul.hpp"
 #include "Grid/grid_dist_id.hpp"
-#include "data_type/scalar.hpp"
 #include "Decomposition/CartDecomposition.hpp"
 #include "Vector/Vector.hpp"
 #include "Solvers/umfpack_solver.hpp"
diff --git a/src/FiniteDifference/mul.hpp b/src/FiniteDifference/mul.hpp
index 84d481bf98d8d5581e4a721c9d5c67b8e82bfb7f..84e57f693182dcf7eeece847fc21670ec03ed9d6 100644
--- a/src/FiniteDifference/mul.hpp
+++ b/src/FiniteDifference/mul.hpp
@@ -55,7 +55,7 @@ struct const_mul_functor_value
 	const grid_sm<last::dims,void> & gs;
 
 	//! grid mapping
-	const grid_dist_id<last::dims,typename last::stype,scalar<size_t>,typename last::b_grid::decomposition::extended_type> & g_map;
+	const grid_dist_id<last::dims,typename last::stype,aggregate<size_t>,typename last::b_grid::decomposition::extended_type> & g_map;
 
 	//! grid position
 	grid_dist_key_dx<last::dims> & kmap;
@@ -76,7 +76,7 @@ struct const_mul_functor_value
 	 * \param coeff multiplication coefficent
 	 *
 	 */
-	const_mul_functor_value(const grid_dist_id<last::dims,typename last::stype,scalar<size_t>,typename last::b_grid::decomposition::extended_type> & g_map,
+	const_mul_functor_value(const grid_dist_id<last::dims,typename last::stype,aggregate<size_t>,typename last::b_grid::decomposition::extended_type> & g_map,
 			                grid_dist_key_dx<last::dims> & kmap,
 							const grid_sm<last::dims,void> & gs,
 							typename last::stype (& spacing)[last::dims],
@@ -137,7 +137,7 @@ struct mul
 	 * \param coeff coefficent (constant in front of the derivative)
 	 *
 	 */
-	inline static void value(const grid_dist_id<Sys_eqs::dims,typename Sys_eqs::stype,scalar<size_t>,typename Sys_eqs::b_grid::decomposition::extended_type> & g_map,
+	inline static void value(const grid_dist_id<Sys_eqs::dims,typename Sys_eqs::stype,aggregate<size_t>,typename Sys_eqs::b_grid::decomposition::extended_type> & g_map,
 			                 grid_dist_key_dx<Sys_eqs::dims> & kmap,
 							 const grid_sm<Sys_eqs::dims,void> & gs,
 							 typename Sys_eqs::stype (& spacing )[Sys_eqs::dims],
diff --git a/src/Vector/Vector_eigen.hpp b/src/Vector/Vector_eigen.hpp
index 243ef5c24e51939bca340137473226e0d3408833..55751fc80767101077cc7a11c983a395ab6ccaee 100644
--- a/src/Vector/Vector_eigen.hpp
+++ b/src/Vector/Vector_eigen.hpp
@@ -75,6 +75,16 @@ public:
 		row() = i;
 		value() = val;
 	}
+
+	/*! \brief Indicate that the structure has no pointer
+	 *
+	 * \return true
+	 *
+	 */
+	static inline bool noPointers()
+	{
+		return true;
+	}
 };
 
 template<typename T>
diff --git a/src/Vector/Vector_petsc.hpp b/src/Vector/Vector_petsc.hpp
index 5e2c82971e12a71997e08b17732b481f532e71f8..68735aec162bcb55344fd6f6c01a2d68259e9fab 100644
--- a/src/Vector/Vector_petsc.hpp
+++ b/src/Vector/Vector_petsc.hpp
@@ -78,6 +78,16 @@ public:
 		rw() = i;
 		val() = val;
 	}
+
+	/*! \brief Indicate that the structure has no pointer
+	 *
+	 * \return true
+	 *
+	 */
+	static inline bool noPointers()
+	{
+		return true;
+	}
 };
 
 constexpr unsigned int row_id = 0;
diff --git a/src/util/grid_dist_testing.hpp b/src/util/grid_dist_testing.hpp
index 13db51486e37af8f6517c1ed0f74c792633162c4..cba4505a2cfdddc24d487db9e964b876ae7cd095 100644
--- a/src/util/grid_dist_testing.hpp
+++ b/src/util/grid_dist_testing.hpp
@@ -8,13 +8,12 @@
 #ifndef OPENFPM_NUMERICS_SRC_UTIL_GRID_DIST_TESTING_HPP_
 #define OPENFPM_NUMERICS_SRC_UTIL_GRID_DIST_TESTING_HPP_
 
-#include "data_type/scalar.hpp"
 #include "Grid/grid_dist_key.hpp"
 
 template<unsigned int dim>
 class grid_dist_testing
 {
-	grid_cpu<dim,scalar<size_t>> grid_test;
+	grid_cpu<dim,aggregate<size_t>> grid_test;
 
 public:
 
diff --git a/src/util/util_num.hpp b/src/util/util_num.hpp
index 2e3bbec9d5de2a3c853a5199ea5da6375a474df4..783f380b301c508b2e0c26d58ea3947081dddc6d 100644
--- a/src/util/util_num.hpp
+++ b/src/util/util_num.hpp
@@ -91,7 +91,7 @@ template<typename T, unsigned int dims, typename stype, typename decomposition>
 struct stub_or_real<T,dims,stype,decomposition,false>
 {
 	//! switch type if we are on testing or not
-	typedef grid_dist_id<dims,stype,scalar<size_t>,decomposition> type;
+	typedef grid_dist_id<dims,stype,aggregate<size_t>,decomposition> type;
 };
 
 #endif /* OPENFPM_NUMERICS_SRC_UTIL_UTIL_NUM_HPP_ */
diff --git a/src/util/util_num_unit_tests.hpp b/src/util/util_num_unit_tests.hpp
index 27a305a69671d161c08a36559e6ad3a8add6d9a8..986cc5e2b6d80f1ea7c712a0321fd0038b05db84 100644
--- a/src/util/util_num_unit_tests.hpp
+++ b/src/util/util_num_unit_tests.hpp
@@ -97,7 +97,7 @@ BOOST_AUTO_TEST_CASE( util_num )
 	ret = std::is_same<stub_or_real<on_test,2,float,CartDecomposition<2,float>>::type, grid_dist_testing<2>>::value ;
 	BOOST_REQUIRE_EQUAL(ret,true);
 
-	ret = std::is_same<stub_or_real<not_on_test,2,float,CartDecomposition<2,float>>::type, grid_dist_id<2,float,scalar<size_t>,CartDecomposition<2,float>> >::value;
+	ret = std::is_same<stub_or_real<not_on_test,2,float,CartDecomposition<2,float>>::type, grid_dist_id<2,float,aggregate<size_t>,CartDecomposition<2,float>> >::value;
 	BOOST_REQUIRE_EQUAL(ret,true);
 
 	//! [Usage of stub_or_real]