From b340ed5919570ffd21c89d143c780eff10e3198a Mon Sep 17 00:00:00 2001
From: Pietro Incardona <incardon@mpi-cbg.de>
Date: Thu, 23 Jul 2015 19:12:41 +0200
Subject: [PATCH] Fixing ghost get for distributed grids

---
 src/.deps/pdata-HeapMemory.Po                 | 312 +++---
 src/.deps/pdata-Memleak_check.Po              | 345 +++---
 src/.deps/pdata-VCluster.Po                   | 721 +++++++------
 src/.deps/pdata-main.Po                       | 987 ++++++++++--------
 src/.deps/pdata.Po                            |   1 -
 src/.deps/ppline-main.Po                      |   1 -
 src/Decomposition/CartDecomposition.hpp       | 210 +++-
 .../CartDecomposition_unit_test.hpp           |   2 +-
 src/Decomposition/ORB.hpp                     |   2 +-
 src/Graph/CartesianGraphFactory.hpp           |  16 +-
 src/Grid/grid_dist_id.hpp                     | 447 ++++++--
 src/Grid/grid_dist_id_iterator.hpp            |   6 +-
 src/Makefile                                  |   6 +-
 src/Vector/vector_dist.hpp                    |   8 +-
 src/Vector/vector_dist_unit_test.hpp          |  10 +-
 src/dec_optimizer.hpp                         |  34 +-
 16 files changed, 1852 insertions(+), 1256 deletions(-)
 delete mode 100644 src/.deps/pdata.Po
 delete mode 100644 src/.deps/ppline-main.Po

diff --git a/src/.deps/pdata-HeapMemory.Po b/src/.deps/pdata-HeapMemory.Po
index d3e9721a..42e2989a 100644
--- a/src/.deps/pdata-HeapMemory.Po
+++ b/src/.deps/pdata-HeapMemory.Po
@@ -1,100 +1,102 @@
 pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
  /usr/include/stdc-predef.h \
  ../../OpenFPM_devices/src/memory/HeapMemory.hpp ../src/config/config.h \
- ../../OpenFPM_data/src/memory.hpp \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
- /usr/include/c++/4.8.3/cstddef \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h \
+ ../../OpenFPM_devices/src/memory/memory.hpp \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h \
+ /usr/include/c++/4.9.2/cstddef \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h \
  /usr/include/bits/wordsize.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h \
  /usr/include/features.h /usr/include/sys/cdefs.h \
  /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/4.8.3/cstdint \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/4.9.2/cstdint \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h \
  /usr/include/stdint.h /usr/include/bits/wchar.h \
- /usr/include/c++/4.8.3/iostream /usr/include/c++/4.8.3/ostream \
- /usr/include/c++/4.8.3/ios /usr/include/c++/4.8.3/iosfwd \
- /usr/include/c++/4.8.3/bits/stringfwd.h \
- /usr/include/c++/4.8.3/bits/memoryfwd.h \
- /usr/include/c++/4.8.3/bits/postypes.h /usr/include/c++/4.8.3/cwchar \
+ /usr/include/c++/4.9.2/iostream /usr/include/c++/4.9.2/ostream \
+ /usr/include/c++/4.9.2/ios /usr/include/c++/4.9.2/iosfwd \
+ /usr/include/c++/4.9.2/bits/stringfwd.h \
+ /usr/include/c++/4.9.2/bits/memoryfwd.h \
+ /usr/include/c++/4.9.2/bits/postypes.h /usr/include/c++/4.9.2/cwchar \
  /usr/include/wchar.h /usr/include/stdio.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h \
- /usr/include/xlocale.h /usr/include/c++/4.8.3/exception \
- /usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h \
- /usr/include/c++/4.8.3/bits/exception_ptr.h \
- /usr/include/c++/4.8.3/bits/exception_defines.h \
- /usr/include/c++/4.8.3/bits/nested_exception.h \
- /usr/include/c++/4.8.3/bits/char_traits.h \
- /usr/include/c++/4.8.3/bits/stl_algobase.h \
- /usr/include/c++/4.8.3/bits/functexcept.h \
- /usr/include/c++/4.8.3/bits/cpp_type_traits.h \
- /usr/include/c++/4.8.3/ext/type_traits.h \
- /usr/include/c++/4.8.3/ext/numeric_traits.h \
- /usr/include/c++/4.8.3/bits/stl_pair.h \
- /usr/include/c++/4.8.3/bits/move.h \
- /usr/include/c++/4.8.3/bits/concept_check.h \
- /usr/include/c++/4.8.3/type_traits \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_types.h \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/4.8.3/debug/debug.h \
- /usr/include/c++/4.8.3/bits/stl_iterator.h \
- /usr/include/c++/4.8.3/bits/localefwd.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/4.8.3/clocale /usr/include/locale.h \
- /usr/include/bits/locale.h /usr/include/c++/4.8.3/cctype \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h \
+ /usr/include/xlocale.h /usr/include/c++/4.9.2/exception \
+ /usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/4.9.2/bits/exception_ptr.h \
+ /usr/include/c++/4.9.2/bits/exception_defines.h \
+ /usr/include/c++/4.9.2/bits/nested_exception.h \
+ /usr/include/c++/4.9.2/bits/char_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_algobase.h \
+ /usr/include/c++/4.9.2/bits/functexcept.h \
+ /usr/include/c++/4.9.2/bits/cpp_type_traits.h \
+ /usr/include/c++/4.9.2/ext/type_traits.h \
+ /usr/include/c++/4.9.2/ext/numeric_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_pair.h \
+ /usr/include/c++/4.9.2/bits/move.h \
+ /usr/include/c++/4.9.2/bits/concept_check.h \
+ /usr/include/c++/4.9.2/type_traits \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_types.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/4.9.2/debug/debug.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator.h \
+ /usr/include/c++/4.9.2/bits/ptr_traits.h \
+ /usr/include/c++/4.9.2/bits/predefined_ops.h \
+ /usr/include/c++/4.9.2/bits/localefwd.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/4.9.2/clocale /usr/include/locale.h \
+ /usr/include/bits/locale.h /usr/include/c++/4.9.2/cctype \
  /usr/include/ctype.h /usr/include/bits/types.h \
  /usr/include/bits/typesizes.h /usr/include/endian.h \
  /usr/include/bits/endian.h /usr/include/bits/byteswap.h \
- /usr/include/bits/byteswap-16.h /usr/include/c++/4.8.3/bits/ios_base.h \
- /usr/include/c++/4.8.3/ext/atomicity.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/bits/byteswap-16.h /usr/include/c++/4.9.2/bits/ios_base.h \
+ /usr/include/c++/4.9.2/ext/atomicity.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h \
  /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
  /usr/include/bits/sched.h /usr/include/bits/time.h \
  /usr/include/bits/timex.h /usr/include/bits/pthreadtypes.h \
  /usr/include/bits/setjmp.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/4.8.3/bits/locale_classes.h \
- /usr/include/c++/4.8.3/string /usr/include/c++/4.8.3/bits/allocator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/4.8.3/ext/new_allocator.h /usr/include/c++/4.8.3/new \
- /usr/include/c++/4.8.3/bits/ostream_insert.h \
- /usr/include/c++/4.8.3/bits/cxxabi_forced.h \
- /usr/include/c++/4.8.3/bits/stl_function.h \
- /usr/include/c++/4.8.3/backward/binders.h \
- /usr/include/c++/4.8.3/bits/range_access.h \
- /usr/include/c++/4.8.3/bits/basic_string.h \
- /usr/include/c++/4.8.3/initializer_list \
- /usr/include/c++/4.8.3/ext/string_conversions.h \
- /usr/include/c++/4.8.3/cstdlib /usr/include/stdlib.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/4.9.2/bits/locale_classes.h \
+ /usr/include/c++/4.9.2/string /usr/include/c++/4.9.2/bits/allocator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/4.9.2/ext/new_allocator.h /usr/include/c++/4.9.2/new \
+ /usr/include/c++/4.9.2/bits/ostream_insert.h \
+ /usr/include/c++/4.9.2/bits/cxxabi_forced.h \
+ /usr/include/c++/4.9.2/bits/stl_function.h \
+ /usr/include/c++/4.9.2/backward/binders.h \
+ /usr/include/c++/4.9.2/bits/range_access.h \
+ /usr/include/c++/4.9.2/bits/basic_string.h \
+ /usr/include/c++/4.9.2/initializer_list \
+ /usr/include/c++/4.9.2/ext/string_conversions.h \
+ /usr/include/c++/4.9.2/cstdlib /usr/include/stdlib.h \
  /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
  /usr/include/sys/types.h /usr/include/sys/select.h \
  /usr/include/bits/select.h /usr/include/bits/sigset.h \
  /usr/include/sys/sysmacros.h /usr/include/alloca.h \
- /usr/include/bits/stdlib-float.h /usr/include/c++/4.8.3/cstdio \
+ /usr/include/bits/stdlib-float.h /usr/include/c++/4.9.2/cstdio \
  /usr/include/libio.h /usr/include/_G_config.h \
  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
- /usr/include/c++/4.8.3/cerrno /usr/include/errno.h \
+ /usr/include/c++/4.9.2/cerrno /usr/include/errno.h \
  /usr/include/bits/errno.h /usr/include/linux/errno.h \
  /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
  /usr/include/asm-generic/errno-base.h \
- /usr/include/c++/4.8.3/bits/functional_hash.h \
- /usr/include/c++/4.8.3/bits/hash_bytes.h \
- /usr/include/c++/4.8.3/bits/basic_string.tcc \
- /usr/include/c++/4.8.3/bits/locale_classes.tcc \
- /usr/include/c++/4.8.3/streambuf \
- /usr/include/c++/4.8.3/bits/streambuf.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.h \
- /usr/include/c++/4.8.3/bits/locale_facets.h \
- /usr/include/c++/4.8.3/cwctype /usr/include/wctype.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/4.8.3/bits/streambuf_iterator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/4.8.3/bits/locale_facets.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.tcc \
- /usr/include/c++/4.8.3/bits/ostream.tcc /usr/include/c++/4.8.3/istream \
- /usr/include/c++/4.8.3/bits/istream.tcc /usr/include/c++/4.8.3/cstring \
+ /usr/include/c++/4.9.2/bits/functional_hash.h \
+ /usr/include/c++/4.9.2/bits/hash_bytes.h \
+ /usr/include/c++/4.9.2/bits/basic_string.tcc \
+ /usr/include/c++/4.9.2/bits/locale_classes.tcc \
+ /usr/include/c++/4.9.2/streambuf \
+ /usr/include/c++/4.9.2/bits/streambuf.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.h \
+ /usr/include/c++/4.9.2/cwctype /usr/include/wctype.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/4.9.2/bits/streambuf_iterator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.tcc \
+ /usr/include/c++/4.9.2/bits/ostream.tcc /usr/include/c++/4.9.2/istream \
+ /usr/include/c++/4.9.2/bits/istream.tcc /usr/include/c++/4.9.2/cstring \
  /usr/include/string.h
 
 /usr/include/stdc-predef.h:
@@ -103,17 +105,17 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 ../src/config/config.h:
 
-../../OpenFPM_data/src/memory.hpp:
+../../OpenFPM_devices/src/memory/memory.hpp:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h:
 
-/usr/include/c++/4.8.3/cstddef:
+/usr/include/c++/4.9.2/cstddef:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h:
 
 /usr/include/bits/wordsize.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h:
 
 /usr/include/features.h:
 
@@ -123,89 +125,93 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 /usr/include/gnu/stubs-64.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h:
 
-/usr/include/c++/4.8.3/cstdint:
+/usr/include/c++/4.9.2/cstdint:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h:
 
 /usr/include/stdint.h:
 
 /usr/include/bits/wchar.h:
 
-/usr/include/c++/4.8.3/iostream:
+/usr/include/c++/4.9.2/iostream:
 
-/usr/include/c++/4.8.3/ostream:
+/usr/include/c++/4.9.2/ostream:
 
-/usr/include/c++/4.8.3/ios:
+/usr/include/c++/4.9.2/ios:
 
-/usr/include/c++/4.8.3/iosfwd:
+/usr/include/c++/4.9.2/iosfwd:
 
-/usr/include/c++/4.8.3/bits/stringfwd.h:
+/usr/include/c++/4.9.2/bits/stringfwd.h:
 
-/usr/include/c++/4.8.3/bits/memoryfwd.h:
+/usr/include/c++/4.9.2/bits/memoryfwd.h:
 
-/usr/include/c++/4.8.3/bits/postypes.h:
+/usr/include/c++/4.9.2/bits/postypes.h:
 
-/usr/include/c++/4.8.3/cwchar:
+/usr/include/c++/4.9.2/cwchar:
 
 /usr/include/wchar.h:
 
 /usr/include/stdio.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h:
 
 /usr/include/xlocale.h:
 
-/usr/include/c++/4.8.3/exception:
+/usr/include/c++/4.9.2/exception:
 
-/usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h:
+/usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h:
 
-/usr/include/c++/4.8.3/bits/exception_ptr.h:
+/usr/include/c++/4.9.2/bits/exception_ptr.h:
 
-/usr/include/c++/4.8.3/bits/exception_defines.h:
+/usr/include/c++/4.9.2/bits/exception_defines.h:
 
-/usr/include/c++/4.8.3/bits/nested_exception.h:
+/usr/include/c++/4.9.2/bits/nested_exception.h:
 
-/usr/include/c++/4.8.3/bits/char_traits.h:
+/usr/include/c++/4.9.2/bits/char_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_algobase.h:
+/usr/include/c++/4.9.2/bits/stl_algobase.h:
 
-/usr/include/c++/4.8.3/bits/functexcept.h:
+/usr/include/c++/4.9.2/bits/functexcept.h:
 
-/usr/include/c++/4.8.3/bits/cpp_type_traits.h:
+/usr/include/c++/4.9.2/bits/cpp_type_traits.h:
 
-/usr/include/c++/4.8.3/ext/type_traits.h:
+/usr/include/c++/4.9.2/ext/type_traits.h:
 
-/usr/include/c++/4.8.3/ext/numeric_traits.h:
+/usr/include/c++/4.9.2/ext/numeric_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_pair.h:
+/usr/include/c++/4.9.2/bits/stl_pair.h:
 
-/usr/include/c++/4.8.3/bits/move.h:
+/usr/include/c++/4.9.2/bits/move.h:
 
-/usr/include/c++/4.8.3/bits/concept_check.h:
+/usr/include/c++/4.9.2/bits/concept_check.h:
 
-/usr/include/c++/4.8.3/type_traits:
+/usr/include/c++/4.9.2/type_traits:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_types.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_types.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h:
 
-/usr/include/c++/4.8.3/debug/debug.h:
+/usr/include/c++/4.9.2/debug/debug.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator.h:
+/usr/include/c++/4.9.2/bits/stl_iterator.h:
 
-/usr/include/c++/4.8.3/bits/localefwd.h:
+/usr/include/c++/4.9.2/bits/ptr_traits.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h:
+/usr/include/c++/4.9.2/bits/predefined_ops.h:
 
-/usr/include/c++/4.8.3/clocale:
+/usr/include/c++/4.9.2/bits/localefwd.h:
+
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h:
+
+/usr/include/c++/4.9.2/clocale:
 
 /usr/include/locale.h:
 
 /usr/include/bits/locale.h:
 
-/usr/include/c++/4.8.3/cctype:
+/usr/include/c++/4.9.2/cctype:
 
 /usr/include/ctype.h:
 
@@ -221,13 +227,13 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 /usr/include/bits/byteswap-16.h:
 
-/usr/include/c++/4.8.3/bits/ios_base.h:
+/usr/include/c++/4.9.2/bits/ios_base.h:
 
-/usr/include/c++/4.8.3/ext/atomicity.h:
+/usr/include/c++/4.9.2/ext/atomicity.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h:
 
 /usr/include/pthread.h:
 
@@ -245,37 +251,37 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 /usr/include/bits/setjmp.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h:
 
-/usr/include/c++/4.8.3/bits/locale_classes.h:
+/usr/include/c++/4.9.2/bits/locale_classes.h:
 
-/usr/include/c++/4.8.3/string:
+/usr/include/c++/4.9.2/string:
 
-/usr/include/c++/4.8.3/bits/allocator.h:
+/usr/include/c++/4.9.2/bits/allocator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h:
 
-/usr/include/c++/4.8.3/ext/new_allocator.h:
+/usr/include/c++/4.9.2/ext/new_allocator.h:
 
-/usr/include/c++/4.8.3/new:
+/usr/include/c++/4.9.2/new:
 
-/usr/include/c++/4.8.3/bits/ostream_insert.h:
+/usr/include/c++/4.9.2/bits/ostream_insert.h:
 
-/usr/include/c++/4.8.3/bits/cxxabi_forced.h:
+/usr/include/c++/4.9.2/bits/cxxabi_forced.h:
 
-/usr/include/c++/4.8.3/bits/stl_function.h:
+/usr/include/c++/4.9.2/bits/stl_function.h:
 
-/usr/include/c++/4.8.3/backward/binders.h:
+/usr/include/c++/4.9.2/backward/binders.h:
 
-/usr/include/c++/4.8.3/bits/range_access.h:
+/usr/include/c++/4.9.2/bits/range_access.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.h:
+/usr/include/c++/4.9.2/bits/basic_string.h:
 
-/usr/include/c++/4.8.3/initializer_list:
+/usr/include/c++/4.9.2/initializer_list:
 
-/usr/include/c++/4.8.3/ext/string_conversions.h:
+/usr/include/c++/4.9.2/ext/string_conversions.h:
 
-/usr/include/c++/4.8.3/cstdlib:
+/usr/include/c++/4.9.2/cstdlib:
 
 /usr/include/stdlib.h:
 
@@ -297,7 +303,7 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 /usr/include/bits/stdlib-float.h:
 
-/usr/include/c++/4.8.3/cstdio:
+/usr/include/c++/4.9.2/cstdio:
 
 /usr/include/libio.h:
 
@@ -307,7 +313,7 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 /usr/include/bits/sys_errlist.h:
 
-/usr/include/c++/4.8.3/cerrno:
+/usr/include/c++/4.9.2/cerrno:
 
 /usr/include/errno.h:
 
@@ -321,42 +327,42 @@ pdata-HeapMemory.o: ../../OpenFPM_devices/src/memory/HeapMemory.cpp \
 
 /usr/include/asm-generic/errno-base.h:
 
-/usr/include/c++/4.8.3/bits/functional_hash.h:
+/usr/include/c++/4.9.2/bits/functional_hash.h:
 
-/usr/include/c++/4.8.3/bits/hash_bytes.h:
+/usr/include/c++/4.9.2/bits/hash_bytes.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.tcc:
+/usr/include/c++/4.9.2/bits/basic_string.tcc:
 
-/usr/include/c++/4.8.3/bits/locale_classes.tcc:
+/usr/include/c++/4.9.2/bits/locale_classes.tcc:
 
-/usr/include/c++/4.8.3/streambuf:
+/usr/include/c++/4.9.2/streambuf:
 
-/usr/include/c++/4.8.3/bits/streambuf.tcc:
+/usr/include/c++/4.9.2/bits/streambuf.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.h:
+/usr/include/c++/4.9.2/bits/basic_ios.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.h:
+/usr/include/c++/4.9.2/bits/locale_facets.h:
 
-/usr/include/c++/4.8.3/cwctype:
+/usr/include/c++/4.9.2/cwctype:
 
 /usr/include/wctype.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h:
 
-/usr/include/c++/4.8.3/bits/streambuf_iterator.h:
+/usr/include/c++/4.9.2/bits/streambuf_iterator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.tcc:
+/usr/include/c++/4.9.2/bits/locale_facets.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.tcc:
+/usr/include/c++/4.9.2/bits/basic_ios.tcc:
 
-/usr/include/c++/4.8.3/bits/ostream.tcc:
+/usr/include/c++/4.9.2/bits/ostream.tcc:
 
-/usr/include/c++/4.8.3/istream:
+/usr/include/c++/4.9.2/istream:
 
-/usr/include/c++/4.8.3/bits/istream.tcc:
+/usr/include/c++/4.9.2/bits/istream.tcc:
 
-/usr/include/c++/4.8.3/cstring:
+/usr/include/c++/4.9.2/cstring:
 
 /usr/include/string.h:
diff --git a/src/.deps/pdata-Memleak_check.Po b/src/.deps/pdata-Memleak_check.Po
index 200f4d19..6e9955e5 100644
--- a/src/.deps/pdata-Memleak_check.Po
+++ b/src/.deps/pdata-Memleak_check.Po
@@ -1,105 +1,108 @@
 pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
  /usr/include/stdc-predef.h ../src/config/config.h \
- ../../OpenFPM_data/src/Memleak_check.hpp /usr/include/c++/4.8.3/iostream \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h \
+ ../../OpenFPM_data/src/Memleak_check.hpp /usr/include/c++/4.9.2/iostream \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h \
  /usr/include/bits/wordsize.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h \
  /usr/include/features.h /usr/include/sys/cdefs.h \
  /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/4.8.3/ostream /usr/include/c++/4.8.3/ios \
- /usr/include/c++/4.8.3/iosfwd /usr/include/c++/4.8.3/bits/stringfwd.h \
- /usr/include/c++/4.8.3/bits/memoryfwd.h \
- /usr/include/c++/4.8.3/bits/postypes.h /usr/include/c++/4.8.3/cwchar \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/4.9.2/ostream /usr/include/c++/4.9.2/ios \
+ /usr/include/c++/4.9.2/iosfwd /usr/include/c++/4.9.2/bits/stringfwd.h \
+ /usr/include/c++/4.9.2/bits/memoryfwd.h \
+ /usr/include/c++/4.9.2/bits/postypes.h /usr/include/c++/4.9.2/cwchar \
  /usr/include/wchar.h /usr/include/stdio.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h \
  /usr/include/bits/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
- /usr/include/xlocale.h /usr/include/c++/4.8.3/exception \
- /usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h \
- /usr/include/c++/4.8.3/bits/exception_ptr.h \
- /usr/include/c++/4.8.3/bits/exception_defines.h \
- /usr/include/c++/4.8.3/bits/nested_exception.h \
- /usr/include/c++/4.8.3/bits/char_traits.h \
- /usr/include/c++/4.8.3/bits/stl_algobase.h \
- /usr/include/c++/4.8.3/bits/functexcept.h \
- /usr/include/c++/4.8.3/bits/cpp_type_traits.h \
- /usr/include/c++/4.8.3/ext/type_traits.h \
- /usr/include/c++/4.8.3/ext/numeric_traits.h \
- /usr/include/c++/4.8.3/bits/stl_pair.h \
- /usr/include/c++/4.8.3/bits/move.h \
- /usr/include/c++/4.8.3/bits/concept_check.h \
- /usr/include/c++/4.8.3/type_traits \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_types.h \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/4.8.3/debug/debug.h \
- /usr/include/c++/4.8.3/bits/stl_iterator.h \
- /usr/include/c++/4.8.3/cstdint \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h \
- /usr/include/stdint.h /usr/include/c++/4.8.3/bits/localefwd.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/4.8.3/clocale /usr/include/locale.h \
- /usr/include/bits/locale.h /usr/include/c++/4.8.3/cctype \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h \
+ /usr/include/xlocale.h /usr/include/c++/4.9.2/exception \
+ /usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/4.9.2/bits/exception_ptr.h \
+ /usr/include/c++/4.9.2/bits/exception_defines.h \
+ /usr/include/c++/4.9.2/bits/nested_exception.h \
+ /usr/include/c++/4.9.2/bits/char_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_algobase.h \
+ /usr/include/c++/4.9.2/bits/functexcept.h \
+ /usr/include/c++/4.9.2/bits/cpp_type_traits.h \
+ /usr/include/c++/4.9.2/ext/type_traits.h \
+ /usr/include/c++/4.9.2/ext/numeric_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_pair.h \
+ /usr/include/c++/4.9.2/bits/move.h \
+ /usr/include/c++/4.9.2/bits/concept_check.h \
+ /usr/include/c++/4.9.2/type_traits \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_types.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/4.9.2/debug/debug.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator.h \
+ /usr/include/c++/4.9.2/bits/ptr_traits.h \
+ /usr/include/c++/4.9.2/bits/predefined_ops.h \
+ /usr/include/c++/4.9.2/cstdint \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h \
+ /usr/include/stdint.h /usr/include/c++/4.9.2/bits/localefwd.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/4.9.2/clocale /usr/include/locale.h \
+ /usr/include/bits/locale.h /usr/include/c++/4.9.2/cctype \
  /usr/include/ctype.h /usr/include/bits/types.h \
  /usr/include/bits/typesizes.h /usr/include/endian.h \
  /usr/include/bits/endian.h /usr/include/bits/byteswap.h \
- /usr/include/bits/byteswap-16.h /usr/include/c++/4.8.3/bits/ios_base.h \
- /usr/include/c++/4.8.3/ext/atomicity.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/bits/byteswap-16.h /usr/include/c++/4.9.2/bits/ios_base.h \
+ /usr/include/c++/4.9.2/ext/atomicity.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h \
  /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
  /usr/include/bits/sched.h /usr/include/bits/time.h \
  /usr/include/bits/timex.h /usr/include/bits/pthreadtypes.h \
  /usr/include/bits/setjmp.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/4.8.3/bits/locale_classes.h \
