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/Makefile.am b/src/Makefile.am
index 85d21ac694c69054811462d92d99788ea82f226d..5157d0577820a91e98226cf87b26febee3002b24 100755
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,7 +3,7 @@ LINKLIBS = $(HDF5_LDFLAGS)  $(HDF5_LIBS) $(OPENMP_LDFLAGS) $(LIBHILBERT_LIB) $(P
 
 noinst_PROGRAMS = numerics
 numerics_SOURCES = main.cpp Solvers/petsc_solver_unit_tests.cpp  ../../openfpm_vcluster/src/VCluster/VCluster.cpp ../../openfpm_devices/src/memory/HeapMemory.cpp ../../openfpm_devices/src/memory/PtrMemory.cpp ../../openfpm_devices/src/Memleak_check.cpp
-numerics_CXXFLAGS = $(HDF5_CPPFLAGS) $(OPENMP_CFLAGS) $(LIBHILBERT_INCLUDE) $(AM_CXXFLAGS) $(INCLUDES_PATH) $(BOOST_CPPFLAGS) $(SUITESPARSE_INCLUDE) $(METIS_INCLUDE) $(PARMETIS_INCLUDE) $(EIGEN_INCLUDE) $(PETSC_INCLUDE) -Wno-deprecated-declarations -Wno-unused-local-typedefs
+numerics_CXXFLAGS = -Wno-unknown-pragmas -Wno-int-in-bool-context $(HDF5_CPPFLAGS) $(OPENMP_CFLAGS) $(LIBHILBERT_INCLUDE) $(AM_CXXFLAGS) $(INCLUDES_PATH) $(BOOST_CPPFLAGS) $(SUITESPARSE_INCLUDE) $(METIS_INCLUDE) $(PARMETIS_INCLUDE) $(EIGEN_INCLUDE) $(PETSC_INCLUDE) -Wno-deprecated-declarations -Wno-unused-local-typedefs
 numerics_CFLAGS = $(CUDA_CFLAGS)
 numerics_LDADD = $(LINKLIBS) -lparmetis -lmetis
 nobase_include_HEADERS = Matrix/SparseMatrix.hpp Matrix/SparseMatrix_Eigen.hpp Matrix/SparseMatrix_petsc.hpp \
diff --git a/src/interpolation/interpolation.hpp b/src/interpolation/interpolation.hpp
index 5b157896791092f730d2d614bdaf616d693dc384..8fd0ca06827ae68409fa40374c3a055cb5355518 100644
--- a/src/interpolation/interpolation.hpp
+++ b/src/interpolation/interpolation.hpp
@@ -8,7 +8,7 @@
 #ifndef OPENFPM_NUMERICS_SRC_INTERPOLATION_INTERPOLATION_HPP_
 #define OPENFPM_NUMERICS_SRC_INTERPOLATION_INTERPOLATION_HPP_
 
-#include "NN/CellList/MemFast.hpp"
+#include "NN/Mem_type/MemFast.hpp"
 #include "NN/CellList/CellList.hpp"
 #include "Grid/grid_dist_key.hpp"
 
@@ -293,7 +293,7 @@ struct calculate_aint<3,vector,np>
  */
 template<typename vector, typename grid>
 inline size_t getSub(Point<vector::dims,typename vector::stype> & p,
-		             const CellList<vector::dims,typename vector::stype,Mem_fast,shift<vector::dims,typename vector::stype>> & geo_cell,
+		             const CellList<vector::dims,typename vector::stype,Mem_fast<>,shift<vector::dims,typename vector::stype>> & geo_cell,
 					 grid & gd)
 {
 	size_t cell = geo_cell.getCell(p);
@@ -419,7 +419,7 @@ struct inte_calc_impl
 																	 typename vector::stype (& a)[vector::dims][kernel::np],
 																	 typename vector::stype (& x)[vector::dims][kernel::np],
 																	 size_t (& sz)[vector::dims],
-																	 const CellList<vector::dims,typename vector::stype,Mem_fast,shift<vector::dims,typename vector::stype>> & geo_cell,
+																	 const CellList<vector::dims,typename vector::stype,Mem_fast<>,shift<vector::dims,typename vector::stype>> & geo_cell,
 																	 openfpm::vector<agg_arr<openfpm::math::pow(kernel::np,vector::dims)>> & offsets)
 	{
 		auto key_p = it.get();
@@ -504,7 +504,7 @@ template<typename vector,typename grid, typename kernel>
 class interpolate
 {
 	//! Cell list used to convert particles position to sub-domain
-	CellList<vector::dims,typename vector::stype,Mem_fast,shift<vector::dims,typename vector::stype>> geo_cell;
+	CellList<vector::dims,typename vector::stype,Mem_fast<>,shift<vector::dims,typename vector::stype>> geo_cell;
 
 	/*! Structure to order boxes by volume
 	 *
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]