diff --git a/example/Numerics/Sussman_redistancing/Makefile b/example/Numerics/Sussman_redistancing/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..b7f56b266b574a2acd50ea95869feffa11d50f13
--- /dev/null
+++ b/example/Numerics/Sussman_redistancing/Makefile
@@ -0,0 +1,9 @@
+SUBDIRS := $(wildcard */.)
+
+all clean run: $(SUBDIRS)
+
+$(SUBDIRS):
+	$(MAKE) -C $@ $(MAKECMDGOALS)
+
+.PHONY: all clean $(SUBDIRS)
+
diff --git a/example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp b/example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp
index 8e88054feffb1d7cef305e1940189f4ab011611a..c0836a2981d463d1d520f113d19706299c06f3ec 100644
--- a/example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp
+++ b/example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp
@@ -94,7 +94,7 @@
  *
  * These are the header files that we need to include:
  *
- * @snippet examples/example_sussman_circle/main.cpp Include
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Include
  *
  */
 //! @cond [Include] @endcond
@@ -133,7 +133,7 @@
  * * Initializing OpenFPM
  * * Setting the output path and creating an output folder
  *
- * @snippet examples/example_sussman_circle/main.cpp Initialization and output folder
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Initialization and output folder
  *
  */
 //! @cond [Initialization and output folder] @endcond
@@ -159,7 +159,7 @@ int main(int argc, char* argv[])
 	 * * \p y: Second dimension
 	 * * \p Phi_0_grid: Index of property that stores the initial level-set-function
 	 * * \p Phi_SDF_grid: Index of property where the redistancing result should be written to
-	 * @snippet examples/example_sussman_circle/main.cpp Indices grid
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Indices grid
 	 *
 	 */
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -187,7 +187,7 @@ int main(int argc, char* argv[])
 	 *   the post-redistancing Phi_SDF should be written to.
 	 * * Set some property names (optionally. These names show up when opening the grid vtk in Paraview.)
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Grid creation
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Grid creation
 	 *
 	 */
 	//! @cond [Grid creation] @endcond
@@ -220,7 +220,7 @@ int main(int argc, char* argv[])
      * \end{cases} @f]
 	 *
 	 * Optionally, we can save this initial grid as a vtk file, if we want to visualize and check it in Paraview.
-	 * @snippet examples/example_sussman_circle/main.cpp Get circle
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Get circle
 	 */
     //! @cond [Get circle] @endcond
 	// Now we initialize the grid with a filled circle. Outside the circle, the value of Phi_0 will be -1, inside +1.
@@ -266,7 +266,7 @@ int main(int argc, char* argv[])
 	 * * \p print_steadyState_iter: If true, the number of the steady-state-iteration, the corresponding change
 	 *                              w.r.t the previous iteration and the residual is printed (Default: false).
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Redistancing options
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Redistancing options
 	 */
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//! @cond [Redistancing options] @endcond
@@ -306,7 +306,7 @@ int main(int argc, char* argv[])
 	 * containing the signed distance function in Prop. 2. The vtk-file can be opened in Paraview. If we want, we can
 	 * further save the result as hdf5 file that can be reloaded onto an openFPM grid.
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Run redistancing
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Run redistancing
 	 */
 	//! @cond [Run redistancing] @endcond
 	RedistancingSussman<grid_in_type> redist_obj(g_dist, redist_options);   // Instantiation of Sussman-redistancing class
@@ -332,7 +332,7 @@ int main(int argc, char* argv[])
 	 * one, but you can have particles with arbitrary many properties, depending on what you want to use them for
 	 * later on. Here, we exemplarily define 3 properties.
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Initialize narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Initialize narrow band
 	 */
 	//! @cond [Initialize narrow band] @endcond
 	//	Get narrow band: Place particles on interface (narrow band width e.g. 2 grid points on each side of the interface)
@@ -363,7 +363,7 @@ int main(int argc, char* argv[])
 	 * grid points (size_t), physical width (double) or extension of narrow band as physical width inside of object
 	 * and outside the object (double, double).
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Instantiate narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Instantiate narrow band
 	 */
 	//! @cond [Instantiate narrow band] @endcond
 	size_t thickness_of_narrowBand_in_grid_points = 6;