- /usr/include/c++/4.8.3/string /usr/include/c++/4.8.3/bits/allocator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/4.8.3/ext/new_allocator.h /usr/include/c++/4.8.3/new \
- /usr/include/c++/4.8.3/bits/ostream_insert.h \
- /usr/include/c++/4.8.3/bits/cxxabi_forced.h \
- /usr/include/c++/4.8.3/bits/stl_function.h \
- /usr/include/c++/4.8.3/backward/binders.h \
- /usr/include/c++/4.8.3/bits/range_access.h \
- /usr/include/c++/4.8.3/bits/basic_string.h \
- /usr/include/c++/4.8.3/initializer_list \
- /usr/include/c++/4.8.3/ext/string_conversions.h \
- /usr/include/c++/4.8.3/cstdlib /usr/include/stdlib.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/4.9.2/bits/locale_classes.h \
+ /usr/include/c++/4.9.2/string /usr/include/c++/4.9.2/bits/allocator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/4.9.2/ext/new_allocator.h /usr/include/c++/4.9.2/new \
+ /usr/include/c++/4.9.2/bits/ostream_insert.h \
+ /usr/include/c++/4.9.2/bits/cxxabi_forced.h \
+ /usr/include/c++/4.9.2/bits/stl_function.h \
+ /usr/include/c++/4.9.2/backward/binders.h \
+ /usr/include/c++/4.9.2/bits/range_access.h \
+ /usr/include/c++/4.9.2/bits/basic_string.h \
+ /usr/include/c++/4.9.2/initializer_list \
+ /usr/include/c++/4.9.2/ext/string_conversions.h \
+ /usr/include/c++/4.9.2/cstdlib /usr/include/stdlib.h \
  /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
  /usr/include/sys/types.h /usr/include/sys/select.h \
  /usr/include/bits/select.h /usr/include/bits/sigset.h \
  /usr/include/sys/sysmacros.h /usr/include/alloca.h \
- /usr/include/bits/stdlib-float.h /usr/include/c++/4.8.3/cstdio \
+ /usr/include/bits/stdlib-float.h /usr/include/c++/4.9.2/cstdio \
  /usr/include/libio.h /usr/include/_G_config.h \
  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
- /usr/include/c++/4.8.3/cerrno /usr/include/errno.h \
+ /usr/include/c++/4.9.2/cerrno /usr/include/errno.h \
  /usr/include/bits/errno.h /usr/include/linux/errno.h \
  /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
  /usr/include/asm-generic/errno-base.h \
- /usr/include/c++/4.8.3/bits/functional_hash.h \
- /usr/include/c++/4.8.3/bits/hash_bytes.h \
- /usr/include/c++/4.8.3/bits/basic_string.tcc \
- /usr/include/c++/4.8.3/bits/locale_classes.tcc \
- /usr/include/c++/4.8.3/streambuf \
- /usr/include/c++/4.8.3/bits/streambuf.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.h \
- /usr/include/c++/4.8.3/bits/locale_facets.h \
- /usr/include/c++/4.8.3/cwctype /usr/include/wctype.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/4.8.3/bits/streambuf_iterator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/4.8.3/bits/locale_facets.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.tcc \
- /usr/include/c++/4.8.3/bits/ostream.tcc /usr/include/c++/4.8.3/istream \
- /usr/include/c++/4.8.3/bits/istream.tcc /usr/include/c++/4.8.3/map \
- /usr/include/c++/4.8.3/bits/stl_tree.h \
- /usr/include/c++/4.8.3/bits/alloc_traits.h \
- /usr/include/c++/4.8.3/bits/ptr_traits.h \
- /usr/include/c++/4.8.3/bits/stl_map.h /usr/include/c++/4.8.3/tuple \
- /usr/include/c++/4.8.3/utility /usr/include/c++/4.8.3/bits/stl_relops.h \
- /usr/include/c++/4.8.3/array /usr/include/c++/4.8.3/stdexcept \
- /usr/include/c++/4.8.3/bits/uses_allocator.h \
- /usr/include/c++/4.8.3/bits/stl_multimap.h
+ /usr/include/c++/4.9.2/bits/functional_hash.h \
+ /usr/include/c++/4.9.2/bits/hash_bytes.h \
+ /usr/include/c++/4.9.2/bits/basic_string.tcc \
+ /usr/include/c++/4.9.2/bits/locale_classes.tcc \
+ /usr/include/c++/4.9.2/streambuf \
+ /usr/include/c++/4.9.2/bits/streambuf.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.h \
+ /usr/include/c++/4.9.2/cwctype /usr/include/wctype.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/4.9.2/bits/streambuf_iterator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.tcc \
+ /usr/include/c++/4.9.2/bits/ostream.tcc /usr/include/c++/4.9.2/istream \
+ /usr/include/c++/4.9.2/bits/istream.tcc /usr/include/c++/4.9.2/map \
+ /usr/include/c++/4.9.2/bits/stl_tree.h \
+ /usr/include/c++/4.9.2/ext/alloc_traits.h \
+ /usr/include/c++/4.9.2/bits/alloc_traits.h \
+ /usr/include/c++/4.9.2/ext/aligned_buffer.h \
+ /usr/include/c++/4.9.2/bits/stl_map.h /usr/include/c++/4.9.2/tuple \
+ /usr/include/c++/4.9.2/utility /usr/include/c++/4.9.2/bits/stl_relops.h \
+ /usr/include/c++/4.9.2/array /usr/include/c++/4.9.2/stdexcept \
+ /usr/include/c++/4.9.2/bits/uses_allocator.h \
+ /usr/include/c++/4.9.2/bits/stl_multimap.h
 
 /usr/include/stdc-predef.h:
 
@@ -107,13 +110,13 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 ../../OpenFPM_data/src/Memleak_check.hpp:
 
-/usr/include/c++/4.8.3/iostream:
+/usr/include/c++/4.9.2/iostream:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h:
 
 /usr/include/bits/wordsize.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h:
 
 /usr/include/features.h:
 
@@ -123,89 +126,93 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 /usr/include/gnu/stubs-64.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h:
 
-/usr/include/c++/4.8.3/ostream:
+/usr/include/c++/4.9.2/ostream:
 
-/usr/include/c++/4.8.3/ios:
+/usr/include/c++/4.9.2/ios:
 
-/usr/include/c++/4.8.3/iosfwd:
+/usr/include/c++/4.9.2/iosfwd:
 
-/usr/include/c++/4.8.3/bits/stringfwd.h:
+/usr/include/c++/4.9.2/bits/stringfwd.h:
 
-/usr/include/c++/4.8.3/bits/memoryfwd.h:
+/usr/include/c++/4.9.2/bits/memoryfwd.h:
 
-/usr/include/c++/4.8.3/bits/postypes.h:
+/usr/include/c++/4.9.2/bits/postypes.h:
 
-/usr/include/c++/4.8.3/cwchar:
+/usr/include/c++/4.9.2/cwchar:
 
 /usr/include/wchar.h:
 
 /usr/include/stdio.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h:
 
 /usr/include/bits/wchar.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h:
 
 /usr/include/xlocale.h:
 
-/usr/include/c++/4.8.3/exception:
+/usr/include/c++/4.9.2/exception:
 
-/usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h:
+/usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h:
 
-/usr/include/c++/4.8.3/bits/exception_ptr.h:
+/usr/include/c++/4.9.2/bits/exception_ptr.h:
 
-/usr/include/c++/4.8.3/bits/exception_defines.h:
+/usr/include/c++/4.9.2/bits/exception_defines.h:
 
-/usr/include/c++/4.8.3/bits/nested_exception.h:
+/usr/include/c++/4.9.2/bits/nested_exception.h:
 
-/usr/include/c++/4.8.3/bits/char_traits.h:
+/usr/include/c++/4.9.2/bits/char_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_algobase.h:
+/usr/include/c++/4.9.2/bits/stl_algobase.h:
 
-/usr/include/c++/4.8.3/bits/functexcept.h:
+/usr/include/c++/4.9.2/bits/functexcept.h:
 
-/usr/include/c++/4.8.3/bits/cpp_type_traits.h:
+/usr/include/c++/4.9.2/bits/cpp_type_traits.h:
 
-/usr/include/c++/4.8.3/ext/type_traits.h:
+/usr/include/c++/4.9.2/ext/type_traits.h:
 
-/usr/include/c++/4.8.3/ext/numeric_traits.h:
+/usr/include/c++/4.9.2/ext/numeric_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_pair.h:
+/usr/include/c++/4.9.2/bits/stl_pair.h:
 
-/usr/include/c++/4.8.3/bits/move.h:
+/usr/include/c++/4.9.2/bits/move.h:
 
-/usr/include/c++/4.8.3/bits/concept_check.h:
+/usr/include/c++/4.9.2/bits/concept_check.h:
 
-/usr/include/c++/4.8.3/type_traits:
+/usr/include/c++/4.9.2/type_traits:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_types.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_types.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h:
 
-/usr/include/c++/4.8.3/debug/debug.h:
+/usr/include/c++/4.9.2/debug/debug.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator.h:
+/usr/include/c++/4.9.2/bits/stl_iterator.h:
 
-/usr/include/c++/4.8.3/cstdint:
+/usr/include/c++/4.9.2/bits/ptr_traits.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h:
+/usr/include/c++/4.9.2/bits/predefined_ops.h:
+
+/usr/include/c++/4.9.2/cstdint:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h:
 
 /usr/include/stdint.h:
 
-/usr/include/c++/4.8.3/bits/localefwd.h:
+/usr/include/c++/4.9.2/bits/localefwd.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h:
 
-/usr/include/c++/4.8.3/clocale:
+/usr/include/c++/4.9.2/clocale:
 
 /usr/include/locale.h:
 
 /usr/include/bits/locale.h:
 
-/usr/include/c++/4.8.3/cctype:
+/usr/include/c++/4.9.2/cctype:
 
 /usr/include/ctype.h:
 
@@ -221,13 +228,13 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 /usr/include/bits/byteswap-16.h:
 
-/usr/include/c++/4.8.3/bits/ios_base.h:
+/usr/include/c++/4.9.2/bits/ios_base.h:
 
-/usr/include/c++/4.8.3/ext/atomicity.h:
+/usr/include/c++/4.9.2/ext/atomicity.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h:
 
 /usr/include/pthread.h:
 
@@ -245,37 +252,37 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 /usr/include/bits/setjmp.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h:
 
-/usr/include/c++/4.8.3/bits/locale_classes.h:
+/usr/include/c++/4.9.2/bits/locale_classes.h:
 
-/usr/include/c++/4.8.3/string:
+/usr/include/c++/4.9.2/string:
 
-/usr/include/c++/4.8.3/bits/allocator.h:
+/usr/include/c++/4.9.2/bits/allocator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h:
 
-/usr/include/c++/4.8.3/ext/new_allocator.h:
+/usr/include/c++/4.9.2/ext/new_allocator.h:
 
-/usr/include/c++/4.8.3/new:
+/usr/include/c++/4.9.2/new:
 
-/usr/include/c++/4.8.3/bits/ostream_insert.h:
+/usr/include/c++/4.9.2/bits/ostream_insert.h:
 
-/usr/include/c++/4.8.3/bits/cxxabi_forced.h:
+/usr/include/c++/4.9.2/bits/cxxabi_forced.h:
 
-/usr/include/c++/4.8.3/bits/stl_function.h:
+/usr/include/c++/4.9.2/bits/stl_function.h:
 
-/usr/include/c++/4.8.3/backward/binders.h:
+/usr/include/c++/4.9.2/backward/binders.h:
 
-/usr/include/c++/4.8.3/bits/range_access.h:
+/usr/include/c++/4.9.2/bits/range_access.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.h:
+/usr/include/c++/4.9.2/bits/basic_string.h:
 
-/usr/include/c++/4.8.3/initializer_list:
+/usr/include/c++/4.9.2/initializer_list:
 
-/usr/include/c++/4.8.3/ext/string_conversions.h:
+/usr/include/c++/4.9.2/ext/string_conversions.h:
 
-/usr/include/c++/4.8.3/cstdlib:
+/usr/include/c++/4.9.2/cstdlib:
 
 /usr/include/stdlib.h:
 
@@ -297,7 +304,7 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 /usr/include/bits/stdlib-float.h:
 
-/usr/include/c++/4.8.3/cstdio:
+/usr/include/c++/4.9.2/cstdio:
 
 /usr/include/libio.h:
 
@@ -307,7 +314,7 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 /usr/include/bits/sys_errlist.h:
 
-/usr/include/c++/4.8.3/cerrno:
+/usr/include/c++/4.9.2/cerrno:
 
 /usr/include/errno.h:
 
@@ -321,62 +328,64 @@ pdata-Memleak_check.o: ../../OpenFPM_data/src/Memleak_check.cpp \
 
 /usr/include/asm-generic/errno-base.h:
 
-/usr/include/c++/4.8.3/bits/functional_hash.h:
+/usr/include/c++/4.9.2/bits/functional_hash.h:
 
-/usr/include/c++/4.8.3/bits/hash_bytes.h:
+/usr/include/c++/4.9.2/bits/hash_bytes.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.tcc:
+/usr/include/c++/4.9.2/bits/basic_string.tcc:
 
-/usr/include/c++/4.8.3/bits/locale_classes.tcc:
+/usr/include/c++/4.9.2/bits/locale_classes.tcc:
 
-/usr/include/c++/4.8.3/streambuf:
+/usr/include/c++/4.9.2/streambuf:
 
-/usr/include/c++/4.8.3/bits/streambuf.tcc:
+/usr/include/c++/4.9.2/bits/streambuf.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.h:
+/usr/include/c++/4.9.2/bits/basic_ios.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.h:
+/usr/include/c++/4.9.2/bits/locale_facets.h:
 
-/usr/include/c++/4.8.3/cwctype:
+/usr/include/c++/4.9.2/cwctype:
 
 /usr/include/wctype.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h:
+
+/usr/include/c++/4.9.2/bits/streambuf_iterator.h:
 
-/usr/include/c++/4.8.3/bits/streambuf_iterator.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h:
+/usr/include/c++/4.9.2/bits/locale_facets.tcc:
 
-/usr/include/c++/4.8.3/bits/locale_facets.tcc:
+/usr/include/c++/4.9.2/bits/basic_ios.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.tcc:
+/usr/include/c++/4.9.2/bits/ostream.tcc:
 
-/usr/include/c++/4.8.3/bits/ostream.tcc:
+/usr/include/c++/4.9.2/istream:
 
-/usr/include/c++/4.8.3/istream:
+/usr/include/c++/4.9.2/bits/istream.tcc:
 
-/usr/include/c++/4.8.3/bits/istream.tcc:
+/usr/include/c++/4.9.2/map:
 
-/usr/include/c++/4.8.3/map:
+/usr/include/c++/4.9.2/bits/stl_tree.h:
 
-/usr/include/c++/4.8.3/bits/stl_tree.h:
+/usr/include/c++/4.9.2/ext/alloc_traits.h:
 
-/usr/include/c++/4.8.3/bits/alloc_traits.h:
+/usr/include/c++/4.9.2/bits/alloc_traits.h:
 
-/usr/include/c++/4.8.3/bits/ptr_traits.h:
+/usr/include/c++/4.9.2/ext/aligned_buffer.h:
 
-/usr/include/c++/4.8.3/bits/stl_map.h:
+/usr/include/c++/4.9.2/bits/stl_map.h:
 
-/usr/include/c++/4.8.3/tuple:
+/usr/include/c++/4.9.2/tuple:
 
-/usr/include/c++/4.8.3/utility:
+/usr/include/c++/4.9.2/utility:
 
-/usr/include/c++/4.8.3/bits/stl_relops.h:
+/usr/include/c++/4.9.2/bits/stl_relops.h:
 
-/usr/include/c++/4.8.3/array:
+/usr/include/c++/4.9.2/array:
 
-/usr/include/c++/4.8.3/stdexcept:
+/usr/include/c++/4.9.2/stdexcept:
 
-/usr/include/c++/4.8.3/bits/uses_allocator.h:
+/usr/include/c++/4.9.2/bits/uses_allocator.h:
 
-/usr/include/c++/4.8.3/bits/stl_multimap.h:
+/usr/include/c++/4.9.2/bits/stl_multimap.h:
diff --git a/src/.deps/pdata-VCluster.Po b/src/.deps/pdata-VCluster.Po
index 7d351b74..b28ee707 100644
--- a/src/.deps/pdata-VCluster.Po
+++ b/src/.deps/pdata-VCluster.Po
@@ -1,108 +1,111 @@
 pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/stdc-predef.h ../../OpenFPM_vcluster/src/VCluster.hpp \
- /home/i-bird/MPI/include/mpi.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
+ ../src/config/config.h /home/i-bird/MPI/include/mpi.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h \
  /home/i-bird/MPI/include/mpi_portable_platform.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/mpicxx.h \
- /usr/include/c++/4.8.3/map /usr/include/c++/4.8.3/bits/stl_tree.h \
- /usr/include/c++/4.8.3/bits/stl_algobase.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/4.9.2/map /usr/include/c++/4.9.2/bits/stl_tree.h \
+ /usr/include/c++/4.9.2/bits/stl_algobase.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h \
  /usr/include/bits/wordsize.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h \
  /usr/include/features.h /usr/include/sys/cdefs.h \
  /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/4.8.3/bits/functexcept.h \
- /usr/include/c++/4.8.3/bits/exception_defines.h \
- /usr/include/c++/4.8.3/bits/cpp_type_traits.h \
- /usr/include/c++/4.8.3/ext/type_traits.h \
- /usr/include/c++/4.8.3/ext/numeric_traits.h \
- /usr/include/c++/4.8.3/bits/stl_pair.h \
- /usr/include/c++/4.8.3/bits/move.h \
- /usr/include/c++/4.8.3/bits/concept_check.h \
- /usr/include/c++/4.8.3/type_traits \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_types.h \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/4.8.3/debug/debug.h \
- /usr/include/c++/4.8.3/bits/stl_iterator.h \
- /usr/include/c++/4.8.3/bits/allocator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/4.8.3/ext/new_allocator.h /usr/include/c++/4.8.3/new \
- /usr/include/c++/4.8.3/exception \
- /usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h \
- /usr/include/c++/4.8.3/bits/exception_ptr.h \
- /usr/include/c++/4.8.3/bits/nested_exception.h \
- /usr/include/c++/4.8.3/bits/memoryfwd.h \
- /usr/include/c++/4.8.3/bits/stl_function.h \
- /usr/include/c++/4.8.3/backward/binders.h \
- /usr/include/c++/4.8.3/bits/alloc_traits.h \
- /usr/include/c++/4.8.3/bits/ptr_traits.h \
- /usr/include/c++/4.8.3/bits/stl_map.h \
- /usr/include/c++/4.8.3/initializer_list /usr/include/c++/4.8.3/tuple \
- /usr/include/c++/4.8.3/utility /usr/include/c++/4.8.3/bits/stl_relops.h \
- /usr/include/c++/4.8.3/array /usr/include/c++/4.8.3/stdexcept \
- /usr/include/c++/4.8.3/string /usr/include/c++/4.8.3/bits/stringfwd.h \
- /usr/include/c++/4.8.3/bits/char_traits.h \
- /usr/include/c++/4.8.3/bits/postypes.h /usr/include/c++/4.8.3/cwchar \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/4.9.2/bits/functexcept.h \
+ /usr/include/c++/4.9.2/bits/exception_defines.h \
+ /usr/include/c++/4.9.2/bits/cpp_type_traits.h \
+ /usr/include/c++/4.9.2/ext/type_traits.h \
+ /usr/include/c++/4.9.2/ext/numeric_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_pair.h \
+ /usr/include/c++/4.9.2/bits/move.h \
+ /usr/include/c++/4.9.2/bits/concept_check.h \
+ /usr/include/c++/4.9.2/type_traits \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_types.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/4.9.2/debug/debug.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator.h \
+ /usr/include/c++/4.9.2/bits/ptr_traits.h \
+ /usr/include/c++/4.9.2/bits/predefined_ops.h \
+ /usr/include/c++/4.9.2/bits/allocator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/4.9.2/ext/new_allocator.h /usr/include/c++/4.9.2/new \
+ /usr/include/c++/4.9.2/exception \
+ /usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/4.9.2/bits/exception_ptr.h \
+ /usr/include/c++/4.9.2/bits/nested_exception.h \
+ /usr/include/c++/4.9.2/bits/memoryfwd.h \
+ /usr/include/c++/4.9.2/bits/stl_function.h \
+ /usr/include/c++/4.9.2/backward/binders.h \
+ /usr/include/c++/4.9.2/ext/alloc_traits.h \
+ /usr/include/c++/4.9.2/bits/alloc_traits.h \
+ /usr/include/c++/4.9.2/ext/aligned_buffer.h \
+ /usr/include/c++/4.9.2/bits/stl_map.h \
+ /usr/include/c++/4.9.2/initializer_list /usr/include/c++/4.9.2/tuple \
+ /usr/include/c++/4.9.2/utility /usr/include/c++/4.9.2/bits/stl_relops.h \
+ /usr/include/c++/4.9.2/array /usr/include/c++/4.9.2/stdexcept \
+ /usr/include/c++/4.9.2/string /usr/include/c++/4.9.2/bits/stringfwd.h \
+ /usr/include/c++/4.9.2/bits/char_traits.h \
+ /usr/include/c++/4.9.2/bits/postypes.h /usr/include/c++/4.9.2/cwchar \
  /usr/include/wchar.h /usr/include/stdio.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h \
  /usr/include/bits/wchar.h /usr/include/xlocale.h \
- /usr/include/c++/4.8.3/cstdint \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h \
- /usr/include/stdint.h /usr/include/c++/4.8.3/bits/localefwd.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/4.8.3/clocale /usr/include/locale.h \
- /usr/include/bits/locale.h /usr/include/c++/4.8.3/iosfwd \
- /usr/include/c++/4.8.3/cctype /usr/include/ctype.h \
+ /usr/include/c++/4.9.2/cstdint \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h \
+ /usr/include/stdint.h /usr/include/c++/4.9.2/bits/localefwd.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/4.9.2/clocale /usr/include/locale.h \
+ /usr/include/bits/locale.h /usr/include/c++/4.9.2/iosfwd \
+ /usr/include/c++/4.9.2/cctype /usr/include/ctype.h \
  /usr/include/bits/types.h /usr/include/bits/typesizes.h \
  /usr/include/endian.h /usr/include/bits/endian.h \
  /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \
- /usr/include/c++/4.8.3/bits/ostream_insert.h \
- /usr/include/c++/4.8.3/bits/cxxabi_forced.h \
- /usr/include/c++/4.8.3/bits/range_access.h \
- /usr/include/c++/4.8.3/bits/basic_string.h \
- /usr/include/c++/4.8.3/ext/atomicity.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/4.9.2/bits/ostream_insert.h \
+ /usr/include/c++/4.9.2/bits/cxxabi_forced.h \
+ /usr/include/c++/4.9.2/bits/range_access.h \
+ /usr/include/c++/4.9.2/bits/basic_string.h \
+ /usr/include/c++/4.9.2/ext/atomicity.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h \
  /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
  /usr/include/bits/sched.h /usr/include/bits/time.h \
  /usr/include/bits/timex.h /usr/include/bits/pthreadtypes.h \
  /usr/include/bits/setjmp.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/4.8.3/ext/string_conversions.h \
- /usr/include/c++/4.8.3/cstdlib /usr/include/stdlib.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/4.9.2/ext/string_conversions.h \
+ /usr/include/c++/4.9.2/cstdlib /usr/include/stdlib.h \
  /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
  /usr/include/sys/types.h /usr/include/sys/select.h \
  /usr/include/bits/select.h /usr/include/bits/sigset.h \
  /usr/include/sys/sysmacros.h /usr/include/alloca.h \
- /usr/include/bits/stdlib-float.h /usr/include/c++/4.8.3/cstdio \
+ /usr/include/bits/stdlib-float.h /usr/include/c++/4.9.2/cstdio \
  /usr/include/libio.h /usr/include/_G_config.h \
  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
- /usr/include/c++/4.8.3/cerrno /usr/include/errno.h \
+ /usr/include/c++/4.9.2/cerrno /usr/include/errno.h \
  /usr/include/bits/errno.h /usr/include/linux/errno.h \
  /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
  /usr/include/asm-generic/errno-base.h \
- /usr/include/c++/4.8.3/bits/functional_hash.h \
- /usr/include/c++/4.8.3/bits/hash_bytes.h \
- /usr/include/c++/4.8.3/bits/basic_string.tcc \
- /usr/include/c++/4.8.3/bits/uses_allocator.h \
- /usr/include/c++/4.8.3/bits/stl_multimap.h \
- /usr/include/c++/4.8.3/iostream /usr/include/c++/4.8.3/ostream \
- /usr/include/c++/4.8.3/ios /usr/include/c++/4.8.3/bits/ios_base.h \
- /usr/include/c++/4.8.3/bits/locale_classes.h \
- /usr/include/c++/4.8.3/bits/locale_classes.tcc \
- /usr/include/c++/4.8.3/streambuf \
- /usr/include/c++/4.8.3/bits/streambuf.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.h \
- /usr/include/c++/4.8.3/bits/locale_facets.h \
- /usr/include/c++/4.8.3/cwctype /usr/include/wctype.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/4.8.3/bits/streambuf_iterator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/4.8.3/bits/locale_facets.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.tcc \
- /usr/include/c++/4.8.3/bits/ostream.tcc /usr/include/c++/4.8.3/istream \
- /usr/include/c++/4.8.3/bits/istream.tcc \
+ /usr/include/c++/4.9.2/bits/functional_hash.h \
+ /usr/include/c++/4.9.2/bits/hash_bytes.h \
+ /usr/include/c++/4.9.2/bits/basic_string.tcc \
+ /usr/include/c++/4.9.2/bits/uses_allocator.h \
+ /usr/include/c++/4.9.2/bits/stl_multimap.h \
+ /usr/include/c++/4.9.2/iostream /usr/include/c++/4.9.2/ostream \
+ /usr/include/c++/4.9.2/ios /usr/include/c++/4.9.2/bits/ios_base.h \
+ /usr/include/c++/4.9.2/bits/locale_classes.h \
+ /usr/include/c++/4.9.2/bits/locale_classes.tcc \
+ /usr/include/c++/4.9.2/streambuf \
+ /usr/include/c++/4.9.2/bits/streambuf.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.h \
+ /usr/include/c++/4.9.2/cwctype /usr/include/wctype.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/4.9.2/bits/streambuf_iterator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.tcc \
+ /usr/include/c++/4.9.2/bits/ostream.tcc /usr/include/c++/4.9.2/istream \
+ /usr/include/c++/4.9.2/bits/istream.tcc \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/constants.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/functions.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/datatype.h \
@@ -134,18 +137,18 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/info_inln.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/win_inln.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/file_inln.h \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_util.hpp \
  ../../OpenFPM_vcluster/src/VCluster_object.hpp \
  ../../OpenFPM_vcluster/src/VCluster_object_array.hpp \
