diff --git a/src/Draw/DrawParticles.hpp b/src/Draw/DrawParticles.hpp
index 12d46dc9c45ea161e8b1ef28b0dddf378da63555..e936b02c50206f2f04a09be43f723978c8173319 100644
--- a/src/Draw/DrawParticles.hpp
+++ b/src/Draw/DrawParticles.hpp
@@ -43,8 +43,8 @@ public:
 	 * \return an iterator to the selected particles
 	 *
 	 */
-	template<unsigned int dim, typename T, typename aggr, typename Decomposition> static PointIteratorSkin<dim,T,Decomposition>
-	DrawSkin(vector_dist<dim,T,aggr,Decomposition> & vd,
+	template<unsigned int dim, typename T, typename aggr, typename layout, template<typename> class layout_base ,typename Decomposition> static PointIteratorSkin<dim,T,Decomposition>
+	DrawSkin(vector_dist<dim,T,aggr,layout,layout_base,Decomposition> & vd,
 			 size_t (& sz)[dim],
 			 Box<dim,T> & domain,
 			 Box<dim,T> & sub_A,
@@ -79,8 +79,8 @@ public:
 	 * \return an iterator to the selected particles
 	 *
 	 */
-	template<unsigned int dim, typename T, typename aggr, typename Decomposition> static PointIteratorSkin<dim,T,Decomposition>
-	DrawSkin(vector_dist<dim,T,aggr,Decomposition> & vd,
+	template<unsigned int dim, typename T, typename aggr, typename layout, template <typename> class layout_base, typename Decomposition> static PointIteratorSkin<dim,T,Decomposition>
+	DrawSkin(vector_dist<dim,T,aggr,layout,layout_base,Decomposition> & vd,
 			 size_t (& sz)[dim],
 			 Box<dim,T> & domain,
 			 openfpm::vector<Box<dim,T>> & sub_A,
@@ -117,8 +117,8 @@ public:
 	 * \return an iterator to the selected particles
 	 *
 	 */
-	template<unsigned int dim, typename T, typename aggr, typename Decomposition> static PointIterator<dim,T,Decomposition>
-	DrawBox(vector_dist<dim,T,aggr,Decomposition> & vd,
+	template<unsigned int dim, typename T, typename aggr, typename layout, template <typename> class layout_base,  typename Decomposition> static PointIterator<dim,T,Decomposition>
+	DrawBox(vector_dist<dim,T,aggr,layout,layout_base,Decomposition> & vd,
 			 size_t (& sz)[dim],
 			 Box<dim,T> & domain,
 			 Box<dim,T> & sub)
diff --git a/src/Draw/PointIteratorSkin.hpp b/src/Draw/PointIteratorSkin.hpp
index fc5e7fd81071107a71a05eb684ed8060af1a5b68..6fded693e06e33d29eb6e0ed87782b21fd4b4899 100644
--- a/src/Draw/PointIteratorSkin.hpp
+++ b/src/Draw/PointIteratorSkin.hpp
@@ -136,8 +136,15 @@ public:
 	 * \param sp grid spacing
 	 *
 	 */
-	PointIteratorSkin( Decomposition & dec, size_t (& sz)[dim], const Box<dim,T> & domain, const Box<dim,T> & sub_A, const Box<dim,T> & sub_B, size_t (& bc)[dim])
-	:grid_dist_id_iterator_dec_skin<Decomposition>(dec, sz, getAB(sz,domain,sub_A,sub_B,sp,RETURN_A), getAB(sz,domain,sub_A,sub_B,sp,RETURN_B), bc),domain(domain)
+	PointIteratorSkin( Decomposition & dec,
+			           size_t (& sz)[dim],
+					   const Box<dim,T> & domain,
+					   const Box<dim,T> & sub_A,
+					   const Box<dim,T> & sub_B,
+					   size_t (& bc)[dim])
+	:grid_dist_id_iterator_dec_skin<Decomposition>(dec, sz, getAB(sz,domain,sub_A,sub_B,sp,RETURN_A),
+	 getAB(sz,domain,sub_A,sub_B,sp,RETURN_B), bc),
+	 domain(domain)
 	{
 		sub_domainA.add(sub_A);
 		calculateAp();
diff --git a/src/Operators/Vector/vector_dist_operators_functions.hpp b/src/Operators/Vector/vector_dist_operators_functions.hpp
index 50e397b48a22ead8679acae99632d8c3132c8707..6f8fe79e34d3d005a0bef52d129e2ecfb87d504b 100644
--- a/src/Operators/Vector/vector_dist_operators_functions.hpp
+++ b/src/Operators/Vector/vector_dist_operators_functions.hpp
@@ -204,7 +204,6 @@ fun_name(double d, const vector_dist_expression_op<exp1,exp2,op1> & va)\
 
 CREATE_VDIST_ARG2_FUNC(pmul,pmul,VECT_PMUL)
 
-
 ////////// Special function reduce /////////////////////////
 
 
@@ -291,5 +290,17 @@ rsum(const vector_dist_expression<prp1,v1> & va, const vector_type & vd)
 	return exp_sum;
 }
 
+namespace openfpm
+{
+	/*! \brief General distance formula
+	 *
+	 *
+	 */
+	template <typename T, typename P> auto distance(T exp1, P exp2) -> decltype(norm(exp1 - exp2))
+	{
+		return norm(exp1 - exp2);
+	}
+}
+
 
 #endif /* OPENFPM_NUMERICS_SRC_OPERATORS_VECTOR_VECTOR_DIST_OPERATORS_FUNCTIONS_HPP_ */
diff --git a/src/Operators/Vector/vector_dist_operators_unit_tests.hpp b/src/Operators/Vector/vector_dist_operators_unit_tests.hpp
index d2d7a125d09e3ab6056238f27650fd7fa5c53da5..6ed8a548c29c9d537a2a4ce3d826f6423dca2a92 100644
--- a/src/Operators/Vector/vector_dist_operators_unit_tests.hpp
+++ b/src/Operators/Vector/vector_dist_operators_unit_tests.hpp
@@ -937,7 +937,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_operators_test )
 
 	// normalization function
 
-	vA = vVB * vVC + norm(vVC + vVB) + distance(vVC,vVB);
+	vA = vVB * vVC + norm(vVC + vVB) + openfpm::distance(vVC,vVB);
 	check_values_scal_norm_dist(vd);
 
 	Point<3,float> p0({2.0,2.0,2.0});
diff --git a/src/PSE/Kernels_test_util.hpp b/src/PSE/Kernels_test_util.hpp
index f74682b718bcf17a3a279bd37ee362edc748be46..c179f6b4411d0e4c0aeaf0b1fb9341ebfbf4c4fa 100644
--- a/src/PSE/Kernels_test_util.hpp
+++ b/src/PSE/Kernels_test_util.hpp
@@ -86,7 +86,7 @@ template<typename T, typename Kernel> void PSE_test(size_t Npart, size_t overlap
     size_t bc[1]={NON_PERIODIC};
 	Ghost<1,T> g(20*eps);
 
-	vector_dist<1,T, aggregate<T>, CartDecomposition<1,T> > vd(Npart,box,bc,g);
+	vector_dist<1,T, aggregate<T> > vd(Npart,box,bc,g);
 
 	auto it2 = vd.getIterator();