@@ -378,7 +378,7 @@ int main(int argc, char* argv[])
 	 * Again, we can define some indices for better code readability. This is just an example, you may want to choose
 	 * different names and have a different number of properties thus different number of indices.
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Indices narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Indices narrow band
 	 *
 	 */
 	//////////////////////////////////////////////////////////////////////////////////////////////
@@ -409,7 +409,7 @@ int main(int argc, char* argv[])
 	 *
 	 * We save the particles in a vtk file (open in Paraview) and as hdf5 file (can be loaded back on particles).
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Get narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Get narrow band
 	 */
 	// Get the narrow band. You can decide, if you only want the Phi_SDF saved to your particles or
 	// if you also want the gradients or gradients and magnitude of gradient.
@@ -432,7 +432,7 @@ int main(int argc, char* argv[])
 	 *
 	 * We end with terminating OpenFPM
 	 *
-	 * @snippet examples/example_sussman_circle/main.cpp Terminate
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp Terminate
 	 */
 	//! @cond [Terminate] @endcond
 	openfpm_finalize(); // Finalize openFPM library
@@ -445,7 +445,7 @@ int main(int argc, char* argv[])
  *
  * ## Full code ## {#e2d_c_full}
  *
- * @include examples/example_sussman_circle/main.cpp
+ * @include example/Numerics/Sussman_redistancing/example_sussman_circle/main.cpp
  */
 
 
diff --git a/example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp b/example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp
index a6e63c959c6bee98b2a8cdf168bd84cd13630b77..611d69fa369f961f7777793703e545ec7fbd427d 100644
--- a/example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp
+++ b/example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp
@@ -28,7 +28,7 @@
  *
  * These are the header files that we need to include:
  *
- * @snippet examples/example_sussman_images_2D/main.cpp Include
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp Include
  *
  */
 //! @cond [Include] @endcond
@@ -76,7 +76,7 @@
  * * \p Phi_0_grid: Index of property that stores the initial level-set-function
  * * \p Phi_SDF_grid: Index of property where the redistancing result should be written to
  *
- * @snippet examples/example_sussman_images_2D/main.cpp Initialization
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp Initialization
  *
  */
 //! @cond [Initialization] @endcond
@@ -133,7 +133,7 @@ int main(int argc, char* argv[])
 	 * This can be useful for example when you want to have an isotropic grid but the underlying image is
 	 * anisotropic (as it often happens for microcsopic z-stacks rather than 2D images).
 	 *
-	 * @snippet examples/example_sussman_images_2D/main.cpp Refinement
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp Refinement
 	 *
 	 */
 	//! @cond [Refinement] @endcond
@@ -154,7 +154,7 @@ int main(int argc, char* argv[])
 	 * We use this image size and the refinement factor to set the grid size \p sz.
 	 *
 	 *
-	 * @snippet examples/example_sussman_images_2D/main.cpp Size
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp Size
 	 *
 	 */
 	//! @cond [Size] @endcond
@@ -185,7 +185,7 @@ int main(int argc, char* argv[])
 	 * example_sussman_circle and here: @ref example_sussman_sphere.
 	 *
 	 *
-	 * @snippet examples/example_sussman_images_2D/main.cpp Redistancing
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp Redistancing
 	 *
 	 */
 	//! @cond [Redistancing] @endcond
@@ -265,7 +265,7 @@ int main(int argc, char* argv[])
  *
  * ## Full code ## {#e2d_img_full}
  *
- * @include examples/example_sussman_images_2D/main.cpp
+ * @include example/Numerics/Sussman_redistancing/example_sussman_images_2D/main.cpp
  */
 
 
diff --git a/example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp b/example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp
index ba23b4f88c474f5e3679d3c9942e41ff7b9d3eb4..026dfee0ac975cb94b83163f6ce5d675bb839f01 100644
--- a/example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp
+++ b/example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp
@@ -34,7 +34,7 @@
  *
  * These are the header files that we need to include:
  *
- * @snippet examples/example_sussman_images_3D/main.cpp Include
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp Include
  *
  */
 //! @cond [Include] @endcond
@@ -82,7 +82,7 @@
  * * \p Phi_0_grid: Index of property that stores the initial level-set-function
  * * \p Phi_SDF_grid: Index of property where the redistancing result should be written to
  *
- * @snippet examples/example_sussman_images_3D/main.cpp Initialization
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp Initialization
  *
  */
 //! @cond [Initialization] @endcond