- /usr/include/c++/4.8.3/vector \
- /usr/include/c++/4.8.3/bits/stl_construct.h \
- /usr/include/c++/4.8.3/ext/alloc_traits.h \
- /usr/include/c++/4.8.3/bits/stl_uninitialized.h \
- /usr/include/c++/4.8.3/bits/stl_vector.h \
- /usr/include/c++/4.8.3/bits/stl_bvector.h \
- /usr/include/c++/4.8.3/bits/vector.tcc \
+ /usr/include/c++/4.9.2/vector \
+ /usr/include/c++/4.9.2/bits/stl_construct.h \
+ /usr/include/c++/4.9.2/bits/stl_uninitialized.h \
+ /usr/include/c++/4.9.2/bits/stl_vector.h \
+ /usr/include/c++/4.9.2/bits/stl_bvector.h \
+ /usr/include/c++/4.9.2/bits/vector.tcc \
  ../../OpenFPM_vcluster/src/VObject.hpp \
  ../../OpenFPM_data/src/Vector/map_vector.hpp \
- ../../OpenFPM_data/src/Grid/map_grid.hpp ../src/config/config.h \
+ ../../OpenFPM_data/src/Grid/map_grid.hpp \
  /usr/include/boost/fusion/include/mpl.hpp \
  /usr/include/boost/fusion/adapted/mpl.hpp \
  /usr/include/boost/fusion/adapted/mpl/detail/begin_impl.hpp \
@@ -162,7 +165,7 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/boost/config/select_compiler_config.hpp \
  /usr/include/boost/config/compiler/gcc.hpp \
  /usr/include/boost/config/select_stdlib_config.hpp \
- /usr/include/c++/4.8.3/cstddef \
+ /usr/include/c++/4.9.2/cstddef \
  /usr/include/boost/config/no_tr1/utility.hpp \
  /usr/include/boost/config/stdlib/libstdcpp3.hpp /usr/include/unistd.h \
  /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
@@ -615,9 +618,7 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp \
  /usr/include/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp \
  /usr/include/boost/fusion/container/map/map_fwd.hpp \
- /usr/include/boost/fusion/container/map/limits.hpp \
- /usr/include/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp \
- /usr/include/boost/fusion/container/map/detail/preprocessed/map10_fwd.hpp \
+ /usr/include/boost/fusion/container/map/detail/map_impl.hpp \
  /usr/include/boost/fusion/container/set/set_fwd.hpp \
  /usr/include/boost/fusion/container/set/limits.hpp \
  /usr/include/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp \
@@ -783,13 +784,15 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/boost/type_traits/has_trivial_move_constructor.hpp \
  /usr/include/boost/type_traits/has_virtual_destructor.hpp \
  /usr/include/boost/type_traits/is_complex.hpp \
- /usr/include/c++/4.8.3/complex /usr/include/c++/4.8.3/cmath \
+ /usr/include/c++/4.9.2/complex /usr/include/c++/4.9.2/cmath \
  /usr/include/math.h /usr/include/bits/huge_val.h \
  /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
  /usr/include/bits/inf.h /usr/include/bits/nan.h \
  /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
- /usr/include/c++/4.8.3/sstream /usr/include/c++/4.8.3/bits/sstream.tcc \
+ /usr/include/c++/4.9.2/sstream /usr/include/c++/4.9.2/bits/sstream.tcc \
  /usr/include/boost/type_traits/is_compound.hpp \
+ /usr/include/boost/type_traits/is_copy_constructible.hpp \
+ /usr/include/boost/noncopyable.hpp \
  /usr/include/boost/type_traits/is_floating_point.hpp \
  /usr/include/boost/type_traits/is_member_object_pointer.hpp \
  /usr/include/boost/type_traits/is_nothrow_move_assignable.hpp \
@@ -820,51 +823,73 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/boost/mpl/aux_/unwrap.hpp \
  /usr/include/boost/utility/value_init.hpp \
  /usr/include/boost/type_traits/cv_traits.hpp /usr/include/boost/swap.hpp \
- /usr/include/boost/utility/swap.hpp /usr/include/c++/4.8.3/algorithm \
- /usr/include/c++/4.8.3/bits/stl_algo.h \
- /usr/include/c++/4.8.3/bits/algorithmfwd.h \
- /usr/include/c++/4.8.3/bits/stl_heap.h \
- /usr/include/c++/4.8.3/bits/stl_tempbuf.h /usr/include/c++/4.8.3/random \
- /usr/include/c++/4.8.3/limits /usr/include/c++/4.8.3/bits/random.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/opt_random.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/x86intrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/ia32intrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mm_malloc.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/emmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/pmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/tmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/smmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/popcntintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/wmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/immintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/avxintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/fxsrintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveoptintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/adxintrin.h \
- /usr/include/c++/4.8.3/bits/random.tcc /usr/include/c++/4.8.3/numeric \
- /usr/include/c++/4.8.3/bits/stl_numeric.h \
- /usr/include/c++/4.8.3/functional /usr/include/c++/4.8.3/typeinfo \
- /usr/include/c++/4.8.3/cstring ../../OpenFPM_data/src/memory_conf.hpp \
+ /usr/include/boost/utility/swap.hpp /usr/include/c++/4.9.2/algorithm \
+ /usr/include/c++/4.9.2/bits/stl_algo.h \
+ /usr/include/c++/4.9.2/bits/algorithmfwd.h \
+ /usr/include/c++/4.9.2/bits/stl_heap.h \
+ /usr/include/c++/4.9.2/bits/stl_tempbuf.h /usr/include/c++/4.9.2/random \
+ /usr/include/c++/4.9.2/limits /usr/include/c++/4.9.2/bits/random.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/opt_random.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/x86intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ia32intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm_malloc.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/pmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ammintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/smmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/popcntintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/wmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/immintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avxintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx2intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512fintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512erintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512pfintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512cdintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/shaintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lzcntintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmiintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmi2intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fmaintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/f16cintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rtmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xtestintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm3dnow.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/prfchwintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fma4intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xopintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lwpintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tbmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rdseedintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fxsrintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveoptintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/adxintrin.h \
+ /usr/include/c++/4.9.2/bits/random.tcc /usr/include/c++/4.9.2/numeric \
+ /usr/include/c++/4.9.2/bits/stl_numeric.h /usr/include/c++/4.9.2/cstring \
+ ../../OpenFPM_data/src/memory_ly/memory_conf.hpp \
  ../../OpenFPM_data/src/util/variadic_to_vmpl.hpp \
  /usr/include/boost/mpl/reverse.hpp /usr/include/boost/mpl/vector.hpp \
  /usr/include/boost/mpl/limits/vector.hpp \
  /usr/include/boost/mpl/vector/vector20.hpp \
  /usr/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp \
  /usr/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp \
- ../../OpenFPM_data/src/t_to_memory_c.hpp \
- ../../OpenFPM_data/src/memory_c.hpp /usr/include/boost/shared_ptr.hpp \
+ ../../OpenFPM_data/src/memory_ly/t_to_memory_c.hpp \
+ ../../OpenFPM_data/src/memory_ly/memory_c.hpp \
+ /usr/include/boost/shared_ptr.hpp \
  /usr/include/boost/smart_ptr/shared_ptr.hpp \
  /usr/include/boost/config/no_tr1/memory.hpp \
- /usr/include/c++/4.8.3/memory \
- /usr/include/c++/4.8.3/bits/stl_raw_storage_iter.h \
- /usr/include/c++/4.8.3/ext/concurrence.h \
- /usr/include/c++/4.8.3/bits/unique_ptr.h \
- /usr/include/c++/4.8.3/bits/shared_ptr.h \
- /usr/include/c++/4.8.3/bits/shared_ptr_base.h \
- /usr/include/c++/4.8.3/backward/auto_ptr.h /usr/include/boost/assert.hpp \
+ /usr/include/c++/4.9.2/memory \
+ /usr/include/c++/4.9.2/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/4.9.2/typeinfo /usr/include/c++/4.9.2/ext/concurrence.h \
+ /usr/include/c++/4.9.2/functional \
+ /usr/include/c++/4.9.2/bits/unique_ptr.h \
+ /usr/include/c++/4.9.2/bits/shared_ptr.h \
+ /usr/include/c++/4.9.2/bits/shared_ptr_base.h \
+ /usr/include/c++/4.9.2/backward/auto_ptr.h /usr/include/boost/assert.hpp \
  /usr/include/assert.h /usr/include/boost/current_function.hpp \
  /usr/include/boost/checked_delete.hpp \
  /usr/include/boost/throw_exception.hpp \
@@ -891,8 +916,8 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/boost/multi_array/extent_gen.hpp \
  /usr/include/boost/multi_array/range_list.hpp \
  /usr/include/boost/array.hpp /usr/include/boost/detail/iterator.hpp \
- /usr/include/c++/4.8.3/iterator \
- /usr/include/c++/4.8.3/bits/stream_iterator.h \
+ /usr/include/c++/4.9.2/iterator \
+ /usr/include/c++/4.9.2/bits/stream_iterator.h \
  /usr/include/boost/functional/hash_fwd.hpp \
  /usr/include/boost/functional/hash/hash_fwd.hpp \
  /usr/include/boost/multi_array/types.hpp \
@@ -940,11 +965,13 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  /usr/include/boost/functional.hpp /usr/include/boost/call_traits.hpp \
  /usr/include/boost/detail/call_traits.hpp \
  ../../OpenFPM_data/src/util/ct_array.hpp \
- ../../OpenFPM_data/src/memory_array.hpp \
- ../../OpenFPM_data/src/memory.hpp ../../OpenFPM_data/src/memory.hpp \
+ ../../OpenFPM_data/src/memory_ly/memory_array.hpp \
+ ../../OpenFPM_devices/src/memory/memory.hpp \
  ../../OpenFPM_data/src/util/meta_copy.hpp \
  ../../OpenFPM_data/src/Memleak_check.hpp \
  ../../OpenFPM_data/src/util/for_each_ref.hpp \
+ ../../OpenFPM_data/src/Grid/util.hpp \
+ ../../OpenFPM_data/src/util/common.hpp \
  ../../OpenFPM_data/src/Grid/grid_sm.hpp \
  /usr/include/boost/shared_array.hpp \
  /usr/include/boost/smart_ptr/shared_array.hpp \
@@ -959,39 +986,55 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
  ../../OpenFPM_data/src/Space/Shape/Point.hpp \
  ../../OpenFPM_data/src/Grid/grid_key.hpp \
  ../../OpenFPM_data/src/Grid/Encap.hpp \
- ../../OpenFPM_data/src/memory_array.hpp \
+ ../../OpenFPM_data/src/memory_ly/memory_array.hpp \
  ../../OpenFPM_devices/src/memory/HeapMemory.hpp \
+ ../../OpenFPM_devices/src/memory/memory.hpp \
  ../../OpenFPM_data/src/Vector/vect_isel.hpp \
- ../../OpenFPM_data/src/common.hpp \
  ../../OpenFPM_data/src/util/object_s_di.hpp \
  ../../OpenFPM_data/src/util/for_each_ref.hpp \
  /usr/include/boost/fusion/include/size.hpp \
+ ../../OpenFPM_data/src/Vector/util.hpp \
  ../../OpenFPM_data/src/Vector/map_vector_std.hpp \
- ../../OpenFPM_vcluster/src/MPI_IallreduceW.hpp
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IallreduceW.hpp \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IrecvW.hpp \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IsendW.hpp \
+ ../../OpenFPM_data/src/util/check_no_pointers.hpp \
+ ../../OpenFPM_data/src/util/common.hpp \
+ ../../OpenFPM_data/src/util/util_debug.hpp \
+ /usr/include/c++/4.9.2/cxxabi.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h \
+ ../../OpenFPM_vcluster/src/util/Vcluster_log.hpp \
+ /usr/include/c++/4.9.2/fstream /usr/include/c++/4.9.2/bits/codecvt.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/basic_file.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++io.h \
+ /usr/include/c++/4.9.2/bits/fstream.tcc ../../OpenFPM_data/src/timer.hpp \
+ /usr/include/sys/time.h
 
 /usr/include/stdc-predef.h:
 
 ../../OpenFPM_vcluster/src/VCluster.hpp:
 
+../src/config/config.h:
+
 /home/i-bird/MPI/include/mpi.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h:
 
 /home/i-bird/MPI/include/mpi_portable_platform.h:
 
 /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/mpicxx.h:
 
-/usr/include/c++/4.8.3/map:
+/usr/include/c++/4.9.2/map:
 
-/usr/include/c++/4.8.3/bits/stl_tree.h:
+/usr/include/c++/4.9.2/bits/stl_tree.h:
 
-/usr/include/c++/4.8.3/bits/stl_algobase.h:
+/usr/include/c++/4.9.2/bits/stl_algobase.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h:
 
 /usr/include/bits/wordsize.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h:
 
 /usr/include/features.h:
 
@@ -1001,113 +1044,119 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/gnu/stubs-64.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h:
+
+/usr/include/c++/4.9.2/bits/functexcept.h:
+
+/usr/include/c++/4.9.2/bits/exception_defines.h:
 
-/usr/include/c++/4.8.3/bits/functexcept.h:
+/usr/include/c++/4.9.2/bits/cpp_type_traits.h:
 
-/usr/include/c++/4.8.3/bits/exception_defines.h:
+/usr/include/c++/4.9.2/ext/type_traits.h:
 
-/usr/include/c++/4.8.3/bits/cpp_type_traits.h:
+/usr/include/c++/4.9.2/ext/numeric_traits.h:
 
-/usr/include/c++/4.8.3/ext/type_traits.h:
+/usr/include/c++/4.9.2/bits/stl_pair.h:
 
-/usr/include/c++/4.8.3/ext/numeric_traits.h:
+/usr/include/c++/4.9.2/bits/move.h:
 
-/usr/include/c++/4.8.3/bits/stl_pair.h:
+/usr/include/c++/4.9.2/bits/concept_check.h:
 
-/usr/include/c++/4.8.3/bits/move.h:
+/usr/include/c++/4.9.2/type_traits:
 
-/usr/include/c++/4.8.3/bits/concept_check.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_types.h:
 
-/usr/include/c++/4.8.3/type_traits:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_types.h:
+/usr/include/c++/4.9.2/debug/debug.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h:
+/usr/include/c++/4.9.2/bits/stl_iterator.h:
 
-/usr/include/c++/4.8.3/debug/debug.h:
+/usr/include/c++/4.9.2/bits/ptr_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator.h:
+/usr/include/c++/4.9.2/bits/predefined_ops.h:
 
-/usr/include/c++/4.8.3/bits/allocator.h:
+/usr/include/c++/4.9.2/bits/allocator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h:
 
-/usr/include/c++/4.8.3/ext/new_allocator.h:
+/usr/include/c++/4.9.2/ext/new_allocator.h:
 
-/usr/include/c++/4.8.3/new:
+/usr/include/c++/4.9.2/new:
 
-/usr/include/c++/4.8.3/exception:
+/usr/include/c++/4.9.2/exception:
 
-/usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h:
+/usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h:
 
-/usr/include/c++/4.8.3/bits/exception_ptr.h:
+/usr/include/c++/4.9.2/bits/exception_ptr.h:
 
-/usr/include/c++/4.8.3/bits/nested_exception.h:
+/usr/include/c++/4.9.2/bits/nested_exception.h:
 
-/usr/include/c++/4.8.3/bits/memoryfwd.h:
+/usr/include/c++/4.9.2/bits/memoryfwd.h:
 
-/usr/include/c++/4.8.3/bits/stl_function.h:
+/usr/include/c++/4.9.2/bits/stl_function.h:
 
-/usr/include/c++/4.8.3/backward/binders.h:
+/usr/include/c++/4.9.2/backward/binders.h:
 
-/usr/include/c++/4.8.3/bits/alloc_traits.h:
+/usr/include/c++/4.9.2/ext/alloc_traits.h:
 
-/usr/include/c++/4.8.3/bits/ptr_traits.h:
+/usr/include/c++/4.9.2/bits/alloc_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_map.h:
+/usr/include/c++/4.9.2/ext/aligned_buffer.h:
 
-/usr/include/c++/4.8.3/initializer_list:
+/usr/include/c++/4.9.2/bits/stl_map.h:
 
-/usr/include/c++/4.8.3/tuple:
+/usr/include/c++/4.9.2/initializer_list:
 
-/usr/include/c++/4.8.3/utility:
+/usr/include/c++/4.9.2/tuple:
 
-/usr/include/c++/4.8.3/bits/stl_relops.h:
+/usr/include/c++/4.9.2/utility:
 
-/usr/include/c++/4.8.3/array:
+/usr/include/c++/4.9.2/bits/stl_relops.h:
 
-/usr/include/c++/4.8.3/stdexcept:
+/usr/include/c++/4.9.2/array:
 
-/usr/include/c++/4.8.3/string:
+/usr/include/c++/4.9.2/stdexcept:
 
-/usr/include/c++/4.8.3/bits/stringfwd.h:
+/usr/include/c++/4.9.2/string:
 
-/usr/include/c++/4.8.3/bits/char_traits.h:
+/usr/include/c++/4.9.2/bits/stringfwd.h:
 
-/usr/include/c++/4.8.3/bits/postypes.h:
+/usr/include/c++/4.9.2/bits/char_traits.h:
 
-/usr/include/c++/4.8.3/cwchar:
+/usr/include/c++/4.9.2/bits/postypes.h:
+
+/usr/include/c++/4.9.2/cwchar:
 
 /usr/include/wchar.h:
 
 /usr/include/stdio.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h:
 
 /usr/include/bits/wchar.h:
 
 /usr/include/xlocale.h:
 
-/usr/include/c++/4.8.3/cstdint:
+/usr/include/c++/4.9.2/cstdint:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h:
 
 /usr/include/stdint.h:
 
-/usr/include/c++/4.8.3/bits/localefwd.h:
+/usr/include/c++/4.9.2/bits/localefwd.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h:
 
-/usr/include/c++/4.8.3/clocale:
+/usr/include/c++/4.9.2/clocale:
 
 /usr/include/locale.h:
 
 /usr/include/bits/locale.h:
 
-/usr/include/c++/4.8.3/iosfwd:
+/usr/include/c++/4.9.2/iosfwd:
 
-/usr/include/c++/4.8.3/cctype:
+/usr/include/c++/4.9.2/cctype:
 
 /usr/include/ctype.h:
 
@@ -1123,19 +1172,19 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/bits/byteswap-16.h:
 
-/usr/include/c++/4.8.3/bits/ostream_insert.h:
+/usr/include/c++/4.9.2/bits/ostream_insert.h:
 
-/usr/include/c++/4.8.3/bits/cxxabi_forced.h:
+/usr/include/c++/4.9.2/bits/cxxabi_forced.h:
 
-/usr/include/c++/4.8.3/bits/range_access.h:
+/usr/include/c++/4.9.2/bits/range_access.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.h:
+/usr/include/c++/4.9.2/bits/basic_string.h:
 
-/usr/include/c++/4.8.3/ext/atomicity.h:
+/usr/include/c++/4.9.2/ext/atomicity.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h:
 
 /usr/include/pthread.h:
 
@@ -1153,11 +1202,11 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/bits/setjmp.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h:
 
-/usr/include/c++/4.8.3/ext/string_conversions.h:
+/usr/include/c++/4.9.2/ext/string_conversions.h:
 
-/usr/include/c++/4.8.3/cstdlib:
+/usr/include/c++/4.9.2/cstdlib:
 
 /usr/include/stdlib.h:
 
@@ -1179,7 +1228,7 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/bits/stdlib-float.h:
 
-/usr/include/c++/4.8.3/cstdio:
+/usr/include/c++/4.9.2/cstdio:
 
 /usr/include/libio.h:
 
@@ -1189,7 +1238,7 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/bits/sys_errlist.h:
 
-/usr/include/c++/4.8.3/cerrno:
+/usr/include/c++/4.9.2/cerrno:
 
 /usr/include/errno.h:
 
@@ -1203,55 +1252,55 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/asm-generic/errno-base.h:
 
-/usr/include/c++/4.8.3/bits/functional_hash.h:
+/usr/include/c++/4.9.2/bits/functional_hash.h:
 
-/usr/include/c++/4.8.3/bits/hash_bytes.h:
+/usr/include/c++/4.9.2/bits/hash_bytes.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.tcc:
+/usr/include/c++/4.9.2/bits/basic_string.tcc:
 
-/usr/include/c++/4.8.3/bits/uses_allocator.h:
+/usr/include/c++/4.9.2/bits/uses_allocator.h:
 
-/usr/include/c++/4.8.3/bits/stl_multimap.h:
+/usr/include/c++/4.9.2/bits/stl_multimap.h:
 
-/usr/include/c++/4.8.3/iostream:
+/usr/include/c++/4.9.2/iostream:
 
-/usr/include/c++/4.8.3/ostream:
+/usr/include/c++/4.9.2/ostream:
 
-/usr/include/c++/4.8.3/ios:
+/usr/include/c++/4.9.2/ios:
 
-/usr/include/c++/4.8.3/bits/ios_base.h:
+/usr/include/c++/4.9.2/bits/ios_base.h:
 
-/usr/include/c++/4.8.3/bits/locale_classes.h:
+/usr/include/c++/4.9.2/bits/locale_classes.h:
 
-/usr/include/c++/4.8.3/bits/locale_classes.tcc:
+/usr/include/c++/4.9.2/bits/locale_classes.tcc:
 
-/usr/include/c++/4.8.3/streambuf:
+/usr/include/c++/4.9.2/streambuf:
 
-/usr/include/c++/4.8.3/bits/streambuf.tcc:
+/usr/include/c++/4.9.2/bits/streambuf.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.h:
+/usr/include/c++/4.9.2/bits/basic_ios.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.h:
+/usr/include/c++/4.9.2/bits/locale_facets.h:
 
-/usr/include/c++/4.8.3/cwctype:
+/usr/include/c++/4.9.2/cwctype:
 
 /usr/include/wctype.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h:
 
-/usr/include/c++/4.8.3/bits/streambuf_iterator.h:
+/usr/include/c++/4.9.2/bits/streambuf_iterator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.tcc:
+/usr/include/c++/4.9.2/bits/locale_facets.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.tcc:
+/usr/include/c++/4.9.2/bits/basic_ios.tcc:
 
-/usr/include/c++/4.8.3/bits/ostream.tcc:
+/usr/include/c++/4.9.2/bits/ostream.tcc:
 
-/usr/include/c++/4.8.3/istream:
+/usr/include/c++/4.9.2/istream:
 
-/usr/include/c++/4.8.3/bits/istream.tcc:
+/usr/include/c++/4.9.2/bits/istream.tcc:
 
 /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/constants.h:
 
@@ -1315,23 +1364,23 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/file_inln.h:
 
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_util.hpp:
+
 ../../OpenFPM_vcluster/src/VCluster_object.hpp:
 
 ../../OpenFPM_vcluster/src/VCluster_object_array.hpp:
 
-/usr/include/c++/4.8.3/vector:
-
-/usr/include/c++/4.8.3/bits/stl_construct.h:
+/usr/include/c++/4.9.2/vector:
 
-/usr/include/c++/4.8.3/ext/alloc_traits.h:
+/usr/include/c++/4.9.2/bits/stl_construct.h:
 
-/usr/include/c++/4.8.3/bits/stl_uninitialized.h:
+/usr/include/c++/4.9.2/bits/stl_uninitialized.h:
 
-/usr/include/c++/4.8.3/bits/stl_vector.h:
+/usr/include/c++/4.9.2/bits/stl_vector.h:
 
-/usr/include/c++/4.8.3/bits/stl_bvector.h:
+/usr/include/c++/4.9.2/bits/stl_bvector.h:
 
-/usr/include/c++/4.8.3/bits/vector.tcc:
+/usr/include/c++/4.9.2/bits/vector.tcc:
 
 ../../OpenFPM_vcluster/src/VObject.hpp:
 
@@ -1339,8 +1388,6 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 ../../OpenFPM_data/src/Grid/map_grid.hpp:
 
-../src/config/config.h:
-
 /usr/include/boost/fusion/include/mpl.hpp:
 
 /usr/include/boost/fusion/adapted/mpl.hpp:
@@ -1377,7 +1424,7 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/config/select_stdlib_config.hpp:
 
-/usr/include/c++/4.8.3/cstddef:
+/usr/include/c++/4.9.2/cstddef:
 
 /usr/include/boost/config/no_tr1/utility.hpp:
 
@@ -2333,11 +2380,7 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/fusion/container/map/map_fwd.hpp:
 
-/usr/include/boost/fusion/container/map/limits.hpp:
-
-/usr/include/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp:
-
-/usr/include/boost/fusion/container/map/detail/preprocessed/map10_fwd.hpp:
+/usr/include/boost/fusion/container/map/detail/map_impl.hpp:
 
 /usr/include/boost/fusion/container/set/set_fwd.hpp:
 
@@ -2675,9 +2718,9 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/type_traits/is_complex.hpp:
 
-/usr/include/c++/4.8.3/complex:
+/usr/include/c++/4.9.2/complex:
 
-/usr/include/c++/4.8.3/cmath:
+/usr/include/c++/4.9.2/cmath:
 
 /usr/include/math.h:
 
@@ -2695,12 +2738,16 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/bits/mathcalls.h:
 
-/usr/include/c++/4.8.3/sstream:
+/usr/include/c++/4.9.2/sstream:
 
-/usr/include/c++/4.8.3/bits/sstream.tcc:
+/usr/include/c++/4.9.2/bits/sstream.tcc:
 
 /usr/include/boost/type_traits/is_compound.hpp:
 
+/usr/include/boost/type_traits/is_copy_constructible.hpp:
+
+/usr/include/boost/noncopyable.hpp:
+
 /usr/include/boost/type_traits/is_floating_point.hpp:
 
 /usr/include/boost/type_traits/is_member_object_pointer.hpp:
@@ -2765,71 +2812,109 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/utility/swap.hpp:
 
