diff --git a/example/Vector/2_expressions/Makefile b/example/Vector/2_expressions/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8e05b3e8a019c392ab52ecfada659e00d9fef05f
--- /dev/null
+++ b/example/Vector/2_expressions/Makefile
@@ -0,0 +1,21 @@
+include ../../example.mk
+
+CC=mpic++
+
+LDIR =
+
+OBJ = main.o
+
+%.o: %.cpp
+	$(CC) -O3 -c --std=c++11 -o $@ $< $(INCLUDE_PATH)
+
+expr: $(OBJ)
+	$(CC) -o $@ $^ $(CFLAGS) $(LIBS_PATH) $(LIBS)
+
+all: expr
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o *~ core expr
+
diff --git a/example/Vector/2_expressions/config.cfg b/example/Vector/2_expressions/config.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..1eecbac3577c765edca7f90cf5f61cfb6b9f4880
--- /dev/null
+++ b/example/Vector/2_expressions/config.cfg
@@ -0,0 +1,2 @@
+[pack]
+files = main.cpp Makefile
diff --git a/example/Vector/2_expressions/expr b/example/Vector/2_expressions/expr
new file mode 100755
index 0000000000000000000000000000000000000000..d7964ae05ef2bc2f930a7044cf74d3ece5914d34
Binary files /dev/null and b/example/Vector/2_expressions/expr differ
diff --git a/example/Vector/2_expressions/main.cpp b/example/Vector/2_expressions/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6cd6c0da296e8e7d737db6341a21a08aafcd147
--- /dev/null
+++ b/example/Vector/2_expressions/main.cpp
@@ -0,0 +1,251 @@
+#include "Vector/vector_dist.hpp"
+#include "Operators/Vector/vector_dist_operators.hpp"
+
+/*
+ * ### WIKI 1 ###
+ *
+ * ## Simple example to show how expression work with vector
+ * 
+ * This example show how to use expressions to do complex calculation on particles
+ * 
+ * ### WIKI END ###
+ * 
+ */
+
+constexpr int A = 0;
+constexpr int B = 1;
+constexpr int C = 2;
+constexpr int D = 3;
+
+
+// First we define the kernel function (an exponential in this case)
+struct exp_kernel
+{
+	// variance of the exponential
+	float sigma;
+
+	// Constructor require to define the variance
+	exp_kernel(float sigma)
+	:sigma(sigma)
+	{}
+
+	// The kernel function accept the position p, the position q
+	inline Point<3,double> value(const Point<3,float> & p, const Point<3,float> & q,Point<3,double> & Pp,Point<3,double> & Pq)
+	{
+		// calculate the distance between p and q
+		float dist = norm(p-q);
+
+			
+		return Pq * exp(- dist * dist / sigma);
+	}
+};
+
+
+int main(int argc, char* argv[])
+{
+	//
+	// ### WIKI 2 ###
+	//
+	// Here we Initialize the library, than we create a uniform random generator between 0 and 1 to to generate particles
+	// randomly in the domain, we create a Box that define our domain, boundary conditions, and ghost
+	//
+	
+	// initialize the library
+	openfpm_init(&argc,&argv);
+
+	// Here we define our domain a 2D box with intervals from 0 to 1.0
+	Box<3,float> domain({0.0,0.0,0.0},{1.0,1.0,1.0});
+
+	// Here we define the boundary conditions of our problem
+	size_t bc[3]={PERIODIC,PERIODIC,PERIODIC};
+
+	// extended boundary around the domain, and the processor domain
+	Ghost<3,float> g(0.01);
+
+	// Delta t
+	double dt = 0.01;
+
+	// distributed vectors
+	vector_dist<3,double, aggregate<double,double,Point<3,double>,Point<3,double>> > vd(4096,domain,bc,g);
+	vector_dist<3,double, aggregate<double> > vd2(4096,domain,bc,g);
+
+	// Assign random position to the vector dist
+	auto it = vd.getDomainIterator();
+
+	while (it.isNext())
+	{
+		auto p = it.get();
+
+		vd.getPos(p)[0]  = (double)rand() / RAND_MAX;
+		vd.getPos(p)[1]  = (double)rand() / RAND_MAX;
+		vd.getPos(p)[2]  = (double)rand() / RAND_MAX;
+
+		vd2.getPos(p)[0] = (double)rand() / RAND_MAX;
+		vd2.getPos(p)[1]  = (double)rand() / RAND_MAX;
+		vd2.getPos(p)[2]  = (double)rand() / RAND_MAX;
+
+		++it;
+	}
+
+	// Redistribute the particles and synchronize the ghost
+	vd.map();
+	vd.map();
+
+	//
+	// ### WIKI ###
+	//
+	// Here we create alias for the properties of the vectors
+	//
+
+	// vA is an alias for the property A of the vector vd
+	// vB is an alias for the property V of the vector vd
+	// vC is ...
+	auto vA = getV<A>(vd);
+	auto vB = getV<B>(vd);
+	auto vC = getV<C>(vd);
+	auto vD = getV<D>(vd);
+	auto vPOS = getV<PROP_POS>(vd);
+
+	// same concept for the vector v2
+	auto v2A = getV<0>(vd);
+	auto v2POS = getV<PROP_POS>(vd);
+
+	// Assign 1 to the property A
+	vA = 1;
+
+	// Equal the property A to B
+	vB = vA;
+
+	// Assign to the property C and for each component 4.0
+	vC = 4;
+
+	// Assign te position of the particle to the property D
+	vD = vPOS;
+
+	//
+	// ### WIKI ###
+	//
+	// All these expression are applied point wise for each particles
+	//
+	// P.S.
+	//
+	// the * is a scalar product in case of vectors
+	// simple multiplication in case of scalar
+	//
+	//
+
+	// In vA we set the distance from the origin for each particle
+	vA = norm(vPOS);
+
+	//
+	// For each particle p calculate the expression under
+	//
+	// NOTE sin(2.0 * vD)  and exp(5.0 * vD) are both vector
+	//
+	//              so this is a scalar product
+	//                      |
+	//                      V
+	vA = vA + sin(2.0 * vD) * exp(1.2 * vD);
+    //       |_____________________________|
+    //                      |
+    //                      V
+    //              and this is a number
+    //
+    //
+
+
+	// pmul indicate component-wise multiplication the same as .* in Matlab
+	vC = pmul(vD,vD) * dt;
+
+	// Normalization of the vector vD
+	vD = vD / sqrt( vD * vD );
+
+	// we write the result on file
+	vd.write("output");
+
+	// We can also apply the expression in a second moment like this
+	Point<3,double> p0({0.5,0.5,0.5});
+
+	// we cannot use p0 directly we have to create an expression from it
+	auto p0_e = getVExpr(p0);
+
+	// As soon as the second vector have the some number of particle as v we can apply the expr1 to the v2 with v2D
+	auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0_e)*(v2POS-p0_e)/2.0);
+
+	// here is executed on all particles of v2 and the result assigned to the property A of v2
+	v2A = expr1;
+
+	//
+	// ### WIKI ###
+	//
+	// Each operator= produce a iteration across particles. It is possible to use the function assign
+	// to execute multiple instructions in one cycle
+	//
+	// assign support an variable of istructions
+	//
+
+	assign(vA,1.0,               // vA = 1
+		   vB,expr1,          // vB = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0_e)*(v2POS-p0_e)/2.0)
+		   vC,vD/norm(vD),    // vC = vD/norm(vD)
+		   vD,2.0*vC);        // vD = 2.0*vC
+
+	// As soon as the vector v have the some number of particle as v2 we can apply the expr1 to v
+	vA = expr1;
+
+	//
+	// ### WIKI ###
+	//
+	// we shown the simple usage of simple point-wise function like sin
+	// and exp. Here we show the function applyKernel than encapsulate
+	// the operation
+	//
+	// \sum_{q = Neighborhood p} Kernel(x_p,x_q,Up,Uq) * expression
+	//
+	// where x_p is the position of the particle p
+	//       x_q is the position of the particle q
+	//       U_p is the value of the property carried by the particle p
+	//       U_q is the value of the property carried by the particle q
+	//
+	//
+
+	exp_kernel ker(0.5);
+	auto cl = vd.getCellList(0.1);
+
+	// We are going to do some calculation that require ghost, so sync it
+        vd.ghost_get<3>();
+
+	// Here we create the
+
+	// A renormalizaion of the vector vD is calculated on fly
+	//
+	// and than For each particle p
+	//
+	// \sum_{q = Neighborhood p} Ker(x_p,x_q,D_p,D_q) * \frac{D}{norm(D)}
+	//
+	//
+	// P.S.
+	//
+	//  Cerefull here ApplyKernel is a special function if it act on property D we cannot write on property D 
+	//  ( vD = ...  is an error and produce unpredictable result )
+	//
+	vC = applyKernel_in( vD / norm(vD) ,vd,cl,ker) + vD;
+
+	// ok, because does not use applyKernel
+	vD = vD / norm(vD);
+
+	//
+	// ### WIKI 9 ###
+	//
+	// Output the particle position for each processor
+	//
+
+	vd.deleteGhost();
+	vd.write("output2");
+
+	//
+	// ### WIKI 10 ###
+	//
+	// Deinitialize the library
+	//
+	openfpm_finalize();
+}
diff --git a/example/Vector/2_expressions/out b/example/Vector/2_expressions/out
new file mode 100644
index 0000000000000000000000000000000000000000..c368327aeea088202fb115955635cfecdd6dda1a
--- /dev/null
+++ b/example/Vector/2_expressions/out
@@ -0,0 +1,473 @@
+main.cpp: In function ‘int main(int, char**)’:
+main.cpp:153:24: error: ‘getExpr’ was not declared in this scope
+  auto p0_e = getExpr(p0);
+                        ^
+main.cpp:156:45: error: no match for ‘operator-’ (operand types are ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ and ‘Point<3u, double>’)
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                             ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:766:1: note: candidate: template<unsigned int dim, class T> point_expression_op<Point<dim, T>, Point<dim, T>, Point<dim, T>, 2u> operator-(const Point<dim, T>&, const Point<dim, T>&)
+ operator-(const Point<dim,T> & va, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:766:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:784:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, unsigned int dim, class T> point_expression_op<orig, point_expression_op<orig, exp1, exp2, op1>, Point<dim, T>, 2u> operator-(const point_expression_op<orig, exp1, exp2, op1>&, const Point<dim, T>&)
+ operator-(const point_expression_op<orig,exp1,exp2,op1> & va, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:784:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:801:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, unsigned int dim, class T> point_expression_op<orig, Point<dim, T>, point_expression_op<orig, exp1, exp2, op1>, 2u> operator-(const Point<dim, T>&, const point_expression_op<orig, exp1, exp2, op1>&)
+ operator-(const Point<dim,T> & va, const point_expression_op<orig,exp1,exp2,op1> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:801:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:818:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, class T> point_expression_op<orig, point_expression_op<orig, exp1, exp2, op1>, point_expression<T>, 2u> operator-(const point_expression_op<orig, exp1, exp2, op1>&, T)
+ operator-(const point_expression_op<orig,exp1,exp2,op1> & va, T d)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:818:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:835:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, class T> point_expression_op<orig, point_expression<T>, point_expression_op<orig, exp1, exp2, op1>, 2u> operator-(T, const point_expression_op<orig, exp1, exp2, op1>&)
+ operator-(T d, const point_expression_op<orig,exp1,exp2,op1> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:835:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘Point<3u, double>’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:853:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, class exp3, class exp4, unsigned int op2> point_expression_op<orig, point_expression_op<orig, exp1, exp2, op1>, point_expression_op<orig, exp3, exp4, op2>, 2u> operator-(const point_expression_op<orig, exp1, exp2, op1>&, const point_expression_op<orig, exp3, exp4, op2>&)
+ operator-(const point_expression_op<orig,exp1,exp2,op1> & va, const point_expression_op<orig,exp3,exp4,op2> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:853:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:870:1: note: candidate: template<unsigned int dim, class T, class check> point_expression_op<Point<dim, T>, Point<dim, T>, point_expression<T>, 2u> operator-(const Point<dim, T>&, T)
+ operator-(const Point<dim,T> & va, T d)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:870:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:887:1: note: candidate: template<unsigned int dim, class T> point_expression_op<Point<dim, T>, Point<dim, T>, point_expression<double>, 2u> operator-(const Point<dim, T>&, double)
+ operator-(const Point<dim,T> & va, double d)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:887:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:904:1: note: candidate: template<unsigned int dim, class T, class check> point_expression_op<Point<dim, T>, point_expression<T>, Point<dim, T>, 2u> operator-(T, const Point<dim, T>&)
+ operator-(T d, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:904:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   deduced conflicting types for parameter ‘T’ (‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ and ‘double’)
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:921:1: note: candidate: template<unsigned int dim, class T> point_expression_op<Point<dim, T>, point_expression<double>, Point<dim, T>, 2u> operator-(double, const Point<dim, T>&)
+ operator-(double d, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:921:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   cannot convert ‘v2POS’ (type ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’) to type ‘double’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:588:1: note: candidate: template<unsigned int p1, unsigned int p2, class v1, class v2> vector_dist_expression_op<vector_dist_expression<p1, v1>, vector_dist_expression<p2, v2>, 2u> operator-(const vector_dist_expression<p1, v1>&, const vector_dist_expression<p2, v2>&)
+ operator-(const vector_dist_expression<p1,v1> & va, const vector_dist_expression<p2,v2> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:588:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘Point<3u, double>’ is not derived from ‘const vector_dist_expression<p2, v2>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:606:1: note: candidate: template<class exp1, class exp2, unsigned int op1, unsigned int p2, class v2> vector_dist_expression_op<vector_dist_expression_op<exp1, exp2, op1>, vector_dist_expression<prp1, v1>, 2u> operator-(const vector_dist_expression_op<exp1, exp2, op1>&, const vector_dist_expression<prp1, v1>&)
+ operator-(const vector_dist_expression_op<exp1,exp2,op1> & va, const vector_dist_expression<p2,v2> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:606:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const vector_dist_expression_op<exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:623:1: note: candidate: template<class exp1, class exp2, unsigned int op1, unsigned int p2, class v2> vector_dist_expression_op<vector_dist_expression<prp1, v1>, vector_dist_expression_op<exp1, exp2, op1>, 2u> operator-(const vector_dist_expression<prp1, v1>&, const vector_dist_expression_op<exp1, exp2, op1>&)
+ operator-(const vector_dist_expression<p2,v2> & va, const vector_dist_expression_op<exp1,exp2,op1> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:623:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘Point<3u, double>’ is not derived from ‘const vector_dist_expression_op<exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:640:1: note: candidate: template<class exp1, class exp2, unsigned int op1, class exp3, class exp4, unsigned int op2> vector_dist_expression_op<vector_dist_expression_op<exp1, exp2, op1>, vector_dist_expression_op<exp3, exp4, op2>, 2u> operator-(const vector_dist_expression_op<exp1, exp2, op1>&, const vector_dist_expression_op<exp3, exp4, op2>&)
+ operator-(const vector_dist_expression_op<exp1,exp2,op1> & va, const vector_dist_expression_op<exp3,exp4,op2> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:640:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const vector_dist_expression_op<exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:657:1: note: candidate: template<unsigned int prp1, class v1> vector_dist_expression_op<vector_dist_expression<prp, vector>, vector_dist_expression<0u, double>, 2u> operator-(const vector_dist_expression<prp, vector>&, double)
+ operator-(const vector_dist_expression<prp1,v1> & va, double d)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:657:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   cannot convert ‘p0’ (type ‘Point<3u, double>’) to type ‘double’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:674:1: note: candidate: template<unsigned int prp1, class v1> vector_dist_expression_op<vector_dist_expression<0u, double>, vector_dist_expression<prp, vector>, 2u> operator-(double, const vector_dist_expression<prp, vector>&)
+ operator-(double d, const vector_dist_expression<prp1,v1> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:674:1: note:   template argument deduction/substitution failed:
+main.cpp:156:46: note:   cannot convert ‘v2POS’ (type ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’) to type ‘double’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                              ^
+main.cpp:156:56: error: no match for ‘operator-’ (operand types are ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ and ‘Point<3u, double>’)
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                        ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:766:1: note: candidate: template<unsigned int dim, class T> point_expression_op<Point<dim, T>, Point<dim, T>, Point<dim, T>, 2u> operator-(const Point<dim, T>&, const Point<dim, T>&)
+ operator-(const Point<dim,T> & va, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:766:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:784:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, unsigned int dim, class T> point_expression_op<orig, point_expression_op<orig, exp1, exp2, op1>, Point<dim, T>, 2u> operator-(const point_expression_op<orig, exp1, exp2, op1>&, const Point<dim, T>&)
+ operator-(const point_expression_op<orig,exp1,exp2,op1> & va, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:784:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:801:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, unsigned int dim, class T> point_expression_op<orig, Point<dim, T>, point_expression_op<orig, exp1, exp2, op1>, 2u> operator-(const Point<dim, T>&, const point_expression_op<orig, exp1, exp2, op1>&)
+ operator-(const Point<dim,T> & va, const point_expression_op<orig,exp1,exp2,op1> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:801:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:818:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, class T> point_expression_op<orig, point_expression_op<orig, exp1, exp2, op1>, point_expression<T>, 2u> operator-(const point_expression_op<orig, exp1, exp2, op1>&, T)
+ operator-(const point_expression_op<orig,exp1,exp2,op1> & va, T d)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:818:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:835:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, class T> point_expression_op<orig, point_expression<T>, point_expression_op<orig, exp1, exp2, op1>, 2u> operator-(T, const point_expression_op<orig, exp1, exp2, op1>&)
+ operator-(T d, const point_expression_op<orig,exp1,exp2,op1> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:835:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘Point<3u, double>’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:853:1: note: candidate: template<class orig, class exp1, class exp2, unsigned int op1, class exp3, class exp4, unsigned int op2> point_expression_op<orig, point_expression_op<orig, exp1, exp2, op1>, point_expression_op<orig, exp3, exp4, op2>, 2u> operator-(const point_expression_op<orig, exp1, exp2, op1>&, const point_expression_op<orig, exp3, exp4, op2>&)
+ operator-(const point_expression_op<orig,exp1,exp2,op1> & va, const point_expression_op<orig,exp3,exp4,op2> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:853:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const point_expression_op<orig, exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:870:1: note: candidate: template<unsigned int dim, class T, class check> point_expression_op<Point<dim, T>, Point<dim, T>, point_expression<T>, 2u> operator-(const Point<dim, T>&, T)
+ operator-(const Point<dim,T> & va, T d)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:870:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:887:1: note: candidate: template<unsigned int dim, class T> point_expression_op<Point<dim, T>, Point<dim, T>, point_expression<double>, 2u> operator-(const Point<dim, T>&, double)
+ operator-(const Point<dim,T> & va, double d)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:887:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const Point<dim, T>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:904:1: note: candidate: template<unsigned int dim, class T, class check> point_expression_op<Point<dim, T>, point_expression<T>, Point<dim, T>, 2u> operator-(T, const Point<dim, T>&)
+ operator-(T d, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:904:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   deduced conflicting types for parameter ‘T’ (‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ and ‘double’)
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from /usr/local/openfpm_data/include/Space/Shape/Point.hpp:12:0,
+                 from /usr/local/openfpm_data/include/Space/Shape/Sphere.hpp:11,
+                 from /usr/local/openfpm_data/include/Space/Shape/Box.hpp:5,
+                 from /usr/local/openfpm_data/include/Grid/grid_sm.hpp:10,
+                 from /usr/local/openfpm_data/include/Grid/map_grid.hpp:39,
+                 from /usr/local/openfpm_data/include/Vector/map_vector.hpp:22,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_util.hpp:12,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter_point_set.hpp:11,
+                 from /usr/local/openfpm_io/include/HDF5_XdmfWriter/HDF5_XdmfWriter.hpp:21,
+                 from /usr/local/openfpm_pdata/include/Vector/vector_dist.hpp:11,
+                 from main.cpp:1:
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:921:1: note: candidate: template<unsigned int dim, class T> point_expression_op<Point<dim, T>, point_expression<double>, Point<dim, T>, 2u> operator-(double, const Point<dim, T>&)
+ operator-(double d, const Point<dim,T> & vb)
+ ^
+/usr/local/openfpm_data/include/Space/Shape/Point_operators.hpp:921:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   cannot convert ‘v2POS’ (type ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’) to type ‘double’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:588:1: note: candidate: template<unsigned int p1, unsigned int p2, class v1, class v2> vector_dist_expression_op<vector_dist_expression<p1, v1>, vector_dist_expression<p2, v2>, 2u> operator-(const vector_dist_expression<p1, v1>&, const vector_dist_expression<p2, v2>&)
+ operator-(const vector_dist_expression<p1,v1> & va, const vector_dist_expression<p2,v2> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:588:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘Point<3u, double>’ is not derived from ‘const vector_dist_expression<p2, v2>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:606:1: note: candidate: template<class exp1, class exp2, unsigned int op1, unsigned int p2, class v2> vector_dist_expression_op<vector_dist_expression_op<exp1, exp2, op1>, vector_dist_expression<prp1, v1>, 2u> operator-(const vector_dist_expression_op<exp1, exp2, op1>&, const vector_dist_expression<prp1, v1>&)
+ operator-(const vector_dist_expression_op<exp1,exp2,op1> & va, const vector_dist_expression<p2,v2> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:606:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const vector_dist_expression_op<exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:623:1: note: candidate: template<class exp1, class exp2, unsigned int op1, unsigned int p2, class v2> vector_dist_expression_op<vector_dist_expression<prp1, v1>, vector_dist_expression_op<exp1, exp2, op1>, 2u> operator-(const vector_dist_expression<prp1, v1>&, const vector_dist_expression_op<exp1, exp2, op1>&)
+ operator-(const vector_dist_expression<p2,v2> & va, const vector_dist_expression_op<exp1,exp2,op1> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:623:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘Point<3u, double>’ is not derived from ‘const vector_dist_expression_op<exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:640:1: note: candidate: template<class exp1, class exp2, unsigned int op1, class exp3, class exp4, unsigned int op2> vector_dist_expression_op<vector_dist_expression_op<exp1, exp2, op1>, vector_dist_expression_op<exp3, exp4, op2>, 2u> operator-(const vector_dist_expression_op<exp1, exp2, op1>&, const vector_dist_expression_op<exp3, exp4, op2>&)
+ operator-(const vector_dist_expression_op<exp1,exp2,op1> & va, const vector_dist_expression_op<exp3,exp4,op2> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:640:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’ is not derived from ‘const vector_dist_expression_op<exp1, exp2, op1>’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:657:1: note: candidate: template<unsigned int prp1, class v1> vector_dist_expression_op<vector_dist_expression<prp, vector>, vector_dist_expression<0u, double>, 2u> operator-(const vector_dist_expression<prp, vector>&, double)
+ operator-(const vector_dist_expression<prp1,v1> & va, double d)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:657:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   cannot convert ‘p0’ (type ‘Point<3u, double>’) to type ‘double’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:674:1: note: candidate: template<unsigned int prp1, class v1> vector_dist_expression_op<vector_dist_expression<0u, double>, vector_dist_expression<prp, vector>, 2u> operator-(double, const vector_dist_expression<prp, vector>&)
+ operator-(double d, const vector_dist_expression<prp1,v1> & vb)
+ ^
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:674:1: note:   template argument deduction/substitution failed:
+main.cpp:156:57: note:   cannot convert ‘v2POS’ (type ‘vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >’) to type ‘double’
+  auto expr1 = 1.0/2.0/sqrt(M_PI)*exp(-(v2POS-p0)*(v2POS-p0)/2.0);
+                                                         ^
+In file included from main.cpp:2:0:
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp: In instantiation of ‘vector& vector_dist_expression<prp, vector>::operator=(const vector_dist_expression_op<exp1, exp2, op>&) [with exp1 = vector_dist_expression<4294967295u, vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > > >; exp2 = void; unsigned int op = 56u; unsigned int prp = 0u; vector = vector_dist<3u, double, aggregate<float, float, Point<3u, double>, Point<3u, double> > >]’:
+main.cpp:121:5:   required from here
+/usr/local/openfpm_numerics/include/Operators/Vector/vector_dist_operators.hpp:379:33: error: cannot convert ‘double*’ to ‘float’ in assignment
+    v.template getProp<prp>(key) = v_exp.value(key);
+                                 ^
+make: *** [main.o] Error 1
diff --git a/footer.html b/footer.html
new file mode 100644
index 0000000000000000000000000000000000000000..42c56b31909cf9eb98f252e11693b18549334c49
--- /dev/null
+++ b/footer.html
@@ -0,0 +1,21 @@
+<!-- HTML footer for doxygen 1.8.10-->
+<!-- start footer part -->
+<!--BEGIN GENERATE_TREEVIEW-->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+  <ul>
+    $navpath
+    <li class="footer">$generatedby
+    <a href="http://www.doxygen.org/index.html">
+    <img class="footer" src="$relpath^doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
+  </ul>
+</div>
+<!--END GENERATE_TREEVIEW-->
+<!--BEGIN !GENERATE_TREEVIEW-->
+<hr class="footer"/><address class="footer"><small>
+$generatedby &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
+</a> $doxygenversion
+</small></address>
+<!--END !GENERATE_TREEVIEW-->
+</body>
+</html>
diff --git a/header.html b/header.html
new file mode 100644
index 0000000000000000000000000000000000000000..de3204dd3d8dc17f80d1c8de44e392377e1089a1
--- /dev/null
+++ b/header.html
@@ -0,0 +1,55 @@
+<!-- HTML header for doxygen 1.8.10-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<!--BEGIN TITLEAREA-->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <!--BEGIN PROJECT_LOGO-->
+  <td id="projectlogo"><img alt="Logo" src="$relpath^$projectlogo"/></td>
+  <!--END PROJECT_LOGO-->
+  <!--BEGIN PROJECT_NAME-->
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">$projectname
+   <!--BEGIN PROJECT_NUMBER-->&#160;<span id="projectnumber">$projectnumber</span><!--END PROJECT_NUMBER-->
+   </div>
+   <!--BEGIN PROJECT_BRIEF--><div id="projectbrief">$projectbrief</div><!--END PROJECT_BRIEF-->
+  </td>
+  <!--END PROJECT_NAME-->
+  <!--BEGIN !PROJECT_NAME-->
+   <!--BEGIN PROJECT_BRIEF-->
+    <td style="padding-left: 0.5em;">
+    <div id="projectbrief">$projectbrief</div>
+    </td>
+   <!--END PROJECT_BRIEF-->
+  <!--END !PROJECT_NAME-->
+  <!--BEGIN DISABLE_INDEX-->
+   <!--BEGIN SEARCHENGINE-->
+   <td>$searchbox</td>
+   <!--END SEARCHENGINE-->
+  <!--END DISABLE_INDEX-->
+ </tr>
+ </tbody>
+</table>
+</div>
+<!--END TITLEAREA-->
+<!-- end header part -->
diff --git a/install b/install
index 5229ec03dcfad48c6963243acc69ae48d8f40574..c62d6f13844f219547320d00f4e4003bdb5e147f 100755
--- a/install
+++ b/install
@@ -329,14 +329,8 @@ else
 
 fi
 
-### Create example.mk
+# Where openfpm is going to be installed
 install_base=$(cat install_dir)
-echo "INCLUDE_PATH=-I. -I$install_base/openfpm_numerics/include -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include -I$i_dir/METIS/include -I$i_dir/PARMETIS/include -I$i_dir/BOOST/include -I$i_dir/HDF5/include $lin_alg_inc" > example.mk
-echo "LIBS_PATH= -L$install_base/openfpm_devices/lib -L$install_base/openfpm_pdata/lib  -L$install_base/openfpm_vcluster/lib -L$i_dir/METIS/lib -L$i_dir/PARMETIS/lib  -L$i_dir/BOOST/lib -L$i_dir/HDF5/lib $lin_alg_dir" >> example.mk
-echo "LIBS=-lvcluster -lofpm_pdata -lofpmmemory -lparmetis -lmetis -lboost_iostreams -lhdf5 $lin_alg_lib" >> example.mk
-echo "LIBS_SE2=-lvcluster -lofpmmemory_se2 -lparmetis -lmetis -lboost_iostreams -lhdf5 $lin_alg_lib" >> example.mk
-cp example.mk src/example.mk
-cp example.mk example/example.mk
 
 make clean
 make
@@ -364,6 +358,10 @@ echo ""
 echo -e "\033[1;34;5m ---------- Mandatory packages ---------  \033[0m"
 echo ""
 
+example_library_path=""
+example_library=""
+example_include_path=""
+
 if [ -d "$i_dir/MPI" ]; then
   installation_report="$installation_report \033[92;1mMPI\033[0m Installed: \033[1m $i_dir/MPI \033[0m\n"
   bash_path="$bash_path:$i_dir/MPI/bin"
@@ -375,16 +373,25 @@ fi
 if [ -d "$i_dir/METIS" ]; then
   installation_report="$installation_report \033[92;1mMETIS\033[0m Installed: \033[1m $i_dir/METIS \033[0m\n"
   bash_library="$bash_library:$i_dir/METIS/lib"
+  example_library_path="$example_library_path -L$i_dir/METIS/lib"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/METIS/include"
 fi
 
 if [ -d "$i_dir/PARMETIS" ]; then
   installation_report="$installation_report \033[92;1mPARMETIS\033[0m Installed: \033[1m $i_dir/PARMETIS \033[0m\n"
   bash_library="$bash_library:$i_dir/PARMETIS/lib"
+  example_library_path="$example_library_path -L$i_dir/PARMETIS/lib"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/PARMETIS/include"
 fi
 
 if [ -d "$i_dir/BOOST" ]; then
   installation_report="$installation_report \033[92;1mBOOST\033[0m Installed: \033[1m $i_dir/BOOST \033[0m\n"
   bash_library="$bash_library:$i_dir/BOOST/lib"
+  example_library_path="$example_library_path -L$i_dir/BOOST/lib"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/BOOST/include"
 elif [ $BOOST_System_prv -eq 1 ]; then
   installation_report="$installation_report \033[92;1mBOOST\033[0m Installed: \033[1m System installation \033[0m\n"
 fi
@@ -392,6 +399,9 @@ fi
 if [ -d "$i_dir/HDF5" ]; then
   installation_report="$installation_report \033[92;1mHDF5\033[0m Installed: \033[1m $i_dir/HDF5 \033[0m\n"
   bash_library="$bash_library:$i_dir/HDF5/lib"
+  example_library_path="$example_library_path -L$i_dir/HDF5/lib"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/HDF5/include"
 fi
 
 echo -e "$installation_report"
@@ -405,12 +415,18 @@ installation_report=""
 if [ -d "$i_dir/PETSC" ]; then
   installation_report="$installation_report \033[92;1mPETSC\033[0m Installed: \033[1m $i_dir/PETSC \033[0m\n"
   bash_library="$bash_library:$i_dir/PETSC/lib"
+  example_library_path="$example_library_path -L$i_dir/PETSC/lib"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/PETSC/include"
 else
   installation_report="$installation_report \033[91;1mPETSC\033[0m Installed: \033[1m NO \033[0m\n"
 fi
 
 if [ -d "$i_dir/EIGEN" ]; then
   installation_report="$installation_report \033[92;1mEIGEN\033[0m Installed: \033[1m $i_dir/EIGEN \033[0m\n"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/EIGEN/include"
 fi
 
 echo -e "$installation_report"
@@ -422,6 +438,9 @@ installation_report=""
 if [ -d "$i_dir/TRILINOS" ]; then
   installation_report="$installation_report \033[92;1mTRILINOS\033[0m Installed: \033[1m $i_dir/TRILINOS \033[0m\n"
   bash_library="$bash_library:$i_dir/TRILINOS/lib"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/TRILINOS/include"
 else
   installation_report="$installation_report \033[91;1mTRILINOS\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -429,6 +448,8 @@ fi
 if [ -d "$i_dir/OPENBLAS" ]; then
   installation_report="$installation_report \033[92;1mOPENBLAS\033[0m Installed: \033[1m $i_dir/OPENBLAS \033[0m\n"
   bash_library="$bash_library:$i_dir/OPENBLAS/lib"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
 else
   installation_report="$installation_report \033[91;1mOPENBLAS\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -436,6 +457,9 @@ fi
 if [ -d "$i_dir/SUITESPARSE" ]; then
   installation_report="$installation_report \033[92;1mSUITESPARSE\033[0m Installed: \033[1m $i_dir/SUITESPARSE \033[0m\n"
   bash_library="$bash_library:$i_dir/SUITESPARSE/lib"
+  example_library_path="$example_library_path -L$i_dir/SUITESPARSE/lib"
+  example_library="$example_library"
+  example_include_path="$example_include_path -I$i_dir/SUITESPARSE/include"
 else
   installation_report="$installation_report \033[91;1mSUITESPARSE\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -443,6 +467,8 @@ fi
 if [ -d "$i_dir/SCALAPACK" ]; then
   installation_report="$installation_report \033[92;1mSCALAPACK\033[0m Installed: \033[1m $i_dir/SCALAPACK \033[0m\n"
   bash_library="$bash_library:$i_dir/SCALAPACK/lib"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
 else
   installation_report="$installation_report \033[91;1mSCALAPACK\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -450,6 +476,8 @@ fi
 if [ -d "$i_dir/MUMPS" ]; then
   installation_report="$installation_report \033[92;1mMUMPS\033[0m Installed: \033[1m $i_dir/MUMPS \033[0m\n"
   bash_library="$bash_library:$i_dir/MUMPS/lib"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
 else
   installation_report="$installation_report \033[91;1mMUMPS\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -457,6 +485,8 @@ fi
 if [ -d "$i_dir/SUPERLU_DIST" ]; then
   installation_report="$installation_report \033[92;1mSUPERLU_DIST\033[0m Installed: \033[1m $i_dir/SUPERLU_DIST \033[0m\n"
   bash_library="$bash_library:$i_dir/SUPERLU_DIST/lib"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
 else
   installation_report="$installation_report \033[91;1mSUPERLU_DIST\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -464,6 +494,8 @@ fi
 if [ -d "$i_dir/HYPRE" ]; then
   installation_report="$installation_report \033[92;1mHYPRE\033[0m Installed: \033[1m $i_dir/HYPRE \033[0m\n"
   bash_library="$bash_library:$i_dir/HYPRE/lib"
+  example_library_path="$example_library_path"
+  example_library="$example_library"
 else
   installation_report="$installation_report \033[91;1mHYPRE\033[0m Installed: \033[1m NO \033[0m\n"
 fi
@@ -476,6 +508,15 @@ bash_library="$bash_library\""
 echo "$bash_path" > $HOME/openfpm_vars
 echo "$bash_library" >> $HOME/openfpm_vars
 
+### Create example.mk
+
+echo "INCLUDE_PATH=-I. -I$install_base/openfpm_numerics/include -I$install_base/openfpm_pdata/include/config -I$install_base/openfpm_pdata/include -I$install_base/openfpm_data/include -I$install_base/openfpm_vcluster/include -I$install_base/openfpm_io/include -I$install_base/openfpm_devices/include $example_include_path $lin_alg_inc" > example.mk
+echo "LIBS_PATH= -L$install_base/openfpm_devices/lib -L$install_base/openfpm_pdata/lib  -L$install_base/openfpm_vcluster/lib $example_library_path  $lin_alg_dir" >> example.mk
+echo "LIBS=-lvcluster -lofpm_pdata -lofpmmemory -lparmetis -lmetis -lboost_iostreams -lhdf5 $lin_alg_lib" >> example.mk
+echo "LIBS_SE2=-lvcluster -lofpmmemory_se2 -lparmetis -lmetis -lboost_iostreams -lhdf5 $lin_alg_lib" >> example.mk
+cp example.mk src/example.mk
+cp example.mk example/example.mk
+
 echo -e "$installation_report"
 echo ""
 echo ""
diff --git a/ofpdoxygen.css b/ofpdoxygen.css
new file mode 100644
index 0000000000000000000000000000000000000000..b2c94ac212bd24085366baaca1d63d5ed978724d
--- /dev/null
+++ b/ofpdoxygen.css
@@ -0,0 +1,1454 @@
+/* The standard CSS for doxygen 1.8.10 */
+
+body, table, div, p, dl {
+	font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+	font-size: 150%;
+}
+
+.title {
+	font: 400 14px/28px Roboto,sans-serif;
+	font-size: 150%;
+	font-weight: bold;
+	margin: 10px 2px;
+}
+
+h2.groupheader {
+	border-bottom: 1px solid #879ECB;
+	color: #354C7B;
+	font-size: 150%;
+	font-weight: normal;
+	margin-top: 1.75em;
+	padding-top: 8px;
+	padding-bottom: 4px;
+	width: 100%;
+}
+
+h3.groupheader {
+	font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	-webkit-transition: text-shadow 0.5s linear;
+	-moz-transition: text-shadow 0.5s linear;
+	-ms-transition: text-shadow 0.5s linear;
+	-o-transition: text-shadow 0.5s linear;
+	transition: text-shadow 0.5s linear;
+	margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+	text-shadow: 0 0 15px cyan;
+}
+
+dt {
+	font-weight: bold;
+}
+
+div.multicol {
+	-moz-column-gap: 1em;
+	-webkit-column-gap: 1em;
+	-moz-column-count: 3;
+	-webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+	margin-top: 2px;
+}
+
+p.starttd {
+	margin-top: 0px;
+}
+
+p.endli {
+	margin-bottom: 0px;
+}
+
+p.enddd {
+	margin-bottom: 4px;
+}
+
+p.endtd {
+	margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+	font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+}
+
+div.qindex, div.navpath {
+	width: 100%;
+	line-height: 140%;
+}
+
+div.navtab {
+	margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+	color: #3D578C;
+	font-weight: normal;
+	text-decoration: none;
+}
+
+.contents a:visited {
+	color: #4665A2;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a.qindex {
+	font-weight: bold;
+}
+
+a.qindexHL {
+	font-weight: bold;
+	background-color: #9CAFD4;
+	color: #ffffff;
+	border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+	font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+	color: #4665A2; 
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+	color: #4665A2; 
+}
+
+/* @end */
+
+dl.el {
+	margin-left: -1cm;
+}
+
+pre.fragment {
+        border: 1px solid #C4CFE5;
+        background-color: #FBFCFD;
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+        overflow: auto;
+        word-wrap: break-word;
+        font-size:  9pt;
+        line-height: 125%;
+        font-family: monospace, fixed;
+        font-size: 105%;
+}
+
+div.fragment {
+        padding: 4px 6px;
+        margin: 4px 8px 4px 2px;
+	background-color: #FBFCFD;
+	border: 1px solid #C4CFE5;
+}
+
+div.line {
+	font-family: monospace, fixed;
+        font-size: 13px;
+	min-height: 13px;
+	line-height: 1.0;
+	text-wrap: unrestricted;
+	white-space: -moz-pre-wrap; /* Moz */
+	white-space: -pre-wrap;     /* Opera 4-6 */
+	white-space: -o-pre-wrap;   /* Opera 7 */
+	white-space: pre-wrap;      /* CSS3  */
+	word-wrap: break-word;      /* IE 5.5+ */
+	text-indent: -53px;
+	padding-left: 53px;
+	padding-bottom: 0px;
+	margin: 0px;
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+div.line.glow {
+	background-color: cyan;
+	box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+	padding-right: 4px;
+	text-align: right;
+	border-right: 2px solid #0F0;
+	background-color: #E8E8E8;
+        white-space: pre;
+}
+span.lineno a {
+	background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+	background-color: #C8C8C8;
+}
+
+div.ah, span.ah {
+	background-color: black;
+	font-weight: bold;
+	color: #ffffff;
+	margin-bottom: 3px;
+	margin-top: 3px;
+	padding: 0.2em;
+	border: solid thin #333;
+	border-radius: 0.5em;
+	-webkit-border-radius: .5em;
+	-moz-border-radius: .5em;
+	box-shadow: 2px 2px 3px #999;
+	-webkit-box-shadow: 2px 2px 3px #999;
+	-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+	background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+	background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.classindex ul {
+        list-style: none;
+        padding-left: 0;
+}
+
+div.classindex span.ai {
+        display: inline-block;
+}
+
+div.groupHeader {
+	margin-left: 16px;
+	margin-top: 12px;
+	font-weight: bold;
+}
+
+div.groupText {
+	margin-left: 16px;
+	font-style: italic;
+}
+
+body {
+	background-color: white;
+	color: black;
+        margin: 0;
+}
+
+div.contents {
+	margin-top: 10px;
+	margin-left: 12px;
+	margin-right: 8px;
+}
+
+td.indexkey {
+	background-color: #EBEFF6;
+	font-weight: bold;
+	border: 1px solid #C4CFE5;
+	margin: 2px 0px 2px 0;
+	padding: 2px 10px;
+        white-space: nowrap;
+        vertical-align: top;
+}
+
+td.indexvalue {
+	background-color: #EBEFF6;
+	border: 1px solid #C4CFE5;
+	padding: 2px 10px;
+	margin: 2px 0px;
+}
+
+tr.memlist {
+	background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+	text-align: center;
+}
+
+img.formulaDsp {
+	
+}
+
+img.formulaInl {
+	vertical-align: middle;
+}
+
+div.center {
+	text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+	border: 0px;
+}
+
+address.footer {
+	text-align: right;
+	padding-right: 12px;
+}
+
+img.footer {
+	border: 0px;
+	vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+	color: #008000
+}
+
+span.keywordtype {
+	color: #604020
+}
+
+span.keywordflow {
+	color: #e08000
+}
+
+span.comment {
+	color: #800000
+}
+
+span.preprocessor {
+	color: #806020
+}
+
+span.stringliteral {
+	color: #002080
+}
+
+span.charliteral {
+	color: #008080
+}
+
+span.vhdldigit { 
+	color: #ff00ff 
+}
+
+span.vhdlchar { 
+	color: #000000 
+}
+
+span.vhdlkeyword { 
+	color: #700070 
+}
+
+span.vhdllogic { 
+	color: #ff0000 
+}
+
+blockquote {
+        background-color: #F7F8FB;
+        border-left: 2px solid #9CAFD4;
+        margin: 0 24px 0 4px;
+        padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+	color: #003399;
+	font-weight: bold;
+}
+
+form.search {
+	margin-bottom: 0px;
+	margin-top: 0px;
+}
+
+input.search {
+	font-size: 75%;
+	color: #000080;
+	font-weight: normal;
+	background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+	font-size: 75%;
+}
+
+.dirtab {
+	padding: 4px;
+	border-collapse: collapse;
+	border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+	background: #EBEFF6;
+	font-weight: bold;
+}
+
+hr {
+	height: 0px;
+	border: none;
+	border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+	height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+	border-spacing: 0px;
+	padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+	-webkit-transition-property: background-color, box-shadow;
+	-webkit-transition-duration: 0.5s;
+	-moz-transition-property: background-color, box-shadow;
+	-moz-transition-duration: 0.5s;
+	-ms-transition-property: background-color, box-shadow;
+	-ms-transition-duration: 0.5s;
+	-o-transition-property: background-color, box-shadow;
+	-o-transition-duration: 0.5s;
+	transition-property: background-color, box-shadow;
+	transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+	background-color: cyan;
+	box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+	background-color: #F9FAFC;
+	border: none;
+	margin: 4px;
+	padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+	padding: 0px 8px 4px 8px;
+	color: #555;
+}
+
+.memSeparator {
+        border-bottom: 1px solid #DEE4F0;
+        line-height: 1px;
+        margin: 0px;
+        padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memItemRight {
+	width: 100%;
+}
+
+.memTemplParams {
+	color: #4665A2;
+        white-space: nowrap;
+	font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+	font-size: 80%;
+	color: #4665A2;
+	font-weight: normal;
+	margin-left: 9px;
+}
+
+.memnav {
+	background-color: #EBEFF6;
+	border: 1px solid #A3B4D7;
+	text-align: center;
+	margin: 2px;
+	margin-right: 15px;
+	padding: 2px;
+}
+
+.mempage {
+	width: 100%;
+}
+
+.memitem {
+	padding: 0;
+	margin-bottom: 10px;
+	margin-right: 5px;
+        -webkit-transition: box-shadow 0.5s linear;
+        -moz-transition: box-shadow 0.5s linear;
+        -ms-transition: box-shadow 0.5s linear;
+        -o-transition: box-shadow 0.5s linear;
+        transition: box-shadow 0.5s linear;
+        display: table !important;
+        width: 100%;
+}
+
+.memitem.glow {
+         box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memname td {
+	vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        /* opera specific markup */
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 4px;
+        -moz-border-radius-topleft: 4px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 4px;
+        -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 6px 10px 2px 10px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        background-image:url('nav_g.png');
+        background-repeat:repeat-x;
+        background-color: #FFFFFF;
+        /* opera specific markup */
+        border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;
+        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 4px;
+        -moz-border-radius-bottomright: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 4px;
+        -webkit-border-bottom-right-radius: 4px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+        padding: 5px;
+}
+
+dl.reflist dd {
+        margin: 0px 0px 10px 0px;
+        padding: 5px;
+}
+
+.paramkey {
+	text-align: right;
+}
+
+.paramtype {
+	white-space: nowrap;
+}
+
+.paramname {
+	color: #602020;
+	white-space: nowrap;
+}
+.paramname em {
+	font-style: normal;
+}
+.paramname code {
+        line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+        margin-left: 0px;
+        padding-left: 0px;
+}       
+
+.params .paramname, .retval .paramname {
+        font-weight: bold;
+        vertical-align: top;
+}
+        
+.params .paramtype {
+        font-style: italic;
+        vertical-align: top;
+}       
+        
+.params .paramdir {
+        font-family: "courier new",courier,monospace;
+        vertical-align: top;
+}
+
+table.mlabels {
+	border-spacing: 0px;
+}
+
+td.mlabels-left {
+	width: 100%;
+	padding: 0px;
+}
+
+td.mlabels-right {
+	vertical-align: bottom;
+	padding: 0px;
+	white-space: nowrap;
+}
+
+span.mlabels {
+        margin-left: 8px;
+}
+
+span.mlabel {
+        background-color: #728DC1;
+        border-top:1px solid #5373B4;
+        border-left:1px solid #5373B4;
+        border-right:1px solid #C4CFE5;
+        border-bottom:1px solid #C4CFE5;
+	text-shadow: none;
+	color: white;
+	margin-right: 4px;
+	padding: 2px 3px;
+	border-radius: 3px;
+	font-size: 7pt;
+	white-space: nowrap;
+	vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+        margin: 10px 0px;
+        border-top: 1px solid #9CAFD4;
+        border-bottom: 1px solid #9CAFD4;
+        width: 100%;
+}
+
+.directory table {
+        border-collapse:collapse;
+}
+
+.directory td {
+        margin: 0px;
+        padding: 0px;
+	vertical-align: top;
+}
+
+.directory td.entry {
+        white-space: nowrap;
+        padding-right: 6px;
+	padding-top: 3px;
+}
+
+.directory td.entry a {
+        outline:none;
+}
+
+.directory td.entry a img {
+        border: none;
+}
+
+.directory td.desc {
+        width: 100%;
+        padding-left: 6px;
+	padding-right: 6px;
+	padding-top: 3px;
+	border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+	padding-left: 6px;
+	background-color: #F7F8FB;
+}
+
+.directory img {
+	vertical-align: -30%;
+}
+
+.directory .levels {
+        white-space: nowrap;
+        width: 100%;
+        text-align: right;
+        font-size: 9pt;
+}
+
+.directory .levels span {
+        cursor: pointer;
+        padding-left: 2px;
+        padding-right: 2px;
+	color: #3D578C;
+}
+
+.arrow {
+    color: #9CAFD4;
+    -webkit-user-select: none;
+    -khtml-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+    cursor: pointer;
+    font-size: 80%;
+    display: inline-block;
+    width: 16px;
+    height: 22px;
+}
+
+.icon {
+    font-family: Arial, Helvetica;
+    font-weight: bold;
+    font-size: 12px;
+    height: 14px;
+    width: 16px;
+    display: inline-block;
+    background-color: #728DC1;
+    color: white;
+    text-align: center;
+    border-radius: 4px;
+    margin-left: 2px;
+    margin-right: 2px;
+}
+
+.icona {
+    width: 24px;
+    height: 22px;
+    display: inline-block;
+}
+
+.iconfopen {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderopen.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.iconfclosed {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('folderclosed.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+.icondoc {
+    width: 24px;
+    height: 18px;
+    margin-bottom: 4px;
+    background-image:url('doc.png');
+    background-position: 0px -4px;
+    background-repeat: repeat-y;
+    vertical-align:top;
+    display: inline-block;
+}
+
+table.directory {
+    font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+address {
+	font-style: normal;
+	color: #2A3D61;
+}
+
+table.doxtable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+	border: 1px solid #2D4068;
+	padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+	background-color: #374F7F;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+table.fieldtable {
+        /*width: 100%;*/
+        margin-bottom: 10px;
+        border: 1px solid #A8B8D9;
+        border-spacing: 0px;
+        -moz-border-radius: 4px;
+        -webkit-border-radius: 4px;
+        border-radius: 4px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+        -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+        box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+        padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+        white-space: nowrap;
+        border-right: 1px solid #A8B8D9;
+        border-bottom: 1px solid #A8B8D9;
+        vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+        padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+        border-bottom: 1px solid #A8B8D9;
+        /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+        margin-top: 0px;
+}       
+        
+.fieldtable td.fielddoc p:last-child {
+        margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+        border-bottom: none;
+}
+
+.fieldtable th {
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+        font-size: 90%;
+        color: #253555;
+        padding-bottom: 4px;
+        padding-top: 5px;
+        text-align:left;
+        -moz-border-radius-topleft: 4px;
+        -moz-border-radius-topright: 4px;
+        -webkit-border-top-left-radius: 4px;
+        -webkit-border-top-right-radius: 4px;
+        border-top-left-radius: 4px;
+        border-top-right-radius: 4px;
+        border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+	top: 0px;
+	left: 10px;
+	height: 36px;
+	background-image: url('tab_b.png');
+	z-index: 101;
+	overflow: hidden;
+	font-size: 13px;
+}
+
+.navpath ul
+{
+	font-size: 11px;
+	background-image:url('tab_b.png');
+	background-repeat:repeat-x;
+	background-position: 0 -5px;
+	height:30px;
+	line-height:30px;
+	color:#8AA0CC;
+	border:solid 1px #C2CDE4;
+	overflow:hidden;
+	margin:0px;
+	padding:0px;
+}
+
+.navpath li
+{
+	list-style-type:none;
+	float:left;
+	padding-left:10px;
+	padding-right:15px;
+	background-image:url('bc_s.png');
+	background-repeat:no-repeat;
+	background-position:right;
+	color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+	height:32px;
+	display:block;
+	text-decoration: none;
+	outline: none;
+	color: #283A5D;
+	font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+	text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+	text-decoration: none;        
+}
+
+.navpath li.navelem a:hover
+{
+	color:#6884BD;
+}
+
+.navpath li.footer
+{
+        list-style-type:none;
+        float:right;
+        padding-left:10px;
+        padding-right:15px;
+        background-image:none;
+        background-repeat:no-repeat;
+        background-position:right;
+        color:#364D7C;
+        font-size: 8pt;
+}
+
+
+div.summary
+{
+	float: right;
+	font-size: 8pt;
+	padding-right: 5px;
+	width: 50%;
+	text-align: right;
+}       
+
+div.summary a
+{
+	white-space: nowrap;
+}
+
+div.ingroups
+{
+	font-size: 8pt;
+	width: 50%;
+	text-align: left;
+}
+
+div.ingroups a
+{
+	white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+	background-color: #F9FAFC;
+	margin:  0px;
+	border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+	padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+        padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+	margin-left: 0px;
+	padding-left: 0px;
+}
+
+dl.note
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00D000;
+}
+
+dl.deprecated
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #505050;
+}
+
+dl.todo
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #00C0E0;
+}
+
+dl.test
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #3030E0;
+}
+
+dl.bug
+{
+        margin-left:-7px;
+        padding-left: 3px;
+        border-left:4px solid;
+        border-color: #C08050;
+}
+
+dl.section dd {
+	margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+	text-align: center;
+	vertical-align: bottom;
+	border-collapse: separate;
+}
+ 
+#projectlogo img
+{ 
+	border: 0px none;
+}
+ 
+#projectalign
+{
+        vertical-align: middle;
+}
+
+#projectname
+{
+	font: 300% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 2px 0px;
+}
+    
+#projectbrief
+{
+	font: 120% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#projectnumber
+{
+	font: 50% Tahoma, Arial,sans-serif;
+	margin: 0px;
+	padding: 0px;
+}
+
+#titlearea
+{
+	padding: 0px;
+	margin: 0px;
+	width: 100%;
+	border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+        text-align: center;
+}
+
+.dotgraph
+{
+        text-align: center;
+}
+
+.mscgraph
+{
+        text-align: center;
+}
+
+.diagraph
+{
+        text-align: center;
+}
+
+.caption
+{
+	font-weight: bold;
+}
+
+div.zoom
+{
+	border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+        margin-bottom:50px;
+}
+
+dl.citelist dt {
+        color:#334975;
+        float:left;
+        font-weight:bold;
+        margin-right:10px;
+        padding:5px;
+}
+
+dl.citelist dd {
+        margin:2px 0;
+        padding:5px 0;
+}
+
+div.toc {
+        padding: 14px 25px;
+        background-color: #F4F6FA;
+        border: 1px solid #D8DFEE;
+        border-radius: 7px 7px 7px 7px;
+        float: right;
+        height: auto;
+        margin: 0 20px 10px 10px;
+        width: 200px;
+}
+
+div.toc li {
+        background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+        font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+        margin-top: 5px;
+        padding-left: 10px;
+        padding-top: 2px;
+}
+
+div.toc h3 {
+        font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+	color: #4665A2;
+        border-bottom: 0 none;
+        margin: 0;
+}
+
+div.toc ul {
+        list-style: none outside none;
+        border: medium none;
+        padding: 0px;
+}       
+
+div.toc li.level1 {
+        margin-left: 0px;
+}
+
+div.toc li.level2 {
+        margin-left: 15px;
+}
+
+div.toc li.level3 {
+        margin-left: 30px;
+}
+
+div.toc li.level4 {
+        margin-left: 45px;
+}
+
+.inherit_header {
+        font-weight: bold;
+        color: gray;
+        cursor: pointer;
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
+.inherit_header td {
+        padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+        display: none;
+}
+
+tr.heading h2 {
+        margin-top: 12px;
+        margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+        position: absolute;
+        display: none;
+}
+
+#powerTip {
+	cursor: default;
+	white-space: nowrap;
+	background-color: white;
+	border: 1px solid gray;
+	border-radius: 4px 4px 4px 4px;
+	box-shadow: 1px 1px 7px gray;
+	display: none;
+	font-size: smaller;
+	max-width: 80%;
+	opacity: 0.9;
+	padding: 1ex 1em 1em;
+	position: absolute;
+	z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+        color: grey;
+	font-style: italic;
+}
+
+#powerTip div.ttname a {
+        font-weight: bold;
+}
+
+#powerTip div.ttname {
+        font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+        color: #006318;
+}
+
+#powerTip div {
+        margin: 0px;
+        padding: 0px;
+        font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+	content: "";
+	position: absolute;
+	margin: 0px;
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.w:after,  #powerTip.w:before,
+#powerTip.e:after,  #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	border: solid transparent;
+	content: " ";
+	height: 0;
+	width: 0;
+	position: absolute;
+}
+
+#powerTip.n:after,  #powerTip.s:after,
+#powerTip.w:after,  #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+	border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before,  #powerTip.s:before,
+#powerTip.w:before,  #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+	border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after,  #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+	top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+	border-top-color: #ffffff;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+#powerTip.n:before {
+	border-top-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+	left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+	right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+	left: 14px;
+}
+
+#powerTip.s:after,  #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+	bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+	border-bottom-color: #ffffff;
+	border-width: 10px;
+	margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+	border-bottom-color: #808080;
+	border-width: 11px;
+	margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+	left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+	right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+	left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+	left: 100%;
+}
+#powerTip.e:after {
+	border-left-color: #ffffff;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.e:before {
+	border-left-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+	right: 100%;
+}
+#powerTip.w:after {
+	border-right-color: #ffffff;
+	border-width: 10px;
+	top: 50%;
+	margin-top: -10px;
+}
+#powerTip.w:before {
+	border-right-color: #808080;
+	border-width: 11px;
+	top: 50%;
+	margin-top: -11px;
+}
+
+@media print
+{
+  #top { display: none; }
+  #side-nav { display: none; }
+  #nav-path { display: none; }
+  body { overflow:visible; }
+  h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+  .summary { display: none; }
+  .memitem { page-break-inside: avoid; }
+  #doc-content
+  {
+    margin-left:0 !important;
+    height:auto !important;
+    width:auto !important;
+    overflow:inherit;
+    display:inline;
+  }
+}
+