@@ -130,7 +130,7 @@ int main(int argc, char* argv[])
 	 * This can be useful for example when you want to have an isotropic grid but the underlying image stack is
 	 * anisotropic (as it often happens for the z-resolution of volumetric microscopy image data).
 	 *
-	 * @snippet examples/example_sussman_images_3D/main.cpp Refinement
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp Refinement
 	 *
 	 */
 	//! @cond [Refinement] @endcond
@@ -151,7 +151,7 @@ int main(int argc, char* argv[])
 	 * We use this stack size and the refinement factor to set the grid size \p sz.
 	 *
 	 *
-	 * @snippet examples/example_sussman_images_3D/main.cpp Size
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp Size
 	 *
 	 */
 	//! @cond [Size] @endcond
@@ -183,7 +183,7 @@ int main(int argc, char* argv[])
 	 * example_sussman_circle and here: @ref example_sussman_sphere.
 	 *
 	 *
-	 * @snippet examples/example_sussman_images_3D/main.cpp Redistancing
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp Redistancing
 	 *
 	 */
 	//! @cond [Redistancing] @endcond
@@ -265,7 +265,7 @@ int main(int argc, char* argv[])
  *
  * ## Full code ## {#e2d_img_full}
  *
- * @include examples/example_sussman_images_3D/main.cpp
+ * @include example/Numerics/Sussman_redistancing/example_sussman_images_3D/main.cpp
  */
 
 
diff --git a/example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp b/example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp
index ee744880bf7ed31f8013e66cd0c520ec1f912a61..2748d730567f407182a74bf101ace2bf53b9554a 100644
--- a/example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp
+++ b/example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp
@@ -54,7 +54,7 @@
  *
  * These are the header files that we need to include:
  *
- * @snippet examples/example_sussman_sphere/main.cpp Include
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Include
  *
  */
 //! @cond [Include] @endcond
@@ -93,7 +93,7 @@
  * * Initializing OpenFPM
  * * Setting the output path and creating an output folder
  *
- * @snippet examples/example_sussman_sphere/main.cpp Initialization and output folder
+ * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Initialization and output folder
  *
  */
 //! @cond [Initialization and output folder] @endcond
@@ -118,7 +118,7 @@ int main(int argc, char* argv[])
 	 * * \p z: Third dimension
 	 * * \p Phi_0_grid: Index of property that stores the initial level-set-function
 	 * * \p Phi_SDF_grid: Index of property where the redistancing result should be written to
-	 * @snippet examples/example_sussman_sphere/main.cpp Indices grid
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Indices grid
 	 *
 	 */
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -147,7 +147,7 @@ int main(int argc, char* argv[])
 	 *   the post-redistancing Phi_SDF should be written to.
 	 * * Set some property names (optionally. These names show up when opening the grid vtk in Paraview.)
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Grid creation
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Grid creation
 	 *
 	 */
 	//! @cond [Grid creation] @endcond
@@ -180,7 +180,7 @@ int main(int argc, char* argv[])
      * \end{cases} @f]
 	 *
 	 * Optionally, we can save this initial grid as a vtk file, if we want to visualize and check it in Paraview.
-	 * @snippet examples/example_sussman_sphere/main.cpp Get sphere
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Get sphere
 	 */
 	//! @cond [Get sphere] @endcond
 	// Now we initialize the grid with a filled sphere. Outside the sphere, the value of Phi_0 will be -1, inside +1.
@@ -227,7 +227,7 @@ int main(int argc, char* argv[])
 	 * * \p print_steadyState_iter: If true, the number of the steady-state-iteration, the corresponding change
 	 *                              w.r.t the previous iteration and the residual is printed (Default: false).
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Redistancing options
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Redistancing options
 	 */
 	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 	//! @cond [Redistancing options] @endcond
@@ -266,7 +266,7 @@ int main(int argc, char* argv[])
 	 * containing the signed distance function in Prop. 2. The vtk-file can be opened in Paraview. If we want, we can
 	 * further save the result as hdf5 file that can be reloaded onto an openFPM grid.
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Run redistancing
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Run redistancing
 	 */
 	//! @cond [Run redistancing] @endcond
 	RedistancingSussman<grid_in_type> redist_obj(g_dist, redist_options);   // Instantiation of Sussman-redistancing class