-/usr/include/c++/4.8.3/algorithm:
+/usr/include/c++/4.9.2/algorithm:
+
+/usr/include/c++/4.9.2/bits/stl_algo.h:
+
+/usr/include/c++/4.9.2/bits/algorithmfwd.h:
+
+/usr/include/c++/4.9.2/bits/stl_heap.h:
+
+/usr/include/c++/4.9.2/bits/stl_tempbuf.h:
+
+/usr/include/c++/4.9.2/random:
+
+/usr/include/c++/4.9.2/limits:
+
+/usr/include/c++/4.9.2/bits/random.h:
+
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/opt_random.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/x86intrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ia32intrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mmintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xmmintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm_malloc.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/emmintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/pmmintrin.h:
 
-/usr/include/c++/4.8.3/bits/stl_algo.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tmmintrin.h:
 
-/usr/include/c++/4.8.3/bits/algorithmfwd.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ammintrin.h:
 
-/usr/include/c++/4.8.3/bits/stl_heap.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/smmintrin.h:
 
-/usr/include/c++/4.8.3/bits/stl_tempbuf.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/popcntintrin.h:
 
-/usr/include/c++/4.8.3/random:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/wmmintrin.h:
 
-/usr/include/c++/4.8.3/limits:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/immintrin.h:
 
-/usr/include/c++/4.8.3/bits/random.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avxintrin.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/opt_random.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx2intrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/x86intrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512fintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/ia32intrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512erintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512pfintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512cdintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mm_malloc.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/shaintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/emmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lzcntintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/pmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmiintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/tmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmi2intrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/smmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fmaintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/popcntintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/f16cintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/wmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rtmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/immintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xtestintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/avxintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm3dnow.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/fxsrintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/prfchwintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fma4intrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveoptintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xopintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/adxintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lwpintrin.h:
 
-/usr/include/c++/4.8.3/bits/random.tcc:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tbmintrin.h:
 
-/usr/include/c++/4.8.3/numeric:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rdseedintrin.h:
 
-/usr/include/c++/4.8.3/bits/stl_numeric.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fxsrintrin.h:
 
-/usr/include/c++/4.8.3/functional:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveintrin.h:
 
-/usr/include/c++/4.8.3/typeinfo:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveoptintrin.h:
 
-/usr/include/c++/4.8.3/cstring:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/adxintrin.h:
 
-../../OpenFPM_data/src/memory_conf.hpp:
+/usr/include/c++/4.9.2/bits/random.tcc:
+
+/usr/include/c++/4.9.2/numeric:
+
+/usr/include/c++/4.9.2/bits/stl_numeric.h:
+
+/usr/include/c++/4.9.2/cstring:
+
+../../OpenFPM_data/src/memory_ly/memory_conf.hpp:
 
 ../../OpenFPM_data/src/util/variadic_to_vmpl.hpp:
 
@@ -2845,9 +2930,9 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp:
 
-../../OpenFPM_data/src/t_to_memory_c.hpp:
+../../OpenFPM_data/src/memory_ly/t_to_memory_c.hpp:
 
-../../OpenFPM_data/src/memory_c.hpp:
+../../OpenFPM_data/src/memory_ly/memory_c.hpp:
 
 /usr/include/boost/shared_ptr.hpp:
 
@@ -2855,19 +2940,23 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/config/no_tr1/memory.hpp:
 
-/usr/include/c++/4.8.3/memory:
+/usr/include/c++/4.9.2/memory:
 
-/usr/include/c++/4.8.3/bits/stl_raw_storage_iter.h:
+/usr/include/c++/4.9.2/bits/stl_raw_storage_iter.h:
 
-/usr/include/c++/4.8.3/ext/concurrence.h:
+/usr/include/c++/4.9.2/typeinfo:
 
-/usr/include/c++/4.8.3/bits/unique_ptr.h:
+/usr/include/c++/4.9.2/ext/concurrence.h:
 
-/usr/include/c++/4.8.3/bits/shared_ptr.h:
+/usr/include/c++/4.9.2/functional:
 
-/usr/include/c++/4.8.3/bits/shared_ptr_base.h:
+/usr/include/c++/4.9.2/bits/unique_ptr.h:
 
-/usr/include/c++/4.8.3/backward/auto_ptr.h:
+/usr/include/c++/4.9.2/bits/shared_ptr.h:
+
+/usr/include/c++/4.9.2/bits/shared_ptr_base.h:
+
+/usr/include/c++/4.9.2/backward/auto_ptr.h:
 
 /usr/include/boost/assert.hpp:
 
@@ -2927,9 +3016,9 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/detail/iterator.hpp:
 
-/usr/include/c++/4.8.3/iterator:
+/usr/include/c++/4.9.2/iterator:
 
-/usr/include/c++/4.8.3/bits/stream_iterator.h:
+/usr/include/c++/4.9.2/bits/stream_iterator.h:
 
 /usr/include/boost/functional/hash_fwd.hpp:
 
@@ -3029,11 +3118,9 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 ../../OpenFPM_data/src/util/ct_array.hpp:
 
-../../OpenFPM_data/src/memory_array.hpp:
-
-../../OpenFPM_data/src/memory.hpp:
+../../OpenFPM_data/src/memory_ly/memory_array.hpp:
 
-../../OpenFPM_data/src/memory.hpp:
+../../OpenFPM_devices/src/memory/memory.hpp:
 
 ../../OpenFPM_data/src/util/meta_copy.hpp:
 
@@ -3041,6 +3128,10 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 ../../OpenFPM_data/src/util/for_each_ref.hpp:
 
+../../OpenFPM_data/src/Grid/util.hpp:
+
+../../OpenFPM_data/src/util/common.hpp:
+
 ../../OpenFPM_data/src/Grid/grid_sm.hpp:
 
 /usr/include/boost/shared_array.hpp:
@@ -3069,13 +3160,13 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 ../../OpenFPM_data/src/Grid/Encap.hpp:
 
-../../OpenFPM_data/src/memory_array.hpp:
+../../OpenFPM_data/src/memory_ly/memory_array.hpp:
 
 ../../OpenFPM_devices/src/memory/HeapMemory.hpp:
 
-../../OpenFPM_data/src/Vector/vect_isel.hpp:
+../../OpenFPM_devices/src/memory/memory.hpp:
 
-../../OpenFPM_data/src/common.hpp:
+../../OpenFPM_data/src/Vector/vect_isel.hpp:
 
 ../../OpenFPM_data/src/util/object_s_di.hpp:
 
@@ -3083,6 +3174,38 @@ pdata-VCluster.o: ../../OpenFPM_vcluster/src/VCluster.cpp \
 
 /usr/include/boost/fusion/include/size.hpp:
 
+../../OpenFPM_data/src/Vector/util.hpp:
+
 ../../OpenFPM_data/src/Vector/map_vector_std.hpp:
 
-../../OpenFPM_vcluster/src/MPI_IallreduceW.hpp:
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IallreduceW.hpp:
+
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IrecvW.hpp:
+
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IsendW.hpp:
+
+../../OpenFPM_data/src/util/check_no_pointers.hpp:
+
+../../OpenFPM_data/src/util/common.hpp:
+
+../../OpenFPM_data/src/util/util_debug.hpp:
+
+/usr/include/c++/4.9.2/cxxabi.h:
+
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h:
+
+../../OpenFPM_vcluster/src/util/Vcluster_log.hpp:
+
+/usr/include/c++/4.9.2/fstream:
+
+/usr/include/c++/4.9.2/bits/codecvt.h:
+
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/basic_file.h:
+
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++io.h:
+
+/usr/include/c++/4.9.2/bits/fstream.tcc:
+
+../../OpenFPM_data/src/timer.hpp:
+
+/usr/include/sys/time.h:
diff --git a/src/.deps/pdata-main.Po b/src/.deps/pdata-main.Po
index 6897ea89..06812b3f 100644
--- a/src/.deps/pdata-main.Po
+++ b/src/.deps/pdata-main.Po
@@ -1,96 +1,98 @@
 pdata-main.o: main.cpp /usr/include/stdc-predef.h \
- /usr/include/c++/4.8.3/iostream \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/4.9.2/iostream \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h \
  /usr/include/bits/wordsize.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h \
  /usr/include/features.h /usr/include/sys/cdefs.h \
  /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/4.8.3/ostream /usr/include/c++/4.8.3/ios \
- /usr/include/c++/4.8.3/iosfwd /usr/include/c++/4.8.3/bits/stringfwd.h \
- /usr/include/c++/4.8.3/bits/memoryfwd.h \
- /usr/include/c++/4.8.3/bits/postypes.h /usr/include/c++/4.8.3/cwchar \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/4.9.2/ostream /usr/include/c++/4.9.2/ios \
+ /usr/include/c++/4.9.2/iosfwd /usr/include/c++/4.9.2/bits/stringfwd.h \
+ /usr/include/c++/4.9.2/bits/memoryfwd.h \
+ /usr/include/c++/4.9.2/bits/postypes.h /usr/include/c++/4.9.2/cwchar \
  /usr/include/wchar.h /usr/include/stdio.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h \
  /usr/include/bits/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h \
- /usr/include/xlocale.h /usr/include/c++/4.8.3/exception \
- /usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h \
- /usr/include/c++/4.8.3/bits/exception_ptr.h \
- /usr/include/c++/4.8.3/bits/exception_defines.h \
- /usr/include/c++/4.8.3/bits/nested_exception.h \
- /usr/include/c++/4.8.3/bits/char_traits.h \
- /usr/include/c++/4.8.3/bits/stl_algobase.h \
- /usr/include/c++/4.8.3/bits/functexcept.h \
- /usr/include/c++/4.8.3/bits/cpp_type_traits.h \
- /usr/include/c++/4.8.3/ext/type_traits.h \
- /usr/include/c++/4.8.3/ext/numeric_traits.h \
- /usr/include/c++/4.8.3/bits/stl_pair.h \
- /usr/include/c++/4.8.3/bits/move.h \
- /usr/include/c++/4.8.3/bits/concept_check.h \
- /usr/include/c++/4.8.3/type_traits \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_types.h \
- /usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/4.8.3/debug/debug.h \
- /usr/include/c++/4.8.3/bits/stl_iterator.h \
- /usr/include/c++/4.8.3/cstdint \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h \
- /usr/include/stdint.h /usr/include/c++/4.8.3/bits/localefwd.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/4.8.3/clocale /usr/include/locale.h \
- /usr/include/bits/locale.h /usr/include/c++/4.8.3/cctype \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h \
+ /usr/include/xlocale.h /usr/include/c++/4.9.2/exception \
+ /usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/4.9.2/bits/exception_ptr.h \
+ /usr/include/c++/4.9.2/bits/exception_defines.h \
+ /usr/include/c++/4.9.2/bits/nested_exception.h \
+ /usr/include/c++/4.9.2/bits/char_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_algobase.h \
+ /usr/include/c++/4.9.2/bits/functexcept.h \
+ /usr/include/c++/4.9.2/bits/cpp_type_traits.h \
+ /usr/include/c++/4.9.2/ext/type_traits.h \
+ /usr/include/c++/4.9.2/ext/numeric_traits.h \
+ /usr/include/c++/4.9.2/bits/stl_pair.h \
+ /usr/include/c++/4.9.2/bits/move.h \
+ /usr/include/c++/4.9.2/bits/concept_check.h \
+ /usr/include/c++/4.9.2/type_traits \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_types.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/4.9.2/debug/debug.h \
+ /usr/include/c++/4.9.2/bits/stl_iterator.h \
+ /usr/include/c++/4.9.2/bits/ptr_traits.h \
+ /usr/include/c++/4.9.2/bits/predefined_ops.h \
+ /usr/include/c++/4.9.2/cstdint \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h \
+ /usr/include/stdint.h /usr/include/c++/4.9.2/bits/localefwd.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/4.9.2/clocale /usr/include/locale.h \
+ /usr/include/bits/locale.h /usr/include/c++/4.9.2/cctype \
  /usr/include/ctype.h /usr/include/bits/types.h \
  /usr/include/bits/typesizes.h /usr/include/endian.h \
  /usr/include/bits/endian.h /usr/include/bits/byteswap.h \
- /usr/include/bits/byteswap-16.h /usr/include/c++/4.8.3/bits/ios_base.h \
- /usr/include/c++/4.8.3/ext/atomicity.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/bits/byteswap-16.h /usr/include/c++/4.9.2/bits/ios_base.h \
+ /usr/include/c++/4.9.2/ext/atomicity.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h \
  /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \
  /usr/include/bits/sched.h /usr/include/bits/time.h \
  /usr/include/bits/timex.h /usr/include/bits/pthreadtypes.h \
  /usr/include/bits/setjmp.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/4.8.3/bits/locale_classes.h \
- /usr/include/c++/4.8.3/string /usr/include/c++/4.8.3/bits/allocator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/4.8.3/ext/new_allocator.h /usr/include/c++/4.8.3/new \
- /usr/include/c++/4.8.3/bits/ostream_insert.h \
- /usr/include/c++/4.8.3/bits/cxxabi_forced.h \
- /usr/include/c++/4.8.3/bits/stl_function.h \
- /usr/include/c++/4.8.3/backward/binders.h \
- /usr/include/c++/4.8.3/bits/range_access.h \
- /usr/include/c++/4.8.3/bits/basic_string.h \
- /usr/include/c++/4.8.3/initializer_list \
- /usr/include/c++/4.8.3/ext/string_conversions.h \
- /usr/include/c++/4.8.3/cstdlib /usr/include/stdlib.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/4.9.2/bits/locale_classes.h \
+ /usr/include/c++/4.9.2/string /usr/include/c++/4.9.2/bits/allocator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/4.9.2/ext/new_allocator.h /usr/include/c++/4.9.2/new \
+ /usr/include/c++/4.9.2/bits/ostream_insert.h \
+ /usr/include/c++/4.9.2/bits/cxxabi_forced.h \
+ /usr/include/c++/4.9.2/bits/stl_function.h \
+ /usr/include/c++/4.9.2/backward/binders.h \
+ /usr/include/c++/4.9.2/bits/range_access.h \
+ /usr/include/c++/4.9.2/bits/basic_string.h \
+ /usr/include/c++/4.9.2/initializer_list \
+ /usr/include/c++/4.9.2/ext/string_conversions.h \
+ /usr/include/c++/4.9.2/cstdlib /usr/include/stdlib.h \
  /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
  /usr/include/sys/types.h /usr/include/sys/select.h \
  /usr/include/bits/select.h /usr/include/bits/sigset.h \
  /usr/include/sys/sysmacros.h /usr/include/alloca.h \
- /usr/include/bits/stdlib-float.h /usr/include/c++/4.8.3/cstdio \
+ /usr/include/bits/stdlib-float.h /usr/include/c++/4.9.2/cstdio \
  /usr/include/libio.h /usr/include/_G_config.h \
  /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
- /usr/include/c++/4.8.3/cerrno /usr/include/errno.h \
+ /usr/include/c++/4.9.2/cerrno /usr/include/errno.h \
  /usr/include/bits/errno.h /usr/include/linux/errno.h \
  /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \
  /usr/include/asm-generic/errno-base.h \
- /usr/include/c++/4.8.3/bits/functional_hash.h \
- /usr/include/c++/4.8.3/bits/hash_bytes.h \
- /usr/include/c++/4.8.3/bits/basic_string.tcc \
- /usr/include/c++/4.8.3/bits/locale_classes.tcc \
- /usr/include/c++/4.8.3/streambuf \
- /usr/include/c++/4.8.3/bits/streambuf.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.h \
- /usr/include/c++/4.8.3/bits/locale_facets.h \
- /usr/include/c++/4.8.3/cwctype /usr/include/wctype.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/4.8.3/bits/streambuf_iterator.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/4.8.3/bits/locale_facets.tcc \
- /usr/include/c++/4.8.3/bits/basic_ios.tcc \
- /usr/include/c++/4.8.3/bits/ostream.tcc /usr/include/c++/4.8.3/istream \
- /usr/include/c++/4.8.3/bits/istream.tcc ../src/config/config.h \
+ /usr/include/c++/4.9.2/bits/functional_hash.h \
+ /usr/include/c++/4.9.2/bits/hash_bytes.h \
+ /usr/include/c++/4.9.2/bits/basic_string.tcc \
+ /usr/include/c++/4.9.2/bits/locale_classes.tcc \
+ /usr/include/c++/4.9.2/streambuf \
+ /usr/include/c++/4.9.2/bits/streambuf.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.h \
+ /usr/include/c++/4.9.2/cwctype /usr/include/wctype.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/4.9.2/bits/streambuf_iterator.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/4.9.2/bits/locale_facets.tcc \
+ /usr/include/c++/4.9.2/bits/basic_ios.tcc \
+ /usr/include/c++/4.9.2/bits/ostream.tcc /usr/include/c++/4.9.2/istream \
+ /usr/include/c++/4.9.2/bits/istream.tcc ../src/config/config.h \
  Graph/CartesianGraphFactory.hpp \
  ../../OpenFPM_data/src/Vector/map_vector.hpp \
  ../../OpenFPM_data/src/Grid/map_grid.hpp \
@@ -110,9 +112,9 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/config/select_compiler_config.hpp \
  /usr/include/boost/config/compiler/gcc.hpp \
  /usr/include/boost/config/select_stdlib_config.hpp \
- /usr/include/c++/4.8.3/cstddef \
+ /usr/include/c++/4.9.2/cstddef \
  /usr/include/boost/config/no_tr1/utility.hpp \
- /usr/include/c++/4.8.3/utility /usr/include/c++/4.8.3/bits/stl_relops.h \
+ /usr/include/c++/4.9.2/utility /usr/include/c++/4.9.2/bits/stl_relops.h \
  /usr/include/boost/config/stdlib/libstdcpp3.hpp /usr/include/unistd.h \
  /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
  /usr/include/bits/confname.h /usr/include/getopt.h \
@@ -564,9 +566,7 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/fusion/container/vector/detail/preprocessed/vector_fwd.hpp \
  /usr/include/boost/fusion/container/vector/detail/preprocessed/vvector10_fwd.hpp \
  /usr/include/boost/fusion/container/map/map_fwd.hpp \
- /usr/include/boost/fusion/container/map/limits.hpp \
- /usr/include/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp \
- /usr/include/boost/fusion/container/map/detail/preprocessed/map10_fwd.hpp \
+ /usr/include/boost/fusion/container/map/detail/map_impl.hpp \
  /usr/include/boost/fusion/container/set/set_fwd.hpp \
  /usr/include/boost/fusion/container/set/limits.hpp \
  /usr/include/boost/fusion/container/set/detail/preprocessed/set_fwd.hpp \
@@ -732,13 +732,15 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/type_traits/has_trivial_move_constructor.hpp \
  /usr/include/boost/type_traits/has_virtual_destructor.hpp \
  /usr/include/boost/type_traits/is_complex.hpp \
- /usr/include/c++/4.8.3/complex /usr/include/c++/4.8.3/cmath \
+ /usr/include/c++/4.9.2/complex /usr/include/c++/4.9.2/cmath \
  /usr/include/math.h /usr/include/bits/huge_val.h \
  /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \
  /usr/include/bits/inf.h /usr/include/bits/nan.h \
  /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \
- /usr/include/c++/4.8.3/sstream /usr/include/c++/4.8.3/bits/sstream.tcc \
+ /usr/include/c++/4.9.2/sstream /usr/include/c++/4.9.2/bits/sstream.tcc \
  /usr/include/boost/type_traits/is_compound.hpp \
+ /usr/include/boost/type_traits/is_copy_constructible.hpp \
+ /usr/include/boost/noncopyable.hpp \
  /usr/include/boost/type_traits/is_floating_point.hpp \
  /usr/include/boost/type_traits/is_member_object_pointer.hpp \
  /usr/include/boost/type_traits/is_nothrow_move_assignable.hpp \
@@ -769,64 +771,84 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/mpl/aux_/unwrap.hpp \
  /usr/include/boost/utility/value_init.hpp \
  /usr/include/boost/type_traits/cv_traits.hpp /usr/include/boost/swap.hpp \
- /usr/include/boost/utility/swap.hpp /usr/include/c++/4.8.3/algorithm \
- /usr/include/c++/4.8.3/bits/stl_algo.h \
- /usr/include/c++/4.8.3/bits/algorithmfwd.h \
- /usr/include/c++/4.8.3/bits/stl_heap.h \
- /usr/include/c++/4.8.3/bits/stl_tempbuf.h \
- /usr/include/c++/4.8.3/bits/stl_construct.h \
- /usr/include/c++/4.8.3/ext/alloc_traits.h \
- /usr/include/c++/4.8.3/bits/alloc_traits.h \
- /usr/include/c++/4.8.3/bits/ptr_traits.h /usr/include/c++/4.8.3/random \
- /usr/include/c++/4.8.3/limits /usr/include/c++/4.8.3/bits/random.h \
- /usr/include/c++/4.8.3/vector \
- /usr/include/c++/4.8.3/bits/stl_uninitialized.h \
- /usr/include/c++/4.8.3/bits/stl_vector.h \
- /usr/include/c++/4.8.3/bits/stl_bvector.h \
- /usr/include/c++/4.8.3/bits/vector.tcc \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/opt_random.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/x86intrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/ia32intrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mm_malloc.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/emmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/pmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/tmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/smmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/popcntintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/wmmintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/immintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/avxintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/fxsrintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveoptintrin.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/adxintrin.h \
- /usr/include/c++/4.8.3/bits/random.tcc /usr/include/c++/4.8.3/numeric \
- /usr/include/c++/4.8.3/bits/stl_numeric.h \
- /usr/include/c++/4.8.3/functional /usr/include/c++/4.8.3/typeinfo \
- /usr/include/c++/4.8.3/tuple /usr/include/c++/4.8.3/array \
- /usr/include/c++/4.8.3/stdexcept \
- /usr/include/c++/4.8.3/bits/uses_allocator.h \
- /usr/include/c++/4.8.3/cstring /usr/include/string.h \
- ../../OpenFPM_data/src/memory_conf.hpp \
+ /usr/include/boost/utility/swap.hpp /usr/include/c++/4.9.2/algorithm \
+ /usr/include/c++/4.9.2/bits/stl_algo.h \
+ /usr/include/c++/4.9.2/bits/algorithmfwd.h \
+ /usr/include/c++/4.9.2/bits/stl_heap.h \
+ /usr/include/c++/4.9.2/bits/stl_tempbuf.h \
+ /usr/include/c++/4.9.2/bits/stl_construct.h \
+ /usr/include/c++/4.9.2/ext/alloc_traits.h \
+ /usr/include/c++/4.9.2/bits/alloc_traits.h /usr/include/c++/4.9.2/random \
+ /usr/include/c++/4.9.2/limits /usr/include/c++/4.9.2/bits/random.h \
+ /usr/include/c++/4.9.2/vector \
+ /usr/include/c++/4.9.2/bits/stl_uninitialized.h \
+ /usr/include/c++/4.9.2/bits/stl_vector.h \
+ /usr/include/c++/4.9.2/bits/stl_bvector.h \
+ /usr/include/c++/4.9.2/bits/vector.tcc \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/opt_random.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/x86intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ia32intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm_malloc.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/emmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/pmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ammintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/smmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/popcntintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/wmmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/immintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avxintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx2intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512fintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512erintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512pfintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512cdintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/shaintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lzcntintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmiintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmi2intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fmaintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/f16cintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rtmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xtestintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm3dnow.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/prfchwintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fma4intrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xopintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lwpintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tbmintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rdseedintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fxsrintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveoptintrin.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/adxintrin.h \
+ /usr/include/c++/4.9.2/bits/random.tcc /usr/include/c++/4.9.2/numeric \
+ /usr/include/c++/4.9.2/bits/stl_numeric.h /usr/include/c++/4.9.2/cstring \
+ /usr/include/string.h ../../OpenFPM_data/src/memory_ly/memory_conf.hpp \
  ../../OpenFPM_data/src/util/variadic_to_vmpl.hpp \
  /usr/include/boost/mpl/reverse.hpp /usr/include/boost/mpl/vector.hpp \
  /usr/include/boost/mpl/limits/vector.hpp \
  /usr/include/boost/mpl/vector/vector20.hpp \
  /usr/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp \
  /usr/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp \
- ../../OpenFPM_data/src/t_to_memory_c.hpp \
- ../../OpenFPM_data/src/memory_c.hpp /usr/include/boost/shared_ptr.hpp \
+ ../../OpenFPM_data/src/memory_ly/t_to_memory_c.hpp \
+ ../../OpenFPM_data/src/memory_ly/memory_c.hpp \
+ /usr/include/boost/shared_ptr.hpp \
  /usr/include/boost/smart_ptr/shared_ptr.hpp \
  /usr/include/boost/config/no_tr1/memory.hpp \
- /usr/include/c++/4.8.3/memory \
- /usr/include/c++/4.8.3/bits/stl_raw_storage_iter.h \
- /usr/include/c++/4.8.3/ext/concurrence.h \
- /usr/include/c++/4.8.3/bits/unique_ptr.h \
- /usr/include/c++/4.8.3/bits/shared_ptr.h \
- /usr/include/c++/4.8.3/bits/shared_ptr_base.h \
- /usr/include/c++/4.8.3/backward/auto_ptr.h /usr/include/boost/assert.hpp \
+ /usr/include/c++/4.9.2/memory \
+ /usr/include/c++/4.9.2/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/4.9.2/typeinfo /usr/include/c++/4.9.2/ext/concurrence.h \
+ /usr/include/c++/4.9.2/bits/uses_allocator.h \
+ /usr/include/c++/4.9.2/functional /usr/include/c++/4.9.2/tuple \
+ /usr/include/c++/4.9.2/array /usr/include/c++/4.9.2/stdexcept \
+ /usr/include/c++/4.9.2/bits/unique_ptr.h \
+ /usr/include/c++/4.9.2/bits/shared_ptr.h \
+ /usr/include/c++/4.9.2/bits/shared_ptr_base.h \
+ /usr/include/c++/4.9.2/ext/aligned_buffer.h \
+ /usr/include/c++/4.9.2/backward/auto_ptr.h /usr/include/boost/assert.hpp \
  /usr/include/assert.h /usr/include/boost/current_function.hpp \
  /usr/include/boost/checked_delete.hpp \
  /usr/include/boost/throw_exception.hpp \
@@ -853,8 +875,8 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/multi_array/extent_gen.hpp \
  /usr/include/boost/multi_array/range_list.hpp \
  /usr/include/boost/array.hpp /usr/include/boost/detail/iterator.hpp \
- /usr/include/c++/4.8.3/iterator \
- /usr/include/c++/4.8.3/bits/stream_iterator.h \
+ /usr/include/c++/4.9.2/iterator \
+ /usr/include/c++/4.9.2/bits/stream_iterator.h \
  /usr/include/boost/functional/hash_fwd.hpp \
  /usr/include/boost/functional/hash/hash_fwd.hpp \
  /usr/include/boost/multi_array/types.hpp \
@@ -902,14 +924,16 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/functional.hpp /usr/include/boost/call_traits.hpp \
  /usr/include/boost/detail/call_traits.hpp \
  ../../OpenFPM_data/src/util/ct_array.hpp \
- ../../OpenFPM_data/src/memory_array.hpp \
- ../../OpenFPM_data/src/memory.hpp ../../OpenFPM_data/src/memory.hpp \
+ ../../OpenFPM_data/src/memory_ly/memory_array.hpp \
+ ../../OpenFPM_devices/src/memory/memory.hpp \
  ../../OpenFPM_data/src/util/meta_copy.hpp \
- ../../OpenFPM_data/src/Memleak_check.hpp /usr/include/c++/4.8.3/map \
- /usr/include/c++/4.8.3/bits/stl_tree.h \
- /usr/include/c++/4.8.3/bits/stl_map.h \
- /usr/include/c++/4.8.3/bits/stl_multimap.h \
+ ../../OpenFPM_data/src/Memleak_check.hpp /usr/include/c++/4.9.2/map \
+ /usr/include/c++/4.9.2/bits/stl_tree.h \
+ /usr/include/c++/4.9.2/bits/stl_map.h \
+ /usr/include/c++/4.9.2/bits/stl_multimap.h \
  ../../OpenFPM_data/src/util/for_each_ref.hpp \
+ ../../OpenFPM_data/src/Grid/util.hpp \
+ ../../OpenFPM_data/src/util/common.hpp \
  ../../OpenFPM_data/src/Grid/grid_sm.hpp \
  /usr/include/boost/shared_array.hpp \
  /usr/include/boost/smart_ptr/shared_array.hpp \
@@ -924,14 +948,14 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  ../../OpenFPM_data/src/Space/Shape/Point.hpp \
  ../../OpenFPM_data/src/Grid/grid_key.hpp \
  ../../OpenFPM_data/src/Grid/Encap.hpp \
- ../../OpenFPM_data/src/memory_array.hpp \
+ ../../OpenFPM_data/src/memory_ly/memory_array.hpp \
  ../../OpenFPM_devices/src/memory/HeapMemory.hpp \
+ ../../OpenFPM_devices/src/memory/memory.hpp \
  ../../OpenFPM_data/src/Vector/vect_isel.hpp \
- ../../OpenFPM_data/src/common.hpp \
  ../../OpenFPM_data/src/util/object_s_di.hpp \
  ../../OpenFPM_data/src/util/for_each_ref.hpp \
  /usr/include/boost/fusion/include/size.hpp \
- /home/i-bird/MPI/include/mpi.h \
+ ../../OpenFPM_data/src/Vector/util.hpp /home/i-bird/MPI/include/mpi.h \
  /home/i-bird/MPI/include/mpi_portable_platform.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/mpicxx.h \
  /home/i-bird/MPI/include/openmpi/ompi/mpi/cxx/constants.h \
@@ -968,7 +992,7 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  ../../OpenFPM_data/src/Graph/map_graph.hpp \
  ../../OpenFPM_data/src/Grid/grid_sm.hpp \
  ../../OpenFPM_data/src/Space/Shape/HyperCube.hpp \
- ../../OpenFPM_data/src/mathutil.hpp \
+ ../../OpenFPM_data/src/util/mathutil.hpp \
  /usr/include/boost/test/included/unit_test.hpp \
  /usr/include/boost/test/impl/compiler_log_formatter.ipp \
  /usr/include/boost/test/output/compiler_log_formatter.hpp \
@@ -993,12 +1017,11 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/cstdlib.hpp \
  /usr/include/boost/test/unit_test_suite_impl.hpp \
  /usr/include/boost/test/detail/workaround.hpp \
- /usr/include/boost/test/test_observer.hpp /usr/include/c++/4.8.3/list \
- /usr/include/c++/4.8.3/bits/stl_list.h \
- /usr/include/c++/4.8.3/bits/list.tcc \
+ /usr/include/boost/test/test_observer.hpp /usr/include/c++/4.9.2/list \
+ /usr/include/c++/4.9.2/bits/stl_list.h \
+ /usr/include/c++/4.9.2/bits/list.tcc \
  /usr/include/boost/test/framework.hpp \
  /usr/include/boost/test/utils/trivial_singleton.hpp \
- /usr/include/boost/noncopyable.hpp \
  /usr/include/boost/test/utils/basic_cstring/io.hpp \
  /usr/include/boost/test/utils/lazy_ostream.hpp \
  /usr/include/boost/version.hpp /usr/include/boost/test/impl/debug.ipp \
@@ -1044,17 +1067,17 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/numeric/conversion/detail/is_subranged.hpp \
  /usr/include/boost/mpl/multiplies.hpp /usr/include/boost/mpl/times.hpp \
  /usr/include/boost/mpl/aux_/preprocessed/gcc/times.hpp \
- /usr/include/c++/4.8.3/climits \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/limits.h \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/syslimits.h \
+ /usr/include/c++/4.9.2/climits \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/limits.h \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/syslimits.h \
  /usr/include/limits.h /usr/include/bits/posix1_lim.h \
  /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
  /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
  /usr/include/boost/test/detail/unit_test_parameters.hpp \
  /usr/include/boost/test/utils/foreach.hpp /usr/include/boost/timer.hpp \
- /usr/include/c++/4.8.3/ctime /usr/include/c++/4.8.3/set \
- /usr/include/c++/4.8.3/bits/stl_set.h \
- /usr/include/c++/4.8.3/bits/stl_multiset.h \
+ /usr/include/c++/4.9.2/ctime /usr/include/c++/4.9.2/set \
+ /usr/include/c++/4.9.2/bits/stl_set.h \
+ /usr/include/c++/4.9.2/bits/stl_multiset.h \
  /usr/include/boost/test/impl/exception_safety.ipp \
  /usr/include/boost/test/utils/iterator/token_iterator.hpp \
  /usr/include/boost/test/utils/iterator/input_iterator_facade.hpp \
@@ -1064,12 +1087,12 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/test/interaction_based.hpp \
  /usr/include/boost/lexical_cast.hpp \
  /usr/include/boost/detail/lcast_precision.hpp \
- /usr/include/boost/integer_traits.hpp /usr/include/c++/4.8.3/locale \
- /usr/include/c++/4.8.3/bits/locale_facets_nonio.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/time_members.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/libintl.h /usr/include/c++/4.8.3/bits/codecvt.h \
- /usr/include/c++/4.8.3/bits/locale_facets_nonio.tcc \
+ /usr/include/boost/integer_traits.hpp /usr/include/c++/4.9.2/locale \
+ /usr/include/c++/4.9.2/bits/locale_facets_nonio.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/libintl.h /usr/include/c++/4.9.2/bits/codecvt.h \
+ /usr/include/c++/4.9.2/bits/locale_facets_nonio.tcc \
  /usr/include/boost/numeric/conversion/cast.hpp \
  /usr/include/boost/numeric/conversion/converter.hpp \
  /usr/include/boost/numeric/conversion/converter_policies.hpp \
@@ -1083,10 +1106,10 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp \
  /usr/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp \
  /usr/include/boost/math/special_functions/sign.hpp \
- /usr/include/boost/math/tools/config.hpp /usr/include/c++/4.8.3/cfloat \
- /usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/float.h \
+ /usr/include/boost/math/tools/config.hpp /usr/include/c++/4.9.2/cfloat \
+ /usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/float.h \
  /usr/include/boost/math/tools/user.hpp \
- /usr/include/boost/detail/fenv.hpp /usr/include/c++/4.8.3/fenv.h \
+ /usr/include/boost/detail/fenv.hpp /usr/include/c++/4.9.2/fenv.h \
  /usr/include/fenv.h /usr/include/bits/fenv.h \
  /usr/include/boost/math/special_functions/math_fwd.hpp \
  /usr/include/boost/math/special_functions/detail/round_fwd.hpp \
@@ -1135,6 +1158,19 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/config/no_tr1/complex.hpp \
  /usr/include/boost/math/special_functions/detail/fp_traits.hpp \
  /usr/include/boost/detail/endian.hpp \
+ /usr/include/boost/predef/detail/endian_compat.h \
+ /usr/include/boost/predef/other/endian.h \
+ /usr/include/boost/predef/version_number.h \
+ /usr/include/boost/predef/make.h /usr/include/boost/predef/detail/test.h \
+ /usr/include/boost/predef/library/c/gnu.h \
+ /usr/include/boost/predef/library/c/_prefix.h \
+ /usr/include/boost/predef/detail/_cassert.h \
+ /usr/include/boost/predef/os/macos.h /usr/include/boost/predef/os/bsd.h \
+ /usr/include/boost/predef/os/bsd/bsdi.h \
+ /usr/include/boost/predef/os/bsd/dragonfly.h \
+ /usr/include/boost/predef/os/bsd/free.h \
+ /usr/include/boost/predef/os/bsd/open.h \
+ /usr/include/boost/predef/os/bsd/net.h \
  /usr/include/boost/math/special_functions/fpclassify.hpp \
  /usr/include/boost/math/tools/real_cast.hpp \
  /usr/include/boost/range/iterator_range_core.hpp \
@@ -1161,47 +1197,20 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/range/detail/safe_bool.hpp \
  /usr/include/boost/container/container_fwd.hpp \
  /usr/include/boost/integer.hpp /usr/include/boost/integer_fwd.hpp \
- /usr/include/c++/4.8.3/iomanip \
+ /usr/include/c++/4.9.2/iomanip \
  /usr/include/boost/test/impl/execution_monitor.ipp \
  /usr/include/boost/exception/get_error_info.hpp \
  /usr/include/boost/exception/detail/error_info_impl.hpp \
  /usr/include/boost/exception/detail/type_info.hpp \
- /usr/include/boost/units/detail/utility.hpp \
- /usr/include/c++/4.8.3/cxxabi.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cxxabi_tweaks.h \
- /usr/include/boost/algorithm/string/replace.hpp \
- /usr/include/boost/algorithm/string/config.hpp \
- /usr/include/boost/range/iterator_range.hpp \
- /usr/include/boost/range/iterator_range_io.hpp \
- /usr/include/boost/algorithm/string/find_format.hpp \
- /usr/include/c++/4.8.3/deque /usr/include/c++/4.8.3/bits/stl_deque.h \
- /usr/include/c++/4.8.3/bits/deque.tcc \
- /usr/include/boost/range/as_literal.hpp \
- /usr/include/boost/range/detail/str_types.hpp \
- /usr/include/boost/algorithm/string/concept.hpp \
- /usr/include/boost/algorithm/string/detail/find_format.hpp \
- /usr/include/boost/algorithm/string/detail/find_format_store.hpp \
- /usr/include/boost/algorithm/string/detail/replace_storage.hpp \
- /usr/include/boost/algorithm/string/sequence_traits.hpp \
- /usr/include/boost/algorithm/string/yes_no_type.hpp \
- /usr/include/boost/algorithm/string/detail/sequence.hpp \
- /usr/include/boost/algorithm/string/detail/find_format_all.hpp \
- /usr/include/boost/algorithm/string/finder.hpp \
- /usr/include/boost/algorithm/string/constants.hpp \
- /usr/include/boost/algorithm/string/detail/finder.hpp \
- /usr/include/boost/algorithm/string/compare.hpp \
- /usr/include/boost/algorithm/string/formatter.hpp \
- /usr/include/boost/algorithm/string/detail/formatter.hpp \
- /usr/include/boost/algorithm/string/detail/util.hpp \
  /usr/include/boost/exception/current_exception_cast.hpp \
- /usr/include/c++/4.8.3/cassert /usr/include/c++/4.8.3/cstdarg \
+ /usr/include/c++/4.9.2/cassert /usr/include/c++/4.9.2/cstdarg \
  /usr/include/setjmp.h /usr/include/boost/test/impl/interaction_based.ipp \
  /usr/include/boost/test/mock_object.hpp \
  /usr/include/boost/test/impl/logged_expectations.ipp \
- /usr/include/c++/4.8.3/fstream \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/basic_file.h \
- /usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++io.h \
- /usr/include/c++/4.8.3/bits/fstream.tcc \
+ /usr/include/c++/4.9.2/fstream \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/basic_file.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++io.h \
+ /usr/include/c++/4.9.2/bits/fstream.tcc \
  /usr/include/boost/test/impl/plain_report_formatter.ipp \
  /usr/include/boost/test/output/plain_report_formatter.hpp \
  /usr/include/boost/test/utils/custom_manip.hpp \
@@ -1285,11 +1294,25 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/test/impl/xml_report_formatter.ipp \
  /usr/include/boost/test/unit_test.hpp \
  /usr/include/boost/test/unit_test_suite.hpp Grid/grid_dist_id.hpp \
+ /usr/include/c++/4.9.2/unordered_map \
+ /usr/include/c++/4.9.2/bits/hashtable.h \
+ /usr/include/c++/4.9.2/bits/hashtable_policy.h \
+ /usr/include/c++/4.9.2/bits/unordered_map.h \
  ../../OpenFPM_vcluster/src/VCluster.hpp \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_util.hpp \
  ../../OpenFPM_vcluster/src/VCluster_object.hpp \
  ../../OpenFPM_vcluster/src/VCluster_object_array.hpp \
  ../../OpenFPM_vcluster/src/VObject.hpp \
- ../../OpenFPM_vcluster/src/MPI_IallreduceW.hpp \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IallreduceW.hpp \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IrecvW.hpp \
+ ../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IsendW.hpp \
+ ../../OpenFPM_data/src/util/check_no_pointers.hpp \
+ ../../OpenFPM_data/src/util/common.hpp \
+ ../../OpenFPM_data/src/util/util_debug.hpp \
+ /usr/include/c++/4.9.2/cxxabi.h \
+ /usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h \
+ ../../OpenFPM_vcluster/src/util/Vcluster_log.hpp \
+ ../../OpenFPM_data/src/timer.hpp \
  ../../OpenFPM_data/src/Space/SpaceBox.hpp \
  ../../OpenFPM_data/src/Space/Shape/Point.hpp \
  ../../OpenFPM_data/src/Space/Shape/Box.hpp \
@@ -1349,6 +1372,8 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/iostreams/detail/wrap_unwrap.hpp \
  /usr/include/boost/iostreams/detail/enable_if_stream.hpp \
  /usr/include/boost/iostreams/traits_fwd.hpp \
+ /usr/include/boost/range/iterator_range.hpp \
+ /usr/include/boost/range/iterator_range_io.hpp \
  /usr/include/boost/iostreams/detail/streambuf.hpp \
  /usr/include/boost/iostreams/operations_fwd.hpp \
  /usr/include/boost/iostreams/detail/adapter/non_blocking_adapter.hpp \
@@ -1369,6 +1394,13 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  /usr/include/boost/iostreams/detail/path.hpp \
  /usr/include/boost/config/abi_prefix.hpp \
  /usr/include/boost/config/abi_suffix.hpp \
+ ../../OpenFPM_vcluster/src/Packer.hpp \
+ ../../OpenFPM_data/src/Grid/util.hpp \
+ ../../OpenFPM_data/src/Vector/util.hpp \
+ ../../OpenFPM_vcluster/src/Pack_stat.hpp \
+ ../../OpenFPM_vcluster/src/Pack_selector.hpp \
+ ../../OpenFPM_vcluster/src/Unpacker.hpp \
+ ../../OpenFPM_devices/src/memory/PtrMemory.hpp \
  ../../OpenFPM_data/src/Point_test.hpp \
  ../../OpenFPM_data/src/base_type.hpp \
  ../../OpenFPM_data/src/Point_orig.hpp \
@@ -1377,10 +1409,6 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  ../../OpenFPM_data/src/global_const.hpp SubdomainGraphNodes.hpp \
  metis_util.hpp ../../metis_install/include/metis.h \
  /usr/include/inttypes.h dec_optimizer.hpp \
- /usr/include/c++/4.8.3/unordered_map \
- /usr/include/c++/4.8.3/bits/hashtable.h \
- /usr/include/c++/4.8.3/bits/hashtable_policy.h \
- /usr/include/c++/4.8.3/bits/unordered_map.h \
  ../../OpenFPM_data/src/NN/CellList/CellList.hpp \
  ../../OpenFPM_data/src/NN/CellList/CellDecomposer.hpp \
  ../../OpenFPM_data/src/NN/CellList/CellListFast.hpp \
@@ -1399,7 +1427,6 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
  Vector/vector_dist_key.hpp \
  ../../OpenFPM_devices/src/memory/PreAllocHeapMemory.hpp \
  ../../OpenFPM_devices/src/memory/HeapMemory.hpp \
- ../../OpenFPM_devices/src/memory/PtrMemory.hpp \
  ../../OpenFPM_IO/src/CSVWriter.hpp \
  ../../OpenFPM_IO/src/csv_multiarray.hpp \
  Decomposition/CartDecomposition_unit_test.hpp \
@@ -1407,13 +1434,13 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/stdc-predef.h:
 
-/usr/include/c++/4.8.3/iostream:
+/usr/include/c++/4.9.2/iostream:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++config.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++config.h:
 
 /usr/include/bits/wordsize.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/os_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/os_defines.h:
 
 /usr/include/features.h:
 
@@ -1423,89 +1450,93 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/gnu/stubs-64.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cpu_defines.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cpu_defines.h:
 
-/usr/include/c++/4.8.3/ostream:
+/usr/include/c++/4.9.2/ostream:
 
-/usr/include/c++/4.8.3/ios:
+/usr/include/c++/4.9.2/ios:
 
-/usr/include/c++/4.8.3/iosfwd:
+/usr/include/c++/4.9.2/iosfwd:
 
-/usr/include/c++/4.8.3/bits/stringfwd.h:
+/usr/include/c++/4.9.2/bits/stringfwd.h:
 
-/usr/include/c++/4.8.3/bits/memoryfwd.h:
+/usr/include/c++/4.9.2/bits/memoryfwd.h:
 
-/usr/include/c++/4.8.3/bits/postypes.h:
+/usr/include/c++/4.9.2/bits/postypes.h:
 
-/usr/include/c++/4.8.3/cwchar:
+/usr/include/c++/4.9.2/cwchar:
 
 /usr/include/wchar.h:
 
 /usr/include/stdio.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdarg.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdarg.h:
 
 /usr/include/bits/wchar.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stddef.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h:
 
 /usr/include/xlocale.h:
 
-/usr/include/c++/4.8.3/exception:
+/usr/include/c++/4.9.2/exception:
 
-/usr/include/c++/4.8.3/bits/atomic_lockfree_defines.h:
+/usr/include/c++/4.9.2/bits/atomic_lockfree_defines.h:
 
-/usr/include/c++/4.8.3/bits/exception_ptr.h:
+/usr/include/c++/4.9.2/bits/exception_ptr.h:
 
-/usr/include/c++/4.8.3/bits/exception_defines.h:
+/usr/include/c++/4.9.2/bits/exception_defines.h:
 
-/usr/include/c++/4.8.3/bits/nested_exception.h:
+/usr/include/c++/4.9.2/bits/nested_exception.h:
 
-/usr/include/c++/4.8.3/bits/char_traits.h:
+/usr/include/c++/4.9.2/bits/char_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_algobase.h:
+/usr/include/c++/4.9.2/bits/stl_algobase.h:
 
-/usr/include/c++/4.8.3/bits/functexcept.h:
+/usr/include/c++/4.9.2/bits/functexcept.h:
 
-/usr/include/c++/4.8.3/bits/cpp_type_traits.h:
+/usr/include/c++/4.9.2/bits/cpp_type_traits.h:
 
-/usr/include/c++/4.8.3/ext/type_traits.h:
+/usr/include/c++/4.9.2/ext/type_traits.h:
 
-/usr/include/c++/4.8.3/ext/numeric_traits.h:
+/usr/include/c++/4.9.2/ext/numeric_traits.h:
 
-/usr/include/c++/4.8.3/bits/stl_pair.h:
+/usr/include/c++/4.9.2/bits/stl_pair.h:
 
-/usr/include/c++/4.8.3/bits/move.h:
+/usr/include/c++/4.9.2/bits/move.h:
 
-/usr/include/c++/4.8.3/bits/concept_check.h:
+/usr/include/c++/4.9.2/bits/concept_check.h:
 
-/usr/include/c++/4.8.3/type_traits:
+/usr/include/c++/4.9.2/type_traits:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_types.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_types.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator_base_funcs.h:
+/usr/include/c++/4.9.2/bits/stl_iterator_base_funcs.h:
 
-/usr/include/c++/4.8.3/debug/debug.h:
+/usr/include/c++/4.9.2/debug/debug.h:
 
-/usr/include/c++/4.8.3/bits/stl_iterator.h:
+/usr/include/c++/4.9.2/bits/stl_iterator.h:
 
-/usr/include/c++/4.8.3/cstdint:
+/usr/include/c++/4.9.2/bits/ptr_traits.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/stdint.h:
+/usr/include/c++/4.9.2/bits/predefined_ops.h:
+
+/usr/include/c++/4.9.2/cstdint:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stdint.h:
 
 /usr/include/stdint.h:
 
-/usr/include/c++/4.8.3/bits/localefwd.h:
+/usr/include/c++/4.9.2/bits/localefwd.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++locale.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++locale.h:
 
-/usr/include/c++/4.8.3/clocale:
+/usr/include/c++/4.9.2/clocale:
 
 /usr/include/locale.h:
 
 /usr/include/bits/locale.h:
 
-/usr/include/c++/4.8.3/cctype:
+/usr/include/c++/4.9.2/cctype:
 
 /usr/include/ctype.h:
 
@@ -1521,13 +1552,13 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/bits/byteswap-16.h:
 
-/usr/include/c++/4.8.3/bits/ios_base.h:
+/usr/include/c++/4.9.2/bits/ios_base.h:
 
-/usr/include/c++/4.8.3/ext/atomicity.h:
+/usr/include/c++/4.9.2/ext/atomicity.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/gthr-default.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/gthr-default.h:
 
 /usr/include/pthread.h:
 
@@ -1545,37 +1576,37 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/bits/setjmp.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/atomic_word.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/atomic_word.h:
 
-/usr/include/c++/4.8.3/bits/locale_classes.h:
+/usr/include/c++/4.9.2/bits/locale_classes.h:
 
-/usr/include/c++/4.8.3/string:
+/usr/include/c++/4.9.2/string:
 
-/usr/include/c++/4.8.3/bits/allocator.h:
+/usr/include/c++/4.9.2/bits/allocator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++allocator.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++allocator.h:
 
-/usr/include/c++/4.8.3/ext/new_allocator.h:
+/usr/include/c++/4.9.2/ext/new_allocator.h:
 
-/usr/include/c++/4.8.3/new:
+/usr/include/c++/4.9.2/new:
 
-/usr/include/c++/4.8.3/bits/ostream_insert.h:
+/usr/include/c++/4.9.2/bits/ostream_insert.h:
 
-/usr/include/c++/4.8.3/bits/cxxabi_forced.h:
+/usr/include/c++/4.9.2/bits/cxxabi_forced.h:
 
-/usr/include/c++/4.8.3/bits/stl_function.h:
+/usr/include/c++/4.9.2/bits/stl_function.h:
 
-/usr/include/c++/4.8.3/backward/binders.h:
+/usr/include/c++/4.9.2/backward/binders.h:
 
-/usr/include/c++/4.8.3/bits/range_access.h:
+/usr/include/c++/4.9.2/bits/range_access.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.h:
+/usr/include/c++/4.9.2/bits/basic_string.h:
 
-/usr/include/c++/4.8.3/initializer_list:
+/usr/include/c++/4.9.2/initializer_list:
 
-/usr/include/c++/4.8.3/ext/string_conversions.h:
+/usr/include/c++/4.9.2/ext/string_conversions.h:
 
-/usr/include/c++/4.8.3/cstdlib:
+/usr/include/c++/4.9.2/cstdlib:
 
 /usr/include/stdlib.h:
 
@@ -1597,7 +1628,7 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/bits/stdlib-float.h:
 
-/usr/include/c++/4.8.3/cstdio:
+/usr/include/c++/4.9.2/cstdio:
 
 /usr/include/libio.h:
 
@@ -1607,7 +1638,7 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/bits/sys_errlist.h:
 
-/usr/include/c++/4.8.3/cerrno:
+/usr/include/c++/4.9.2/cerrno:
 
 /usr/include/errno.h:
 
@@ -1621,41 +1652,41 @@ pdata-main.o: main.cpp /usr/include/stdc-predef.h \
 
 /usr/include/asm-generic/errno-base.h:
 
-/usr/include/c++/4.8.3/bits/functional_hash.h:
+/usr/include/c++/4.9.2/bits/functional_hash.h:
 
-/usr/include/c++/4.8.3/bits/hash_bytes.h:
+/usr/include/c++/4.9.2/bits/hash_bytes.h:
 
-/usr/include/c++/4.8.3/bits/basic_string.tcc:
+/usr/include/c++/4.9.2/bits/basic_string.tcc:
 
-/usr/include/c++/4.8.3/bits/locale_classes.tcc:
+/usr/include/c++/4.9.2/bits/locale_classes.tcc:
 
-/usr/include/c++/4.8.3/streambuf:
+/usr/include/c++/4.9.2/streambuf:
 
-/usr/include/c++/4.8.3/bits/streambuf.tcc:
+/usr/include/c++/4.9.2/bits/streambuf.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.h:
+/usr/include/c++/4.9.2/bits/basic_ios.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.h:
+/usr/include/c++/4.9.2/bits/locale_facets.h:
 
-/usr/include/c++/4.8.3/cwctype:
+/usr/include/c++/4.9.2/cwctype:
 
 /usr/include/wctype.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_base.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_base.h:
 
-/usr/include/c++/4.8.3/bits/streambuf_iterator.h:
+/usr/include/c++/4.9.2/bits/streambuf_iterator.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/ctype_inline.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/ctype_inline.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets.tcc:
+/usr/include/c++/4.9.2/bits/locale_facets.tcc:
 