@@ -292,7 +292,7 @@ int main(int argc, char* argv[])
 	 * one, but you can have particles with arbitrary many properties, depending on what you want to use them for
 	 * later on. Here, we exemplarily define 3 properties.
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Initialize narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Initialize narrow band
 	 */
 	//! @cond [Initialize narrow band] @endcond
 	//	Get narrow band: Place particles on interface (narrow band width e.g. 2 grid points on each side of the interface)
@@ -323,7 +323,7 @@ int main(int argc, char* argv[])
 	 * grid points (size_t), physical width (double) or extension of narrow band as physical width inside of object
 	 * and outside the object (double, double).
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Instantiate narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Instantiate narrow band
 	 */
 	//! @cond [Instantiate narrow band] @endcond
 	size_t thickness_of_narrowBand_in_grid_points = 6;
@@ -339,7 +339,7 @@ int main(int argc, char* argv[])
 	 * Again, we can define some indices for better code readability. This is just an example, you may want to choose
 	 * different names and have a different number of properties thus different number of indices.
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Indices narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Indices narrow band
 	 *
 	 */
 	//////////////////////////////////////////////////////////////////////////////////////////////
@@ -370,7 +370,7 @@ int main(int argc, char* argv[])
 	 *
 	 * We save the particles in a vtk file (open in Paraview) and as hdf5 file (can be loaded back on particles).
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Get narrow band
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Get narrow band
 	 */
 	// Get the narrow band. You can decide, if you only want the Phi_SDF saved to your particles or
 	// if you also want the gradients or gradients and magnitude of gradient.
@@ -393,7 +393,7 @@ int main(int argc, char* argv[])
 	 *
 	 * We end with terminating OpenFPM
 	 *
-	 * @snippet examples/example_sussman_sphere/main.cpp Terminate
+	 * @snippet example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp Terminate
 	 */
 	//! @cond [Terminate] @endcond
 	openfpm_finalize(); // Finalize openFPM library
@@ -406,7 +406,7 @@ int main(int argc, char* argv[])
  *
  * ## Full code ## {#e3d_s_full}
  *
- * @include examples/example_sussman_sphere/main.cpp
+ * @include example/Numerics/Sussman_redistancing/example_sussman_sphere/main.cpp
  */
 
 
diff --git a/openfpm_pdata.doc b/openfpm_pdata.doc
index 2f1dd77b73ef7c452f980262762a7a41f47e1a5b..1ecffa9ccc680a2e2aafe5aa285dbff1a449d816 100644
--- a/openfpm_pdata.doc
+++ b/openfpm_pdata.doc
@@ -38,7 +38,7 @@ PROJECT_NAME           = "OpenFPM_pdata"
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = 3.0.0
+PROJECT_NUMBER         = 3.1.0
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/script/py/pack_examples.py b/script/py/pack_examples.py
index 94999758a48cf1c463e6c8259404b303eb3d5b6c..d6f4674c045a59de421eeb13082542130bd21588 100644
--- a/script/py/pack_examples.py
+++ b/script/py/pack_examples.py
@@ -50,6 +50,7 @@ class pack_example:
 
         for file in files:
             print("copy src:"+file+"    dst:"+self.temporary+os.sep+file[len(self.base_dir):])
+            os.makedirs(os.path.dirname(self.temporary+os.sep+file[len(self.base_dir):]), exist_ok=True)
             shutil.copy(file,self.temporary+os.sep+file[len(self.base_dir):])
 
 
diff --git a/src/Vector/cuda/vector_dist_gpu_unit_tests.cu b/src/Vector/cuda/vector_dist_gpu_unit_tests.cu
index b70bd00f9be64da890347bf1ecd91379bd1e134d..bdc77d2cd5d9264e8c15caa494a8b1c20e376434 100644
--- a/src/Vector/cuda/vector_dist_gpu_unit_tests.cu
+++ b/src/Vector/cuda/vector_dist_gpu_unit_tests.cu
@@ -1947,6 +1947,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost_put_gpu )
 
 			vd.hostToDevicePos();
 			vd.template hostToDeviceProp<0>();
+			std::cout << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa " << cudaGetLastError() << std::endl;
 			vd.template ghost_put<add_atomic_,0>(RUN_ON_DEVICE);
 			vd.template deviceToHostProp<0>();
 			vd.deviceToHostPos();