-/usr/include/c++/4.8.3/bits/basic_ios.tcc:
+/usr/include/c++/4.9.2/bits/basic_ios.tcc:
 
-/usr/include/c++/4.8.3/bits/ostream.tcc:
+/usr/include/c++/4.9.2/bits/ostream.tcc:
 
-/usr/include/c++/4.8.3/istream:
+/usr/include/c++/4.9.2/istream:
 
-/usr/include/c++/4.8.3/bits/istream.tcc:
+/usr/include/c++/4.9.2/bits/istream.tcc:
 
 ../src/config/config.h:
 
@@ -1701,13 +1732,13 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/config/select_stdlib_config.hpp:
 
-/usr/include/c++/4.8.3/cstddef:
+/usr/include/c++/4.9.2/cstddef:
 
 /usr/include/boost/config/no_tr1/utility.hpp:
 
-/usr/include/c++/4.8.3/utility:
+/usr/include/c++/4.9.2/utility:
 
-/usr/include/c++/4.8.3/bits/stl_relops.h:
+/usr/include/c++/4.9.2/bits/stl_relops.h:
 
 /usr/include/boost/config/stdlib/libstdcpp3.hpp:
 
@@ -2661,11 +2692,7 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/fusion/container/map/map_fwd.hpp:
 
-/usr/include/boost/fusion/container/map/limits.hpp:
-
-/usr/include/boost/fusion/container/map/detail/preprocessed/map_fwd.hpp:
-
-/usr/include/boost/fusion/container/map/detail/preprocessed/map10_fwd.hpp:
+/usr/include/boost/fusion/container/map/detail/map_impl.hpp:
 
 /usr/include/boost/fusion/container/set/set_fwd.hpp:
 
@@ -3003,9 +3030,9 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/type_traits/is_complex.hpp:
 
-/usr/include/c++/4.8.3/complex:
+/usr/include/c++/4.9.2/complex:
 
-/usr/include/c++/4.8.3/cmath:
+/usr/include/c++/4.9.2/cmath:
 
 /usr/include/math.h:
 
@@ -3023,12 +3050,16 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/bits/mathcalls.h:
 
-/usr/include/c++/4.8.3/sstream:
+/usr/include/c++/4.9.2/sstream:
 
-/usr/include/c++/4.8.3/bits/sstream.tcc:
+/usr/include/c++/4.9.2/bits/sstream.tcc:
 
 /usr/include/boost/type_traits/is_compound.hpp:
 
+/usr/include/boost/type_traits/is_copy_constructible.hpp:
+
+/usr/include/boost/noncopyable.hpp:
+
 /usr/include/boost/type_traits/is_floating_point.hpp:
 
 /usr/include/boost/type_traits/is_member_object_pointer.hpp:
@@ -3093,99 +3124,127 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/utility/swap.hpp:
 
-/usr/include/c++/4.8.3/algorithm:
+/usr/include/c++/4.9.2/algorithm:
+
+/usr/include/c++/4.9.2/bits/stl_algo.h:
 
-/usr/include/c++/4.8.3/bits/stl_algo.h:
+/usr/include/c++/4.9.2/bits/algorithmfwd.h:
 
-/usr/include/c++/4.8.3/bits/algorithmfwd.h:
+/usr/include/c++/4.9.2/bits/stl_heap.h:
 
-/usr/include/c++/4.8.3/bits/stl_heap.h:
+/usr/include/c++/4.9.2/bits/stl_tempbuf.h:
 
-/usr/include/c++/4.8.3/bits/stl_tempbuf.h:
+/usr/include/c++/4.9.2/bits/stl_construct.h:
 
-/usr/include/c++/4.8.3/bits/stl_construct.h:
+/usr/include/c++/4.9.2/ext/alloc_traits.h:
 
-/usr/include/c++/4.8.3/ext/alloc_traits.h:
+/usr/include/c++/4.9.2/bits/alloc_traits.h:
 
-/usr/include/c++/4.8.3/bits/alloc_traits.h:
+/usr/include/c++/4.9.2/random:
 
-/usr/include/c++/4.8.3/bits/ptr_traits.h:
+/usr/include/c++/4.9.2/limits:
 
-/usr/include/c++/4.8.3/random:
+/usr/include/c++/4.9.2/bits/random.h:
 
-/usr/include/c++/4.8.3/limits:
+/usr/include/c++/4.9.2/vector:
 
-/usr/include/c++/4.8.3/bits/random.h:
+/usr/include/c++/4.9.2/bits/stl_uninitialized.h:
 
-/usr/include/c++/4.8.3/vector:
+/usr/include/c++/4.9.2/bits/stl_vector.h:
 
-/usr/include/c++/4.8.3/bits/stl_uninitialized.h:
+/usr/include/c++/4.9.2/bits/stl_bvector.h:
 
-/usr/include/c++/4.8.3/bits/stl_vector.h:
+/usr/include/c++/4.9.2/bits/vector.tcc:
 
-/usr/include/c++/4.8.3/bits/stl_bvector.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/opt_random.h:
 
-/usr/include/c++/4.8.3/bits/vector.tcc:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/x86intrin.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/opt_random.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ia32intrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/x86intrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/ia32intrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xmmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm_malloc.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/emmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/mm_malloc.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/pmmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/emmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tmmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/pmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/ammintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/tmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/smmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/smmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/popcntintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/popcntintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/wmmintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/wmmintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/immintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/immintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avxintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/avxintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx2intrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/fxsrintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512fintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512erintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/xsaveoptintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512pfintrin.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/adxintrin.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512cdintrin.h:
 
-/usr/include/c++/4.8.3/bits/random.tcc:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/shaintrin.h:
 
-/usr/include/c++/4.8.3/numeric:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lzcntintrin.h:
 
-/usr/include/c++/4.8.3/bits/stl_numeric.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmiintrin.h:
 
-/usr/include/c++/4.8.3/functional:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/bmi2intrin.h:
 
-/usr/include/c++/4.8.3/typeinfo:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fmaintrin.h:
 
-/usr/include/c++/4.8.3/tuple:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/f16cintrin.h:
 
-/usr/include/c++/4.8.3/array:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rtmintrin.h:
 
-/usr/include/c++/4.8.3/stdexcept:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xtestintrin.h:
 
-/usr/include/c++/4.8.3/bits/uses_allocator.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/mm3dnow.h:
 
-/usr/include/c++/4.8.3/cstring:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/prfchwintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fma4intrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xopintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/lwpintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/tbmintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/rdseedintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/fxsrintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/xsaveoptintrin.h:
+
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/adxintrin.h:
+
+/usr/include/c++/4.9.2/bits/random.tcc:
+
+/usr/include/c++/4.9.2/numeric:
+
+/usr/include/c++/4.9.2/bits/stl_numeric.h:
+
+/usr/include/c++/4.9.2/cstring:
 
 /usr/include/string.h:
 
-../../OpenFPM_data/src/memory_conf.hpp:
+../../OpenFPM_data/src/memory_ly/memory_conf.hpp:
 
 ../../OpenFPM_data/src/util/variadic_to_vmpl.hpp:
 
@@ -3201,9 +3260,9 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp:
 
-../../OpenFPM_data/src/t_to_memory_c.hpp:
+../../OpenFPM_data/src/memory_ly/t_to_memory_c.hpp:
 
-../../OpenFPM_data/src/memory_c.hpp:
+../../OpenFPM_data/src/memory_ly/memory_c.hpp:
 
 /usr/include/boost/shared_ptr.hpp:
 
@@ -3211,19 +3270,33 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/config/no_tr1/memory.hpp:
 
-/usr/include/c++/4.8.3/memory:
+/usr/include/c++/4.9.2/memory:
+
+/usr/include/c++/4.9.2/bits/stl_raw_storage_iter.h:
+
+/usr/include/c++/4.9.2/typeinfo:
 
-/usr/include/c++/4.8.3/bits/stl_raw_storage_iter.h:
+/usr/include/c++/4.9.2/ext/concurrence.h:
 
-/usr/include/c++/4.8.3/ext/concurrence.h:
+/usr/include/c++/4.9.2/bits/uses_allocator.h:
 
-/usr/include/c++/4.8.3/bits/unique_ptr.h:
+/usr/include/c++/4.9.2/functional:
 
-/usr/include/c++/4.8.3/bits/shared_ptr.h:
+/usr/include/c++/4.9.2/tuple:
 
-/usr/include/c++/4.8.3/bits/shared_ptr_base.h:
+/usr/include/c++/4.9.2/array:
 
-/usr/include/c++/4.8.3/backward/auto_ptr.h:
+/usr/include/c++/4.9.2/stdexcept:
+
+/usr/include/c++/4.9.2/bits/unique_ptr.h:
+
+/usr/include/c++/4.9.2/bits/shared_ptr.h:
+
+/usr/include/c++/4.9.2/bits/shared_ptr_base.h:
+
+/usr/include/c++/4.9.2/ext/aligned_buffer.h:
+
+/usr/include/c++/4.9.2/backward/auto_ptr.h:
 
 /usr/include/boost/assert.hpp:
 
@@ -3283,9 +3356,9 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/detail/iterator.hpp:
 
-/usr/include/c++/4.8.3/iterator:
+/usr/include/c++/4.9.2/iterator:
 
-/usr/include/c++/4.8.3/bits/stream_iterator.h:
+/usr/include/c++/4.9.2/bits/stream_iterator.h:
 
 /usr/include/boost/functional/hash_fwd.hpp:
 
@@ -3385,26 +3458,28 @@ Graph/CartesianGraphFactory.hpp:
 
 ../../OpenFPM_data/src/util/ct_array.hpp:
 
-../../OpenFPM_data/src/memory_array.hpp:
-
-../../OpenFPM_data/src/memory.hpp:
+../../OpenFPM_data/src/memory_ly/memory_array.hpp:
 
-../../OpenFPM_data/src/memory.hpp:
+../../OpenFPM_devices/src/memory/memory.hpp:
 
 ../../OpenFPM_data/src/util/meta_copy.hpp:
 
 ../../OpenFPM_data/src/Memleak_check.hpp:
 
-/usr/include/c++/4.8.3/map:
+/usr/include/c++/4.9.2/map:
 
-/usr/include/c++/4.8.3/bits/stl_tree.h:
+/usr/include/c++/4.9.2/bits/stl_tree.h:
 
-/usr/include/c++/4.8.3/bits/stl_map.h:
+/usr/include/c++/4.9.2/bits/stl_map.h:
 
-/usr/include/c++/4.8.3/bits/stl_multimap.h:
+/usr/include/c++/4.9.2/bits/stl_multimap.h:
 
 ../../OpenFPM_data/src/util/for_each_ref.hpp:
 
+../../OpenFPM_data/src/Grid/util.hpp:
+
+../../OpenFPM_data/src/util/common.hpp:
+
 ../../OpenFPM_data/src/Grid/grid_sm.hpp:
 
 /usr/include/boost/shared_array.hpp:
@@ -3433,13 +3508,13 @@ Graph/CartesianGraphFactory.hpp:
 
 ../../OpenFPM_data/src/Grid/Encap.hpp:
 
-../../OpenFPM_data/src/memory_array.hpp:
+../../OpenFPM_data/src/memory_ly/memory_array.hpp:
 
 ../../OpenFPM_devices/src/memory/HeapMemory.hpp:
 
-../../OpenFPM_data/src/Vector/vect_isel.hpp:
+../../OpenFPM_devices/src/memory/memory.hpp:
 
-../../OpenFPM_data/src/common.hpp:
+../../OpenFPM_data/src/Vector/vect_isel.hpp:
 
 ../../OpenFPM_data/src/util/object_s_di.hpp:
 
@@ -3447,6 +3522,8 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/fusion/include/size.hpp:
 
+../../OpenFPM_data/src/Vector/util.hpp:
+
 /home/i-bird/MPI/include/mpi.h:
 
 /home/i-bird/MPI/include/mpi_portable_platform.h:
@@ -3521,7 +3598,7 @@ Graph/CartesianGraphFactory.hpp:
 
 ../../OpenFPM_data/src/Space/Shape/HyperCube.hpp:
 
-../../OpenFPM_data/src/mathutil.hpp:
+../../OpenFPM_data/src/util/mathutil.hpp:
 
 /usr/include/boost/test/included/unit_test.hpp:
 
@@ -3573,18 +3650,16 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/test/test_observer.hpp:
 
-/usr/include/c++/4.8.3/list:
+/usr/include/c++/4.9.2/list:
 
-/usr/include/c++/4.8.3/bits/stl_list.h:
+/usr/include/c++/4.9.2/bits/stl_list.h:
 
-/usr/include/c++/4.8.3/bits/list.tcc:
+/usr/include/c++/4.9.2/bits/list.tcc:
 
 /usr/include/boost/test/framework.hpp:
 
 /usr/include/boost/test/utils/trivial_singleton.hpp:
 
-/usr/include/boost/noncopyable.hpp:
-
 /usr/include/boost/test/utils/basic_cstring/io.hpp:
 
 /usr/include/boost/test/utils/lazy_ostream.hpp:
@@ -3699,11 +3774,11 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/mpl/aux_/preprocessed/gcc/times.hpp:
 
-/usr/include/c++/4.8.3/climits:
+/usr/include/c++/4.9.2/climits:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/limits.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/limits.h:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/syslimits.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/syslimits.h:
 
 /usr/include/limits.h:
 
@@ -3723,13 +3798,13 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/timer.hpp:
 
-/usr/include/c++/4.8.3/ctime:
+/usr/include/c++/4.9.2/ctime:
 
-/usr/include/c++/4.8.3/set:
+/usr/include/c++/4.9.2/set:
 
-/usr/include/c++/4.8.3/bits/stl_set.h:
+/usr/include/c++/4.9.2/bits/stl_set.h:
 
-/usr/include/c++/4.8.3/bits/stl_multiset.h:
+/usr/include/c++/4.9.2/bits/stl_multiset.h:
 
 /usr/include/boost/test/impl/exception_safety.ipp:
 
@@ -3751,19 +3826,19 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/integer_traits.hpp:
 
-/usr/include/c++/4.8.3/locale:
+/usr/include/c++/4.9.2/locale:
 
-/usr/include/c++/4.8.3/bits/locale_facets_nonio.h:
+/usr/include/c++/4.9.2/bits/locale_facets_nonio.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/time_members.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/time_members.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/messages_members.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/messages_members.h:
 
 /usr/include/libintl.h:
 
-/usr/include/c++/4.8.3/bits/codecvt.h:
+/usr/include/c++/4.9.2/bits/codecvt.h:
 
-/usr/include/c++/4.8.3/bits/locale_facets_nonio.tcc:
+/usr/include/c++/4.9.2/bits/locale_facets_nonio.tcc:
 
 /usr/include/boost/numeric/conversion/cast.hpp:
 
@@ -3793,15 +3868,15 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/math/tools/config.hpp:
 
-/usr/include/c++/4.8.3/cfloat:
+/usr/include/c++/4.9.2/cfloat:
 
-/usr/lib/gcc/x86_64-redhat-linux/4.8.3/include/float.h:
+/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/float.h:
 
 /usr/include/boost/math/tools/user.hpp:
 
 /usr/include/boost/detail/fenv.hpp:
 
-/usr/include/c++/4.8.3/fenv.h:
+/usr/include/c++/4.9.2/fenv.h:
 
 /usr/include/fenv.h:
 
@@ -3909,6 +3984,36 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/detail/endian.hpp:
 
+/usr/include/boost/predef/detail/endian_compat.h:
+
+/usr/include/boost/predef/other/endian.h:
+
+/usr/include/boost/predef/version_number.h:
+
+/usr/include/boost/predef/make.h:
+
+/usr/include/boost/predef/detail/test.h:
+
+/usr/include/boost/predef/library/c/gnu.h:
+
+/usr/include/boost/predef/library/c/_prefix.h:
+
+/usr/include/boost/predef/detail/_cassert.h:
+
+/usr/include/boost/predef/os/macos.h:
+
+/usr/include/boost/predef/os/bsd.h:
+
+/usr/include/boost/predef/os/bsd/bsdi.h:
+
+/usr/include/boost/predef/os/bsd/dragonfly.h:
+
+/usr/include/boost/predef/os/bsd/free.h:
+
+/usr/include/boost/predef/os/bsd/open.h:
+
+/usr/include/boost/predef/os/bsd/net.h:
+
 /usr/include/boost/math/special_functions/fpclassify.hpp:
 
 /usr/include/boost/math/tools/real_cast.hpp:
@@ -3969,7 +4074,7 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/integer_fwd.hpp:
 
-/usr/include/c++/4.8.3/iomanip:
+/usr/include/c++/4.9.2/iomanip:
 
 /usr/include/boost/test/impl/execution_monitor.ipp:
 
@@ -3979,67 +4084,11 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/exception/detail/type_info.hpp:
 
-/usr/include/boost/units/detail/utility.hpp:
-
-/usr/include/c++/4.8.3/cxxabi.h:
-
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/cxxabi_tweaks.h:
-
-/usr/include/boost/algorithm/string/replace.hpp:
-
-/usr/include/boost/algorithm/string/config.hpp:
-
-/usr/include/boost/range/iterator_range.hpp:
-
-/usr/include/boost/range/iterator_range_io.hpp:
-
-/usr/include/boost/algorithm/string/find_format.hpp:
-
-/usr/include/c++/4.8.3/deque:
-
-/usr/include/c++/4.8.3/bits/stl_deque.h:
-
-/usr/include/c++/4.8.3/bits/deque.tcc:
-
-/usr/include/boost/range/as_literal.hpp:
-
-/usr/include/boost/range/detail/str_types.hpp:
-
-/usr/include/boost/algorithm/string/concept.hpp:
-
-/usr/include/boost/algorithm/string/detail/find_format.hpp:
-
-/usr/include/boost/algorithm/string/detail/find_format_store.hpp:
-
-/usr/include/boost/algorithm/string/detail/replace_storage.hpp:
-
-/usr/include/boost/algorithm/string/sequence_traits.hpp:
-
-/usr/include/boost/algorithm/string/yes_no_type.hpp:
-
-/usr/include/boost/algorithm/string/detail/sequence.hpp:
-
-/usr/include/boost/algorithm/string/detail/find_format_all.hpp:
-
-/usr/include/boost/algorithm/string/finder.hpp:
-
-/usr/include/boost/algorithm/string/constants.hpp:
-
-/usr/include/boost/algorithm/string/detail/finder.hpp:
-
-/usr/include/boost/algorithm/string/compare.hpp:
-
-/usr/include/boost/algorithm/string/formatter.hpp:
-
-/usr/include/boost/algorithm/string/detail/formatter.hpp:
-
-/usr/include/boost/algorithm/string/detail/util.hpp:
-
 /usr/include/boost/exception/current_exception_cast.hpp:
 
-/usr/include/c++/4.8.3/cassert:
+/usr/include/c++/4.9.2/cassert:
 
-/usr/include/c++/4.8.3/cstdarg:
+/usr/include/c++/4.9.2/cstdarg:
 
 /usr/include/setjmp.h:
 
@@ -4049,13 +4098,13 @@ Graph/CartesianGraphFactory.hpp:
 
 /usr/include/boost/test/impl/logged_expectations.ipp:
 
-/usr/include/c++/4.8.3/fstream:
+/usr/include/c++/4.9.2/fstream:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/basic_file.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/basic_file.h:
 
-/usr/include/c++/4.8.3/x86_64-redhat-linux/bits/c++io.h:
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/c++io.h:
 
-/usr/include/c++/4.8.3/bits/fstream.tcc:
+/usr/include/c++/4.9.2/bits/fstream.tcc:
 
 /usr/include/boost/test/impl/plain_report_formatter.ipp:
 
@@ -4239,15 +4288,43 @@ Graph/CartesianGraphFactory.hpp:
 
 Grid/grid_dist_id.hpp:
 
+/usr/include/c++/4.9.2/unordered_map:
+
+/usr/include/c++/4.9.2/bits/hashtable.h:
+
+/usr/include/c++/4.9.2/bits/hashtable_policy.h:
+
+/usr/include/c++/4.9.2/bits/unordered_map.h:
+
 ../../OpenFPM_vcluster/src/VCluster.hpp:
 
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_util.hpp:
+
 ../../OpenFPM_vcluster/src/VCluster_object.hpp:
 
 ../../OpenFPM_vcluster/src/VCluster_object_array.hpp:
 
 ../../OpenFPM_vcluster/src/VObject.hpp:
 
-../../OpenFPM_vcluster/src/MPI_IallreduceW.hpp:
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IallreduceW.hpp:
+
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IrecvW.hpp:
+
+../../OpenFPM_vcluster/src/MPI_wrapper/MPI_IsendW.hpp:
+
+../../OpenFPM_data/src/util/check_no_pointers.hpp:
+
+../../OpenFPM_data/src/util/common.hpp:
+
+../../OpenFPM_data/src/util/util_debug.hpp:
+
+/usr/include/c++/4.9.2/cxxabi.h:
+
+/usr/include/c++/4.9.2/x86_64-redhat-linux/bits/cxxabi_tweaks.h:
+
+../../OpenFPM_vcluster/src/util/Vcluster_log.hpp:
+
+../../OpenFPM_data/src/timer.hpp:
 
 ../../OpenFPM_data/src/Space/SpaceBox.hpp:
 
@@ -4369,6 +4446,10 @@ Grid/grid_dist_key.hpp:
 
 /usr/include/boost/iostreams/traits_fwd.hpp:
 
+/usr/include/boost/range/iterator_range.hpp:
+
+/usr/include/boost/range/iterator_range_io.hpp:
+
 /usr/include/boost/iostreams/detail/streambuf.hpp:
 
 /usr/include/boost/iostreams/operations_fwd.hpp:
@@ -4409,6 +4490,20 @@ Grid/grid_dist_key.hpp:
 
 /usr/include/boost/config/abi_suffix.hpp:
 
+../../OpenFPM_vcluster/src/Packer.hpp:
+
+../../OpenFPM_data/src/Grid/util.hpp:
+
+../../OpenFPM_data/src/Vector/util.hpp:
+
+../../OpenFPM_vcluster/src/Pack_stat.hpp:
+
+../../OpenFPM_vcluster/src/Pack_selector.hpp:
+
+../../OpenFPM_vcluster/src/Unpacker.hpp:
+
+../../OpenFPM_devices/src/memory/PtrMemory.hpp:
+
 ../../OpenFPM_data/src/Point_test.hpp:
 
 ../../OpenFPM_data/src/base_type.hpp:
@@ -4433,14 +4528,6 @@ metis_util.hpp:
 
 dec_optimizer.hpp:
 
-/usr/include/c++/4.8.3/unordered_map:
-
-/usr/include/c++/4.8.3/bits/hashtable.h:
-
-/usr/include/c++/4.8.3/bits/hashtable_policy.h:
-
-/usr/include/c++/4.8.3/bits/unordered_map.h:
-
 ../../OpenFPM_data/src/NN/CellList/CellList.hpp:
 
 ../../OpenFPM_data/src/NN/CellList/CellDecomposer.hpp:
@@ -4495,8 +4582,6 @@ Vector/vector_dist_key.hpp:
 
 ../../OpenFPM_devices/src/memory/HeapMemory.hpp:
 
-../../OpenFPM_devices/src/memory/PtrMemory.hpp:
-
 ../../OpenFPM_IO/src/CSVWriter.hpp:
 
 ../../OpenFPM_IO/src/csv_multiarray.hpp:
diff --git a/src/.deps/pdata.Po b/src/.deps/pdata.Po
deleted file mode 100644
index 9ce06a81..00000000
--- a/src/.deps/pdata.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/.deps/ppline-main.Po b/src/.deps/ppline-main.Po
deleted file mode 100644
index 9ce06a81..00000000
--- a/src/.deps/ppline-main.Po
+++ /dev/null
@@ -1 +0,0 @@
-# dummy
diff --git a/src/Decomposition/CartDecomposition.hpp b/src/Decomposition/CartDecomposition.hpp
index 7a0edb59..9fe0ed67 100644
--- a/src/Decomposition/CartDecomposition.hpp
+++ b/src/Decomposition/CartDecomposition.hpp
@@ -27,8 +27,6 @@
 /**
  * \brief This class decompose a space into subspaces
  *
- * This class decompose a space into regular hyper-cube subspaces
- *
  * \tparam dim is the dimensionality of the physical domain we are going to decompose.
  * \tparam T type of the space we decompose, Real, Integer, Complex ...
  * \tparam layout to use
@@ -37,13 +35,30 @@
  * \tparam data type of structure that store the sub-domain decomposition can be an openfpm structure like
  *        vector, ...
  *
- * \note sub-sub-domain are the sub-unit produced by the decomposition
- * \note sub-domain are the result of merging one or more sub-sub-domain (optimization)
- * \note Near processors are the processors adjacent to this processor
- * \note near processor sub-domain is a sub-domain that live in the a near (or contiguous) processor
- * \note external ghost box (or ghost box) are the boxes that compose the ghost space of the processor
- * \note internal ghost box are the part of ghost of the near processor that intersect the space of the
- *       processor
+ * Given an N-dimensional space, this class decompose the space into a Cartesian grid of small
+ * sub-sub-domain. At each sub-sub-domain is assigned  an id that identify which processor is
+ * going to take care of that part of space (in general the space assigned to a processor is a
+ * simply connected), a second step merge several sub-sub-domain with same id into bigger region
+ *  sub-domain with the id. Each sub-domain has an extended space called ghost part
+ *
+ * Assuming that VCluster.getProcessUnitID(), equivalent to the MPI processor rank, return the processor local
+ * processor id, we define
+ *
+ * * local sub-domain: all the sub-domain with id == local processor
+ * * external ghost box: (or ghost box) are the boxes that compose the ghost space of the processor, or the
+ *   boxes produced expanding every local sub-domain by the ghost extension and intersecting with the sub-domain
+ *   of the other processors
+ * * Near processors are the processors adjacent to the local processor, where with adjacent we mean all the processor
+ *   that has a non-zero intersection with the ghost part of the local processor, or all the processors that
+ *   produce non-zero external boxes with the local processor, or all the processor that should communicate
+ *   in case of ghost data synchronization
+ * * internal ghost box: is the part of ghost of the near processor that intersect the space of the
+ *       processor, or the boxes produced expanding the sub-domain of the near processors with the local sub-domain
+ * * Near processor sub-domain: is a sub-domain that live in the a near (or contiguous) processor
+ * * Near processor list: the list of all the near processor of the local processor (each processor has a list
+ *                        of the near processor)
+ *
+ * \see calculateGhostBoxes() for a visualization of internal and external ghost boxes
  *
  */
 
@@ -74,18 +89,24 @@ class CartDecomposition
 		size_t proc;
 	};
 
+	//! It contain a box definition and from witch sub-domain it come from
+	struct Box_sub
+	{
+		::Box<dim,T> box;
+
+		// Domain id
+		size_t sub;
+	};
+
 	struct Box_dom
 	{
 		// Intersection between the local sub-domain enlarged by the ghost and the contiguous processor
 		// sub-domains (External ghost)
-		openfpm::vector< ::Box<dim,T> > ebx;
+		openfpm::vector< Box_sub > ebx;
 
 		// Intersection between the contiguous processor sub-domain enlarged by the ghost with the
 		// local sub-domain (Internal ghost)
-		openfpm::vector< ::Box<dim,T> > ibx;
-
-		// Domain id
-		size_t dom;
+		openfpm::vector< Box_sub > ibx;
 	};
 
 public:
@@ -360,6 +381,7 @@ private:
 	void create_box_nn_processor_ext(Ghost<dim,T> & ghost)
 	{
 		box_nn_processor_int.resize(sub_domains.size());
+		proc_int_box.resize(getNNProcessors());
 
 		// For each sub-domain
 		for (size_t i = 0 ; i < sub_domains.size() ; i++)
@@ -378,18 +400,21 @@ private:
 				// Contiguous processor
 				size_t p_id = box_nn_processor.get(i).get(j);
 
+				// store the box in proc_int_box storing from which sub-domain they come from
+				Box_dom & proc_int_box_g = proc_int_box.get(ProctoID(p_id));
+
 				// get the set of sub-domains of the contiguous processor p_id
-				openfpm::vector< ::Box<dim,T> > & p_box = nn_processor_subdomains[p_id].bx;
+				openfpm::vector< ::Box<dim,T> > & nn_processor_subdomains_g = nn_processor_subdomains[p_id].bx;
 
 				// near processor sub-domain intersections
-				openfpm::vector< ::Box<dim,T> > & p_box_int = box_nn_processor_int.get(i).get(j).bx;
+				openfpm::vector< ::Box<dim,T> > & box_nn_processor_int_gg = box_nn_processor_int.get(i).get(j).bx;
 
 				// for each near processor sub-domain intersect with the enlarged local sub-domain and store it
-				for (size_t b = 0 ; b < p_box.size() ; b++)
+				for (size_t b = 0 ; b < nn_processor_subdomains_g.size() ; b++)
 				{
 					::Box<dim,T> bi;
 
-					bool intersect = sub_with_ghost.Intersect(::Box<dim,T>(p_box.get(b)),bi);
+					bool intersect = sub_with_ghost.Intersect(::Box<dim,T>(nn_processor_subdomains_g.get(b)),bi);
 
 					if (intersect == true)
 					{
@@ -399,8 +424,21 @@ private:
 						pb.proc = p_id;
 						pb.lc_proc = ProctoID(p_id);
 
+						//
+						// Updating
+						//
+						// vb_ext
+						// box_nn_processor_int
+						// proc_int_box
+						//
+						// They all store the same information but organized in different ways
+						// read the description of each for more information
+						//
 						vb_ext.add(pb);
-						p_box_int.add(bi);
+						box_nn_processor_int_gg.add(bi);
+						proc_int_box_g.ebx.add();
+						proc_int_box_g.ebx.last().box = bi;
+						proc_int_box_g.ebx.last().sub = 0;
 					}
 				}
 			}
@@ -459,20 +497,34 @@ private:
 					// store if it intersect
 					if (intersect == true)
 					{
-						// fill with the processor id
+						// the box fill with the processor id
 						b_int.proc = p_id;
 
 						// fill the local processor id
 						b_int.lc_proc = lc_proc;
 
-						// near processor sub-domain intersections
+						//
+						// Updating
+						//
+						// vb_int
+						// box_nn_processor_int
+						// proc_int_box
+						//
+						// They all store the same information but organized in different ways
+						// read the description of each for more information
+						//
+
+						// add the box to the near processor sub-domain intersections
 						openfpm::vector< ::Box<dim,T> > & p_box_int = box_nn_processor_int.get(i).get(j).nbx;
 						p_box_int.add(b_int.box);
 						vb_int.add(b_int);
 
-						// store the box in proc_int_box calculating the id
+						// store the box in proc_int_box storing from which sub-domain they come from
 						Box_dom & pr_box_int = proc_int_box.get(ProctoID(p_id));
-						pr_box_int.ibx.add(b_int.box);
+						Box_sub sb;
+						sb.box = b_int.box;
+						sb.sub = i;
+						pr_box_int.ibx.add(sb);
 
 						// update the geo_cell list
 
@@ -551,7 +603,7 @@ public:
 		//! the set of all local sub-domain as vector
 		sub_domains.swap(cd.sub_domains);
 
-		for (int i = 0 ; i < dim ; i++)
+		for (size_t i = 0 ; i < dim ; i++)
 		{
 			//! Box Spacing
 			this->spacing[i] = spacing[i];
@@ -675,6 +727,17 @@ public:
 		}
 	};
 
+	/*! /brief Given a point it return the set of boxes in which the point fall
+	 *
+	 * \param p Point to check
+	 * \return An iterator with the id's of the internal boxes in which the point fall
+	 *
+	 */
+	auto getInternalIDBoxes(Point<dim,T> & p) -> decltype(geo_cell.getIterator(geo_cell.getCell(p)))
+	{
+		return geo_cell.getIterator(geo_cell.getCell(p));
+	}
+
 
 #define UNIQUE 1
 #define MULTIPLE 2
@@ -1155,9 +1218,9 @@ p1[0]<-----+         +----> p2[0]
 	////////////// Functions to get decomposition information ///////////////
 
 
-	/*! \brief Get the number of Internal ghost boxes for one processor id
+	/*! \brief Get the number of Internal ghost boxes for one processor
 	 *
-	 * \param id processor id (Carefully it is not the processor number)
+	 * \param id near processor list id (the id go from 0 to getNNProcessor())
 	 * \return the number of internal ghost
 	 *
 	 */
@@ -1166,19 +1229,66 @@ p1[0]<-----+         +----> p2[0]
 		return proc_int_box.get(id).ibx.size();
 	}
 
-	/*! \brief Get the j Internal ghost box for one processor id
+	/*! \brief Get the number of External ghost boxes for one processor id
 	 *
-	 * \param id processor id (Carefully it is not the processor number)
-	 * \param j box
+	 * \param id near processor list id (the id go from 0 to getNNProcessor())
+	 * \return the number of external ghost
+	 *
+	 */
+	inline size_t getProcessorNEGhost(size_t id) const
+	{
+		return proc_int_box.get(id).ebx.size();
+	}
+
+	/*! \brief Get the j Internal ghost box for one processor
+	 *
+	 * \param id near processor list id (the id go from 0 to getNNProcessor())
+	 * \param j box (each near processor can produce more than one internal ghost box)
 	 * \return the box
 	 *
 	 */
 	inline const ::Box<dim,T> & getProcessorIGhostBox(size_t id, size_t j) const
 	{
-		proc_int_box.get(id).ibx.get(j);
+		return proc_int_box.get(id).ibx.get(j).box;
+	}
+
+	/*! \brief Get the j External ghost box for one processor
+	 *
+	 * \param id near processor list id (the id go from 0 to getNNProcessor())
+	 * \param j box (each near processor can produce more than one external ghost box)
+	 * \return the box
+	 *
+	 */
+	inline const ::Box<dim,T> & getProcessorEGhostBox(size_t id, size_t j) const
+	{
+		return proc_int_box.get(id).ibx.get(j).box;
+	}
+
+	/*! \brief Get the local sub-domain at witch belong the internal ghost box
+	 *
+	 * \param id near processor list id (the id go from 0 to getNNProcessor())
+	 * \param j box (each near processor can produce more than one internal ghost box)
+	 * \return sub-domain at which belong the internal ghost box
+	 *
+	 */
+	inline const size_t getProcessorIGhostSub(size_t id, size_t j) const
+	{
+		return proc_int_box.get(id).ibx.get(j).sub;
+	}
+
+	/*! \brief Get the local sub-domain at witch belong the external ghost box
+	 *
+	 * \param id near processor list id (the id go from 0 to getNNProcessor())
+	 * \param j box (each near processor can produce more than one external ghost box)
+	 * \return sub-domain at which belong the external ghost box
+	 *
+	 */
+	inline const size_t getProcessorEGhostSub(size_t id, size_t j) const
+	{
+		return proc_int_box.get(id).ebx.get(j).sub;
 	}
 
-	/*! \brief Get the number of Near processor
+	/*! \brief Get the number of Near processors
 	 *
 	 * \return the number of near processors
 	 *
@@ -1188,7 +1298,7 @@ p1[0]<-----+         +----> p2[0]
 		return nn_processors.size();
 	}
 
-	/*! \brief Get the number of the calculated internal ghost boxes
+	/*! \brief Return the total number of the calculated internal ghost boxes
 	 *
 	 * \return the number of internal ghost boxes
 	 *
@@ -1198,9 +1308,9 @@ p1[0]<-----+         +----> p2[0]
 		return vb_int.size();
 	}
 
-	/*! \brief Give the internal ghost box id, it return at which processor it belong
+	/*! \brief Given the internal ghost box id, it return the internal ghost box
 	 *
-	 * \return the processor id
+	 * \return the internal ghost box
 	 *
 	 */
 	inline ::Box<dim,T> getIGhostBox(size_t b_id) const
@@ -1208,7 +1318,8 @@ p1[0]<-----+         +----> p2[0]
 		return vb_int.get(b_id).box;
 	}
 
-	/*! \brief Give the processor id of the internal ghost box
+	/*! \brief Given the internal ghost box id, it return the near processor at witch belong
+	 *         or the near processor that produced this internal ghost box
 	 *
 	 * \return the processor id of the ghost box
 	 *
@@ -1218,41 +1329,42 @@ p1[0]<-----+         +----> p2[0]
 		return vb_int.get(b_id).proc;
 	}
 
-	/*! \brief Get the number of the calculated ghost boxes
+	/*! \brief Get the number of the calculated external ghost boxes
 	 *
-	 * \return the number of internal ghost boxes
+	 * \return the number of external ghost boxes
 	 *
 	 */
-	inline size_t getNGhostBox() const
+	inline size_t getNEGhostBox() const
 	{
 		return vb_ext.size();
 	}
 
-	/*! \brief Given the ghost box id, it return at which processor it belong
+	/*! \brief Given the external ghost box id, it return the external ghost box
 	 *
-	 * \return the processor id
+	 * \return the external ghost box
 	 *
 	 */
-	inline ::Box<dim,T> getGhostBox(size_t b_id) const
+	inline ::Box<dim,T> getEGhostBox(size_t b_id) const
 	{
 		return vb_ext.get(b_id).box;
 	}
 
-	/*! \brief Give the processor id of the internal ghost box
+	/*! \brief Given the external ghost box id, it return the near processor at witch belong
+	 *         or the near processor that produced this external ghost box
 	 *
-	 * \return the processor id of the ghost box
+	 * \return the processor id of the external ghost box
 	 *
 	 */
-	inline size_t getGhostBoxProcessor(size_t b_id) const
+	inline size_t getEGhostBoxProcessor(size_t b_id) const
 	{
 		return vb_ext.get(b_id).proc;
 	}
 
-	/*! \brief Convert the near processor ID to processor number
+	/*! \brief Return the processor id of the near processor list at place id
 	 *
 	 * \param id
 	 *
-	 * \return return the processor number
+	 * \return return the processor rank
 	 *
 	 */
 	inline size_t IDtoProc(size_t id)
@@ -1260,11 +1372,11 @@ p1[0]<-----+         +----> p2[0]
 		return nn_processors.get(id);
 	}
 
-	/*! \brief Convert the processor id to local processor id
+	/*! \brief Convert the processor rank to the id in the list
 	 *
-	 * \param processor id
+	 * \param p processor rank
 	 *
-	 * \return the local processor id
+	 * \return the id
 	 *
 	 */
 	inline size_t ProctoID(size_t p)
diff --git a/src/Decomposition/CartDecomposition_unit_test.hpp b/src/Decomposition/CartDecomposition_unit_test.hpp
index eb2b351f..d358ef77 100644
--- a/src/Decomposition/CartDecomposition_unit_test.hpp
+++ b/src/Decomposition/CartDecomposition_unit_test.hpp
@@ -2,7 +2,7 @@
 #define CARTDECOMPOSITION_UNIT_TEST_HPP
 
 #include "CartDecomposition.hpp"
-#include "mathutil.hpp"
+#include "util/mathutil.hpp"
 
 BOOST_AUTO_TEST_SUITE( CartDecomposition_test )
 
diff --git a/src/Decomposition/ORB.hpp b/src/Decomposition/ORB.hpp
index 79c39307..fa524ab3 100644
--- a/src/Decomposition/ORB.hpp
+++ b/src/Decomposition/ORB.hpp
@@ -9,7 +9,7 @@
 #define ORB_HPP_
 
 #include "data_type/scalar.hpp"
-#include "mathutil.hpp"
+#include "util/mathutil.hpp"
 
 /*! \brief this class is a functor for "for_each" algorithm
  *
diff --git a/src/Graph/CartesianGraphFactory.hpp b/src/Graph/CartesianGraphFactory.hpp
index 5a1c418f..428e34d8 100644
--- a/src/Graph/CartesianGraphFactory.hpp
+++ b/src/Graph/CartesianGraphFactory.hpp
@@ -90,7 +90,7 @@ public:
 
 		T szd[dim];
 
-		for (int i = 0 ; i < dim ; i++)
+		for (size_t i = 0 ; i < dim ; i++)
 		{szd[i] = (dom.getHigh(i) - dom.getLow(i)) / sz[i];}
 
 		//! Construct an hyper-cube of dimension dim
@@ -137,7 +137,7 @@ public:
 
 			// Get the combinations of dimension d
 
-			for (int d = dim-1 ; d >= dim_c ; d--)
+			for (size_t d = dim-1 ; d >= dim_c ; d--)
 			{
 				// create the edges for that dimension
 
@@ -145,7 +145,7 @@ public:
 
 				// for each combination calculate a safe linearization and create an edge
 
-				for (int j = 0 ; j < c.size() ; j++)
+				for (size_t j = 0 ; j < c.size() ; j++)
 				{
 					// Calculate the element size
 
@@ -153,7 +153,7 @@ public:
 
 					// for each dimension multiply and reduce
 
-					for (int s = 0 ; s < dim ; s++)
+					for (size_t s = 0 ; s < dim ; s++)
 					{
 						ele_sz += szd[s] * abs(c[j][s]);
 					}
@@ -200,7 +200,7 @@ public:
 
 		T szd[dim];
 
-		for (int i = 0 ; i < dim ; i++)
+		for (size_t i = 0 ; i < dim ; i++)
 		{szd[i] = (dom.getHigh(i) - dom.getLow(i)) / sz[i];}
 
 		//! Construct an hyper-cube of dimension dim
@@ -247,7 +247,7 @@ public:
 
 			// Get the combinations of dimension d
 
-			for (int d = dim-1 ; d >= dim_c ; d--)
+			for (size_t d = dim-1 ; d >= dim_c ; d--)
 			{
 				// create the edges for that dimension
 
@@ -255,7 +255,7 @@ public:
 
 				// for each combination calculate a safe linearization and create an edge
 
-				for (int j = 0 ; j < c.size() ; j++)
+				for (size_t j = 0 ; j < c.size() ; j++)
 				{
 					// Calculate the element size
 
@@ -263,7 +263,7 @@ public:
 
 					// for each dimension multiply and reduce
 
-					for (int s = 0 ; s < dim ; s++)
+					for (size_t s = 0 ; s < dim ; s++)
 					{
 						ele_sz += szd[s] * abs(c[j][s]);
 					}
diff --git a/src/Grid/grid_dist_id.hpp b/src/Grid/grid_dist_id.hpp
index d051091b..a86bc0b0 100644
--- a/src/Grid/grid_dist_id.hpp
+++ b/src/Grid/grid_dist_id.hpp
@@ -2,16 +2,19 @@
 #define COM_UNIT_HPP
 
 #include <vector>
+#include <unordered_map>
 #include "Grid/map_grid.hpp"
 #include "VCluster.hpp"
 #include "Space/SpaceBox.hpp"
-#include "mathutil.hpp"
+#include "util/mathutil.hpp"
 #include "grid_dist_id_iterator.hpp"
 #include "grid_dist_key.hpp"
 #include "NN/CellList/CellDecomposer.hpp"
 #include "util/object_util.hpp"
 #include "memory/ExtPreAlloc.hpp"
 #include "VTKWriter.hpp"
+#include "Packer.hpp"
+#include "Unpacker.hpp"
 
 #define SUB_UNIT_FACTOR 64
 
@@ -59,6 +62,9 @@ class grid_dist_id
 	//! Communicator class
 	Vcluster & v_cl;
 
+	//! It map a global ghost id (g_id) to the external ghost box information
+	std::unordered_map<size_t,size_t> g_id_to_external_ghost_box;
+
 	/*! \brief Get the grid size
 	 *
 	 * Given a domain, the resolution of the grid on it and another spaceBox contained in the domain
@@ -103,7 +109,135 @@ class grid_dist_id
 		}
 	}
 
+//	bool link_ig_eg_init = false;
+
+	/*! \brief Link the internal ghost boxes with the internal ghost boxes
+	 *
+	 * Each internal ghost box is linked with the external ghost box of the neighbor
+	 * processor, in this function, the processors send the external ghost boxes to
+	 * the near processors and link the internal ghost boxes to the received external
+	 *
+	 */
+/*	void link_ig_eg()
+	{
+		if (link_ig_eg == true)	return;
+
+		openfpm::vector< openfpm::vector< ::Box<dim,T>> > e_box_link(eg_box.size());
+		openfpm::vector<size_t> prc_b;
+
+		// Create a vector with external ghost boxes to send for each processor
+		for (size_t i = 0; i < eg_box.size() ; i++)
+		{
+			for (size_t j = 0 ; j < eg_box.get(i).bid.size() ;j++)
+			{
+				e_box_link.add(eg_box.get(i).bid.get(j));
+			}
+
+			prc_b.add(eg_box.get(i).prc);
+		}
+
+		// Exchange the information
+
+		v_cl.sendrecvMultipleMessagesNBX(prc_b,e_box_link,msg_alloc_external_box,this);
+
+		// create a vector of boxes from the received messages
+		//! None eg_box.size() == ig_box.size() == dec.getNNProcessors()
+		for (size_t i = 0; i < dec.getNNProcessors() ; i++)
+		{
+			size_t n_ele = recv_sz.get(i) / sizeof(::Box<dim,T>);
+
+			// Pointer of the received positions for each near processor
+			void * ptr_boxes = recv_mem_gg.get(i).getPointer();
+
+			PtrMemory * ptr1 = new PtrMemory(ptr_boxes,n_ele * sizeof(point));
+
+			// received external ghost boxes in vector representation
+			openfpm::vector< ::Box<dim,T>,openfpm::device_cpu< ::Box<dim,T>> ,PtrMemory,openfpm::grow_policy_identity> r_eg_box;
+
+			// for each received external boxes
+			for (size_t j = 0 ; j < r_eg_box.size() ; j++)
+			{
+				// get the middle point
+				Point<dim,T> CM = r_eg_box.get(j).middle();
+
+				// internal ghost with maximum volume
+				long int max_vol_id = -1;
+				T max_vol = 0;
+
+				// Get the internal ghost boxes that fall into this point
+				auto b_it = dec.getInternalIDBoxes();
+
+				// Here we intersect each received external box with all
+				// our internal ghost boxes, in theory only one box should match
+				// the intersection, but we take the one with maximum, volume intersection
+				while (b_it.isNext())
+				{
+					size_t b_id = b_it.get();
+
+					// Get the internal ghost box
+					const Box<dim,T> & b = dec.getIGhostBox(b_id);
+
+					// out intersection
+					Box<dim,T> b_out;
+					// intersect
+					bool intersect = b.Intersect(b,b_out);
+
+					// if intersect
+					if (intersect == true && b_out.getVolume() > max_vol)
+					{
+						max_vol = b_out.getVolume();
+						max_vol_id = b_id;
+					}
+
+					++b_it;
+				}
+
+				// Link
+
+				ig_box.get(i).bid.get(max_vol_id).r_id = j;
+			}
+		}
+
+		link_ig_eg_init = true;
+	}*/
+
+	// Receiving size
+	openfpm::vector<size_t> recv_sz;
+
+	// Receiving buffer for particles ghost get
+	openfpm::vector<HeapMemory> recv_mem_gg;
+
+	/*! \brief Call-back to allocate buffer to receive incoming objects (external ghost boxes)
+	 *
+	 * \param msg_i message size required to receive from i
+	 * \param total_msg message size to receive from all the processors
+	 * \param total_p the total number of processor want to communicate with you
+	 * \param i processor id
+	 * \param ri request id (it is an id that goes from 0 to total_p, and is unique
+	 *           every time message_alloc is called)
+	 * \param ptr void pointer parameter for additional data to pass to the call-back
+	 *
+	 */
+	static void * msg_alloc_external_box(size_t msg_i ,size_t total_msg, size_t total_p, size_t i, size_t ri, void * ptr)
+	{
+		grid_dist_id<dim,St,T,Decomposition,Memory,device_grid> * g = static_cast<grid_dist_id<dim,St,T,Decomposition,Memory,device_grid> *>(ptr);
+
+		g->recv_sz.resize(g->dec.getNNProcessors());
+		g->recv_mem_gg.resize(g->dec.getNNProcessors());
+
+		// Get the local processor id
+		size_t lc_id = g->dec.ProctoID(i);
+
+		// resize the receive buffer
+		g->recv_mem_gg.get(lc_id).resize(msg_i);
+		g->recv_sz.get(lc_id) = msg_i;
+
+		return g->recv_mem_gg.get(lc_id).getPointer();
+	}
+
 	/*! \brief Create per-processor internal ghost box list in grid units
+	 *
+	 * It also create g_id_to_external_ghost_box
 	 *
 	 */
 	void create_ig_box()
@@ -130,15 +264,64 @@ class grid_dist_id
 				// It is unique because it is ensured that boxes does not overlap
 				::Box<dim,size_t> cvt = ib;
 
-				Box_id bid_t(cvt);
-				bid_t.id = 0/*g.LinId(bid_t.box.getKP1())*/;
+				i_box_id bid_t;
+				bid_t.box = cvt;
+				bid_t.g_id = g.LinId(bid_t.box.getKP1());
+				bid_t.sub = dec.getProcessorIGhostSub(i,j);
 				pib.bid.add(bid_t);
+
+				// Add the element in the unordered map
+				g_id_to_external_ghost_box[bid_t.g_id] = bid_t.sub;
 			}
 		}
 
 		init_i_g_box = true;
 	}
 
+	/*! \brief Create per-processor internal ghost box list in grid units
+	 *
+	 */
+	void create_eg_box()
+	{
+		// Get the grid info
+		auto g = cd_sm.getGrid();
+
+		if (init_e_g_box == true)	return;
+
+		// Get the number of near processors
+		for (size_t i = 0 ; i < dec.getNNProcessors() ; i++)
+		{
+			eg_box.add();
+			auto&& pib = eg_box.last();
+
+			pib.prc = dec.IDtoProc(i);
+			for (size_t j = 0 ; j < dec.getProcessorNEGhost(i) ; j++)
+			{
+				// Get the internal ghost boxes and transform into grid units
+				::Box<dim,St> ib = dec.getProcessorEGhostBox(i,j);
+				ib /= cd_sm.getCellBox().getP2();
+
+				// save the box and the unique external ghost box id (linearization of P1)
+				// It is (locally) unique because it is ensured that external ghost boxes does not overlap
+				::Box<dim,size_t> cvt = ib;
+
+				// sub domain id at which belong the external ghost box
+				size_t sub_id = dec.getProcessorEGhostSub(i,j);
+
+				e_box_id bid_t;
+				bid_t.sub = sub_id;
+				bid_t.g_e_box = cvt;
+				bid_t.l_e_box = cvt;
+				// Translate in local coordinate
+				bid_t.l_e_box -= gdb_ext.get(sub_id).origin.template convertPoint<size_t>();
+
+				pib.bid.add(bid_t);
+			}
+		}
+
+		init_e_g_box = true;
+	}
+
 public:
 
 	//! constructor
@@ -179,7 +362,7 @@ public:
 	:domain(domain),ghost(g),dec(Decomposition(*global_v_cluster)),cd_sm(domain,g_sz,0),v_cl(*global_v_cluster)
 	{
 		// fill the global size of the grid
-		for (int i = 0 ; i < dim ; i++)	{this->g_sz[i] = g_sz[i];}
+		for (size_t i = 0 ; i < dim ; i++)	{this->g_sz[i] = g_sz[i];}
 
 		// Get the number of processor and calculate the number of sub-domain
 		// for decomposition
@@ -189,7 +372,7 @@ public:
 		// Calculate the maximum number (before merging) of sub-domain on
 		// each dimension
 		size_t div[dim];
-		for (int i = 0 ; i < dim ; i++)
+		for (size_t i = 0 ; i < dim ; i++)
 		{div[i] = openfpm::math::round_big_2(pow(n_sub,1.0/dim));}
 
 		// Create the sub-domains
@@ -267,13 +450,20 @@ public:
 			// convert from Ghost<dim,St> to Ghost<dim,long int>
 			Ghost<dim,long int> g_int_t = g_int;
 
+			//! Save the origin of the local grid
+			gdb_ext.last().origin = sp_t.getP1();
+
 			// Center the local grid to zero
 			sp_t -= sp_t.getP1();
 
-			// save the domain box seen inside the domain + ghost box (see GDBoxes for a visual meaning)
+			// save information about the local grid: domain box seen inside the domain + ghost box (see GDBoxes for a visual meaning)
+			// and where the GDBox start, or the origin of the local grid (+ghost) in global coordinate
 			gdb_ext.last().Dbox = sp_t;
 			gdb_ext.last().Dbox -= g_int_t.getP1();
+			// needed because the last key coordinate is size - 1 on each direction
 			gdb_ext.last().Dbox.shrinkP2(1);
+			// The origin is the Domain box + ghost, so shift
+			gdb_ext.last().origin += g_int_t.getP1();
 
 			// Enlarge sp with the Ghost size
 			sp_t.enlarge_fix_P1(g_int_t);
@@ -330,40 +520,78 @@ public:
 		return loc_grid.get(v1.getSub()).template get<p>(v1.getKey());
 	}
 
-	/*! \brief it store a box and its unique id
+	/*! \brief it store a box, its unique id and the sub-domain from where it come from
 	 *
 	 */
-	struct Box_id
+	struct i_box_id
 	{
-		//! Constructor
-		inline Box_id(const ::Box<dim,size_t> & box)
-		:box(box)
-		{}
-
 		//! Box
 		::Box<dim,size_t> box;
 
 		//! id
-		size_t id;
+		size_t g_id;
+
+		//! sub
+		size_t sub;
+	};
+
+	/*! \brief It store the information about the external ghost box
+	 *
+	 *
+	 */
+	struct e_box_id
+	{
+		//! Box defining the external ghost box in global coordinates
+		::Box<dim,size_t> g_e_box;
+
+		//! Box defining the external ghost box in local coordinates
+		::Box<dim,size_t> l_e_box;
+
+		//! sub_id in which sub-domain this box live
+		size_t sub;
 	};
 
-	/*! \brief Internal ghost box
+	/*! \brief Per-processor Internal ghost box
 	 *
 	 */
-	struct p_box_grid
+	struct ip_box_grid
 	{
-		// Internal ghost in grid units
-		openfpm::vector<Box_id> bid;
+		// ghost in grid units
+		openfpm::vector<i_box_id> bid;
 
 		//! processor id
 		size_t prc;
 	};
 
-	//! Flag that indicate if internal ghost box has been initialized
+	/*! \brief Per-processor external ghost box
+	 *
+	 */
+	struct ep_box_grid
+	{
+		// ghost in grid units
+		openfpm::vector<e_box_id> bid;
+
+		//! processor id
+		size_t prc;
+	};
+
+	//! Memory for the ghost sending buffer
+	Memory g_send_prp_mem;
+
+	//! Memory for the ghost sending buffer
+	Memory g_recv_prp_mem;
+
+	//! Flag that indicate if the external ghost box has been initialized
+	bool init_e_g_box = false;
+
+	//! Flag that indicate if the internal ghost box has been initialized
 	bool init_i_g_box = false;
 
 	//! Internal ghost boxes in grid units
-	openfpm::vector<p_box_grid> ig_box;
+	openfpm::vector<ip_box_grid> ig_box;
+
+	//! External ghost boxes in grid units
+	openfpm::vector<ep_box_grid> eg_box;
 
 	/*! \brief It synchronize getting the ghost part of the grid
 	 *
@@ -376,118 +604,151 @@ public:
 		// Sending property object
 		typedef object<typename object_creator<typename T::type,prp...>::type> prp_object;
 
-		// send vector for each processor
-		typedef  openfpm::vector<prp_object,openfpm::device_cpu<prp_object>,ExtPreAlloc<Memory>> send_vector;
-
-		// Send buffer size in byte ( one buffer for all processors )
-		size_t size_byte_prp = 0;
-
+		// Convert the ghost  internal boxes into grid unit boxes
 		create_ig_box();
 
-		// Convert the ghost boxes into grid unit boxes
-/*		const openfpm::vector<p_box_grid> p_box_g;
+		// Convert the ghost external boxes into grid unit boxes
+		create_eg_box();
 
 		// total number of sending vector
-		size_t n_send_vector = 0;
+		std::vector<size_t> pap_prp;
 
-		// Calculate the total size required for the sending buffer for each processor
-		for ( size_t i = 0 ; i < p_box_g.size() ; i++ )
+		// Create a packing request vector
+		for ( size_t i = 0 ; i < ig_box.size() ; i++ )
 		{
 			// for each ghost box
-			for (size_t j = 0 ; j < p_box_g.get(i).box.size() ; j++)
+			for (size_t j = 0 ; j < ig_box.get(i).bid.size() ; j++)
 			{
-				size_t alloc_ele = openfpm::vector<prp_object>::calculateMem(p_box_g.get(i).box.get(j).volume(),0);
-				pap_prp.push_back(alloc_ele);
-				size_byte_prp += alloc_ele;
-
-				n_send_vector++;
+				// And linked sub-domain
+				size_t sub_id = ig_box.get(i).bid.get(j).sub;
+				// Internal ghost box
+				Box<dim,size_t> g_ig_box = ig_box.get(i).bid.get(j).box;
+				g_ig_box -= gdb_ext.get(sub_id).origin.template convertPoint<size_t>();
+
+				// Pack a size_t for the internal ghost id
+				Packer<size_t,HeapMemory>::packRequest(pap_prp);
+				// Create a sub grid iterator spanning the internal ghost layer
+				grid_key_dx_iterator_sub<dim> sub_it(loc_grid.get(sub_id).getGrid(),g_ig_box.getKP1(),g_ig_box.getKP2());
+				// and pack the internal ghost grid
+				Packer<device_grid,HeapMemory>::template packRequest<prp...>(loc_grid.get(sub_id),sub_it,pap_prp);
 			}
 		}
 
 		// resize the property buffer memory
-		g_prp_mem.resize(size_byte_prp);
+		g_send_prp_mem.resize(ExtPreAlloc<Memory>::calculateMem(pap_prp));
 
 		// Create an object of preallocated memory for properties
-		ExtPreAlloc<Memory> * prAlloc_prp = new ExtPreAlloc<Memory>(pap_prp,g_prp_mem);
-
-		// create a vector of send vector (ExtPreAlloc warrant that all the created vector are contiguous)
-		openfpm::vector<send_vector> g_send_prp;
+		ExtPreAlloc<Memory> & prAlloc_prp = *(new ExtPreAlloc<Memory>(pap_prp,g_send_prp_mem));
+		prAlloc_prp.incRef();
 
-		// create a number of send buffers equal to the near processors
-		g_send_prp.resize(n_send_vector);
+		// Pack information
+		Pack_stat sts;
 
-		// Create the vectors giving them memory
-		for ( size_t i = 0 ; i < p_box_g.size() ; i++ )
+		// Pack the information for each processor and send it
+		for ( size_t i = 0 ; i < ig_box.size() ; i++ )
 		{
+			sts.mark();
+
 			// for each ghost box
-			for (size_t j = 0 ; j < p_box_g.get(i).box.size() ; j++)
+			for (size_t j = 0 ; j < ig_box.get(i).bid.size() ; j++)
 			{
-				// set the preallocated memory to ensure contiguity
-				g_send_prp.get(i).setMemory(*prAlloc_prp);
-
-				// resize the sending vector (No allocation is produced)
-				g_send_prp.get(i).resize(ghost_prc_sz.get(i));
+				// And linked sub-domain
+				size_t sub_id = ig_box.get(i).bid.get(j).sub;
+				// Internal ghost box
+				Box<dim,size_t> g_ig_box = ig_box.get(i).bid.get(j).box;
+				g_ig_box -= gdb_ext.get(sub_id).origin.template convertPoint<size_t>();
+				// Ghost box global id
+				size_t g_id = ig_box.get(i).bid.get(j).g_id;
+
+				// Pack a size_t for the internal ghost id
+				Packer<size_t,HeapMemory>::pack(prAlloc_prp,g_id,sts);
+				// Create a sub grid iterator spanning the internal ghost layer
+				grid_key_dx_iterator_sub<dim> sub_it(loc_grid.get(sub_id).getGrid(),g_ig_box.getKP1(),g_ig_box.getKP2());
+				// and pack the internal ghost grid
+				Packer<device_grid,HeapMemory>::template pack<prp...>(prAlloc_prp,loc_grid.get(sub_id),sub_it,sts);
 			}
+			// send the request
+			v_cl.send(ig_box.get(i).prc,0,sts.getMarkPointer(prAlloc_prp),sts.getMarkSize(prAlloc_prp));
 		}
 
-		// Fill the sending buffers and produce a sending request
-		for ( size_t i = 0 ; i < p_box_g.size() ; i++ )
-		{
-			// for each ghost box
-			for (size_t j = 0 ; j < p_box_g.get(i).box.size() ; j++)
-			{
-				// Create a sub grid iterator of the ghost
-				grid_key_dx_iterator_sub<dim> g_it(,p_box_g.getKP1(),p_box_g.getKP2());
+		// Calculate the total information to receive from each processors
+		std::vector<size_t> prp_recv;
 
-				while (g_it.isNext())
-				{
-					// copy all the object in the send buffer
-					typedef encapc<1,prop,typename openfpm::vector<prop>::memory_t> encap_src;
-					// destination object type
-					typedef encapc<1,prp_object,typename openfpm::vector<prp_object>::memory_t> encap_dst;
+		//! Receive the information from each processors
+		for ( size_t i = 0 ; i < eg_box.size() ; i++ )
+		{
+			prp_recv.push_back(0);
 
-					// Copy only the selected properties
-					object_si_d<encap_src,encap_dst,ENCAP,prp...>(v_prp.get(INTERNAL).get(opart.get(i).get(j)),g_send_prp.get(i).get(j));
+			// for each external ghost box
+			for (size_t j = 0 ; j < eg_box.get(i).bid.size() ; j++)
+			{
+				// External ghost box
+				Box<dim,size_t> g_eg_box = eg_box.get(i).bid.get(j).g_e_box;
 
-					++g_it;
-				}
+				//
+				prp_recv[prp_recv.size()-1] += g_eg_box.getVolumeKey() * sizeof(prp_object) + sizeof(size_t);
 			}
-			// Queue a send request
-			v_cl.send(p_box_g.get(i).proc,g_send_prp.get(i));
 		}
 
-		// Calculate the receive pattern and allocate the receive buffers
+		//! Resize the receiving buffer
+		g_recv_prp_mem.resize(ExtPreAlloc<Memory>::calculateMem(prp_recv));
 
-		// For each processor get the ghost boxes
-		const openfpm::vector<p_box> & p_box_ext = dec.getGhostExternalBox();
+		// Create an object of preallocated memory for properties
+		ExtPreAlloc<Memory> & prRecv_prp = *(new ExtPreAlloc<Memory>(prp_recv,g_recv_prp_mem));
+		prRecv_prp.incRef();
 
-		// Convert the ghost boxes into grid unit boxes
-		const openfpm::vector<p_box_grid> p_box_g_ext;
+		// queue the receive
 
-		size_byte_prp = 0;
+		for ( size_t i = 0 ; i < eg_box.size() ; i++ )
+		{
+			v_cl.recv(eg_box.get(i).prc,0,prRecv_prp.getPointer(i),prp_recv[i]);
+		}
 
-		// Calculate the receive pattern
-		for ( size_t i = 0 ; i < p_box_g_ext.size() ; i++ )
+		// wait to receive communication
+		v_cl.execute();
+
+		Pack_stat ps;
+
+		// Unpack the object
+		for ( size_t i = 0 ; i < eg_box.size() ; i++ )
 		{
-			// for each ghost box
-			for (size_t j = 0 ; j < p_box_g_ext.get(i).box.size() ; j++)
+			// for each external ghost box
+			for (size_t j = 0 ; j < eg_box.get(i).bid.size() ; j++)
 			{
-				size_t alloc_ele = openfpm::vector<prp_object>::calculateMem(p_box_g_ext.get(i).box.get(j).volume(),0);
-				pap_prp_recv.push_back(alloc_ele);
-				size_byte_prp += alloc_ele;
-			}
+				// Unpack the ghost box global-id
 
-			v_cl.recv();
-		}
+				size_t g_id;
+				Unpacker<size_t,HeapMemory>::unpack(prRecv_prp,g_id,ps);
+
+				size_t l_id = 0;
+				// convert the global id into local id
+				auto key = g_id_to_external_ghost_box.find(g_id);
+				if (key != g_id_to_external_ghost_box.end()) // FOUND
+					l_id = key->second;
+				else
+				{
+					// NOT FOUND
 
-		// Fill the internal ghost
+					// It must be always found, if not it mean that the processor has no-idea of
+					// what is stored and conseguently do not know how to unpack, print a critical error
+					// and return
 
-		// wait to receive communication
-		v_cl.execute();
+					std::cerr << "Error: " << __FILE__ << ":" << __LINE__ << " Critical, cannot unpack object, because received data cannot be interpreted\n";
+
+					return;
+				}
+
+				// Get the external ghost box associated with the packed information
+				Box<dim,size_t> box = eg_box.get(i).bid.get(l_id).l_e_box;
+				size_t sub_id = eg_box.get(i).bid.get(l_id).sub;
 
-		// move the received buffers into the ghost part
+				// sub-grid where to unpack
+				grid_key_dx_iterator_sub<dim> sub2(loc_grid.get(sub_id).getGrid(),box.getKP1(),box.getKP2());
 
-		 */
+				// Unpack
+				Unpacker<device_grid,HeapMemory>::template unpack<prp...>(prRecv_prp,sub2,loc_grid.get(sub_id),ps);
+			}
+		}
 	}
 
 	/*! \brief Write the grid_dist_id information as VTK file
diff --git a/src/Grid/grid_dist_id_iterator.hpp b/src/Grid/grid_dist_id_iterator.hpp
index ac80d3e8..682b5187 100644
--- a/src/Grid/grid_dist_id_iterator.hpp
+++ b/src/Grid/grid_dist_id_iterator.hpp
@@ -24,7 +24,7 @@
      |  +------------+  |
      |                  |
      +------------------+
-(0,0)
+(0,0) local coordinate ---> ( x, y )
 
 	\endverbatim
 
@@ -41,6 +41,8 @@ struct GBoxes
 	Box<dim,long int> GDbox;
 	//! Domain box
 	Box<dim,long int> Dbox;
+	//! origin of GDbox in global coordinates
+	Point<dim,long int> origin;
 };
 
 #include "grid_dist_key.hpp"
@@ -78,7 +80,7 @@ class grid_dist_iterator
 	 *
 	 */
 	grid_dist_iterator(Vcluster_object_array<device_grid> & gk, const openfpm::vector<GBoxes<device_grid::dims>> & gdb_ext)
-	:g_c(0),gList(gk),gdb_ext(gdb_ext),m(m)
+	:g_c(0),gList(gk),gdb_ext(gdb_ext),m(0)
 	{
 		// Initialize the current iterator
 		// with the first grid
diff --git a/src/Makefile b/src/Makefile
index 68aa50d3..9ff90164 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -189,8 +189,8 @@ CC = gcc
 CCDEPMODE = depmode=gcc3
 CFLAGS = -g -O2
 CPPFLAGS = 
-CUDA_CFLAGS =  -I -I -I/usr/local/cuda-5.5/include
-CUDA_LIBS =  -L -L -L/usr/local/cuda-5.5/lib64 -lcuda -lcudart
+CUDA_CFLAGS =  -I -I -I/usr/local/cuda/include
+CUDA_LIBS =  -L -L -L/usr/local/cuda/lib64 -lcuda -lcudart
 CXX = mpic++
 CXXDEPMODE = depmode=gcc3
 CXXFLAGS =  --std=c++11 -march=native -mtune=native  -g3  -Wall -O0 
@@ -213,7 +213,7 @@ LIBS =
 LTLIBOBJS = 
 MAKEINFO = ${SHELL} /home/i-bird/Desktop/MOSAIC/OpenFPM_project/OpenFPM_pdata/missing makeinfo
 MKDIR_P = /usr/bin/mkdir -p
-NVCC = /usr/local/cuda-5.5/bin/nvcc
+NVCC = /usr/local/cuda/bin/nvcc
 NVCCFLAGS =    -g -O0 
 NVCC_EXIST = yes
 OBJEXT = o
diff --git a/src/Vector/vector_dist.hpp b/src/Vector/vector_dist.hpp
index 60454e5b..4b1a0276 100644
--- a/src/Vector/vector_dist.hpp
+++ b/src/Vector/vector_dist.hpp
@@ -16,7 +16,7 @@
 #include "memory/PreAllocHeapMemory.hpp"
 #include "memory/PtrMemory.hpp"
 #include "NN/CellList/CellList.hpp"
-#include "common.hpp"
+#include "util/common.hpp"
 #include "util/object_util.hpp"
 #include "memory/ExtPreAlloc.hpp"
 #include "CSVWriter.hpp"
@@ -102,7 +102,7 @@ public:
 		// Calculate the maximum number (before merging) of sub-domain on
 		// each dimension
 		size_t div[point::dims];
-		for (int i = 0 ; i < point::dims ; i++)
+		for (size_t i = 0 ; i < point::dims ; i++)
 		{div[i] = openfpm::math::round_big_2(pow(n_sub,1.0/point::dims));}
 
 		// Create the sub-domains
@@ -487,9 +487,9 @@ public:
 			for (size_t j = 0 ; j < opart.get(i).size() ; j++)
 			{
 				// source object type
-				typedef encapc<1,prop,typename openfpm::vector<prop>::memory_t> encap_src;
+				typedef encapc<1,prop,typename openfpm::vector<prop>::memory_conf> encap_src;
 				// destination object type
-				typedef encapc<1,prp_object,typename openfpm::vector<prp_object>::memory_t> encap_dst;
+				typedef encapc<1,prp_object,typename openfpm::vector<prp_object>::memory_conf> encap_dst;
 
 				// Copy only the selected properties
 				object_si_d<encap_src,encap_dst,ENCAP,prp...>(v_prp.get(INTERNAL).get(opart.get(i).get(j)),g_send_prp.get(i).get(j));
diff --git a/src/Vector/vector_dist_unit_test.hpp b/src/Vector/vector_dist_unit_test.hpp
index 90be1656..837546e1 100644
--- a/src/Vector/vector_dist_unit_test.hpp
+++ b/src/Vector/vector_dist_unit_test.hpp
@@ -113,7 +113,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost )
 	const auto & dec = vd.getDecomposition();
 
 	// Get the ghost external boxes
-	openfpm::vector<size_t> vb(dec.getNGhostBox());
+	openfpm::vector<size_t> vb(dec.getNEGhostBox());
 
 	// Get the ghost iterator
 	auto g_it = vd.getGhostIterator();
@@ -131,9 +131,9 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost )
 		size_t lb = 0;
 
 		// check if the received data is in one of the ghost boxes
-		for ( ; b < dec.getNGhostBox() ; b++)
+		for ( ; b < dec.getNEGhostBox() ; b++)
 		{
-			if (dec.getGhostBox(b).isInside(vd.getPos<s::x>(key)) == true)
+			if (dec.getEGhostBox(b).isInside(vd.getPos<s::x>(key)) == true)
 			{
 				is_in = true;
 
@@ -145,7 +145,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost )
 		BOOST_REQUIRE_EQUAL(is_in,true);
 
 		// Check that the particle come from the correct processor
-		BOOST_REQUIRE_EQUAL(vd.getProp<p::v>(key)[0],dec.getGhostBoxProcessor(lb));
+		BOOST_REQUIRE_EQUAL(vd.getProp<p::v>(key)[0],dec.getEGhostBoxProcessor(lb));
 
 		++g_it;
 	}
@@ -155,7 +155,7 @@ BOOST_AUTO_TEST_CASE( vector_dist_ghost )
 	for (size_t i = 0 ; i < vb.size() ; i++)
 	{
 		// Calculate how many particle should be in the box
-		size_t n_point = cd.getGridPoints(dec.getGhostBox(i)).getVolume();
+		size_t n_point = cd.getGridPoints(dec.getEGhostBox(i)).getVolumeKey();
 
 		BOOST_REQUIRE_EQUAL(n_point,vb.get(i));
 	}
diff --git a/src/dec_optimizer.hpp b/src/dec_optimizer.hpp
index 5881558d..6a471b31 100644
--- a/src/dec_optimizer.hpp
+++ b/src/dec_optimizer.hpp
@@ -115,7 +115,7 @@ private:
 	 */
 	void expand_one_wf(openfpm::vector<wavefront<dim>> & v_w, std::vector<comb<dim>> & w_comb , size_t d)
 	{
-		for (int j = 0 ; j < dim ; j++)
+		for (size_t j = 0 ; j < dim ; j++)
 		{
 			v_w.template get<wavefront<dim>::stop>(d)[j] = v_w.template get<wavefront<dim>::stop>(d)[j] + w_comb[d].c[j];
 			v_w.template get<wavefront<dim>::start>(d)[j] = v_w.template get<wavefront<dim>::start>(d)[j] + w_comb[d].c[j];
@@ -136,9 +136,9 @@ private:
 
 		// Eliminate the w_comb[d] direction
 
-		for (int k = 0 ; k < q_comb.size() ; k++)
+		for (size_t k = 0 ; k < q_comb.size() ; k++)
 		{
-			for (int j = 0 ; j < dim ; j++)
+			for (size_t j = 0 ; j < dim ; j++)
 			{
 				if (w_comb[d].c[j] != 0)
 				{
@@ -148,7 +148,7 @@ private:
 		}
 
 		// for all the combinations
-		for (int j = 0 ; j < q_comb.size() ; j++)
+		for (size_t j = 0 ; j < q_comb.size() ; j++)
 		{
 			size_t id = hyp.LinId(q_comb[j]);
 
@@ -158,7 +158,7 @@ private:
 
 			// is positive, modify the stop point or the starting point
 
-			for (int s = 0 ; s < dim ; s++)
+			for (size_t s = 0 ; s < dim ; s++)
 			{
 				if (is_pos == true)
 				{v_w.template get<wavefront<dim>::stop>(id)[s] = v_w.template get<wavefront<dim>::stop>(id)[s] + w_comb[d].c[s];}
@@ -257,7 +257,7 @@ private:
 		// Create an Hyper-cube
 		HyperCube<dim> hyp;
 
-		for (int d = 0 ; d < v_w.size() ; d++)
+		for (size_t d = 0 ; d < v_w.size() ; d++)
 		{
 			expand_one_wf(v_w,w_comb,d);
 			adjust_others_wf(v_w,hyp,w_comb,d);
@@ -265,7 +265,7 @@ private:
 
 		// for each expanded wavefront create a sub-grid iterator and add the sub-domain
 
-		for (int d = 0 ; d < v_w.size() ; d++)
+		for (size_t d = 0 ; d < v_w.size() ; d++)
 		{
 			// Create a sub-grid iterator
 			grid_key_dx_iterator_sub<dim> g_sub(gh,v_w.template get<wavefront<dim>::start>(d),v_w.template get<wavefront<dim>::stop>(d));
@@ -357,7 +357,7 @@ private:
 
 			// for each direction of expansion expand the wavefront
 
-			for (int d = 0 ; d < n_wf ; d++)
+			for (size_t d = 0 ; d < n_wf ; d++)
 			{
 				// number of processed sub-domain
 				size_t n_proc_sub = 0;
@@ -403,7 +403,7 @@ private:
 				if (w_can_expand == true)
 				{
 					// expand the wavefront
-					for (int j = 0 ; j < dim ; j++)
+					for (size_t j = 0 ; j < dim ; j++)
 					{
 						v_w.template get<wavefront<dim>::stop>(d)[j] = v_w.template get<wavefront<dim>::stop>(d)[j] + w_comb[d].c[j];
 						v_w.template get<wavefront<dim>::start>(d)[j] = v_w.template get<wavefront<dim>::start>(d)[j] + w_comb[d].c[j];
@@ -415,9 +415,9 @@ private:
 
 					// Eliminate the w_comb[d] direction
 
-					for (int k = 0 ; k < q_comb.size() ; k++)
+					for (size_t k = 0 ; k < q_comb.size() ; k++)
 					{
-						for (int j = 0 ; j < dim ; j++)
+						for (size_t j = 0 ; j < dim ; j++)
 						{
 							if (w_comb[d].c[j] != 0)
 							{
@@ -427,7 +427,7 @@ private:
 					}
 
 					// for all the combinations
-					for (int j = 0 ; j < q_comb.size() ; j++)
+					for (size_t j = 0 ; j < q_comb.size() ; j++)
 					{
 						size_t id = hyp.LinId(q_comb[j]);
 
@@ -437,7 +437,7 @@ private:
 
 						// is positive, modify the stop point or the starting point
 
-						for (int s = 0 ; s < dim ; s++)
+						for (size_t s = 0 ; s < dim ; s++)
 						{
 							if (is_pos == true)
 							{v_w.template get<wavefront<dim>::stop>(id)[s] = v_w.template get<wavefront<dim>::stop>(id)[s] + w_comb[d].c[s];}
@@ -451,7 +451,7 @@ private:
 
 		// get back the hyper-cube produced
 
-		for (int i = 0 ; i < dim ; i++)
+		for (size_t i = 0 ; i < dim ; i++)
 		{
 			// get the index of the wavefront direction
 			size_t p_f = hyp.positiveFace(i);
@@ -473,9 +473,9 @@ private:
 	{
 		// Wavefront to initialize
 
-		for (int i = 0 ; i < v_w.size() ; i++)
+		for (size_t i = 0 ; i < v_w.size() ; i++)
 		{
-			for (int j = 0 ; j < dim ; j++)
+			for (size_t j = 0 ; j < dim ; j++)
 			{
 				v_w.template get<wavefront<dim>::start>(i)[j] = start_p.get(j);
 				v_w.template get<wavefront<dim>::stop>(i)[j] = start_p.get(j);
@@ -517,7 +517,7 @@ private:
 			const grid_key_dx<dim> & gk = g_sub.get();
 
 			// if the subdomain has the id we are searching stop
-			if (graph.vertex(gh.LinId(gk)).template get<p_id>() == id)
+			if ((long int)graph.vertex(gh.LinId(gk)).template get<p_id>() == id)
 			{
 				return gk;
 			}
-- 
GitLab