diff --git a/Makefile b/Makefile
index cabb3312f543d8f1ed2de5a5ea4c2931877c21f0..49a93522c7673e06a46209fe2e88ce4306e56976 100644
--- a/Makefile
+++ b/Makefile
@@ -243,6 +243,7 @@ SUBDIRS += logs
 OBJS    += logs/logs.o
 INCL    += logs/logs.h logs/timer.h
 
+
 SUBDIRS += gitversion
 INCL    += gitversion/version.h
 
@@ -260,11 +261,6 @@ OBJS    += pm/pm_nonperiodic.o pm/pm_periodic.o \
 INCL    += pm/pm.h pm/pm_mpi_fft.h pm/pm_periodic.h pm/pm_nonperiodic.h
 
 
-SUBDIRS += vectorclass
-OBJS    += vectorclass/instrset_detect.o
-INCL    +=
-
-
 SUBDIRS += sort
 OBJS    += sort/peano.o
 INCL    += sort/peano.h sort/cxxsort.h sort/parallel_sort.h
@@ -274,6 +270,7 @@ SUBDIRS += sph
 OBJS    += sph/density.o sph/hydra.o sph/init_entropy.o sph/artificial_viscosity.o
 INCL    += sph/kernel.h sph/sph.h
 
+
 SUBDIRS += system
 OBJS    += system/pinning.o system/system.o
 INCL    += system/system.h system/pinning.h
@@ -308,6 +305,13 @@ OBJS    += ngbtree/ngbtree_build.o
 INCL    += ngbtree/ngbtree.h
 
 
+ifeq (EXPLICIT_VECTORIZATION,$(findstring EXPLICIT_VECTORIZATION,$(CONFIGVARS)))
+SUBDIRS += vectorclass
+OBJS    += vectorclass/instrset_detect.o
+INCL    +=
+endif
+
+
 ifeq (COOLING,$(findstring COOLING,$(CONFIGVARS)))
 OBJS    += cooling_sfr/cooling.o cooling_sfr/sfr_eos.o cooling_sfr/starformation.o
 INCL    += cooling_sfr/cooling.h
@@ -362,6 +366,7 @@ ifeq (LIGHTCONE_MASSMAPS,$(findstring LIGHTCONE_MASSMAPS,$(CONFIGVARS)))
 MAPS_LIBS += -lchealpix -lcfitsio #-lcurl
 endif
 
+
 ifeq (LIGHTCONE_PARTICLES,$(findstring LIGHTCONE_PARTICLES,$(CONFIGVARS)))
 MAPS_LIBS += -lchealpix -lcfitsio #-lcurl
 endif
diff --git a/src/logs/timer.h b/src/logs/timer.h
index c75dea96830800b32c104733449b70a371e3d510..4c706fe5ce1f6c2009cc30efcb85dafb47ad40f3 100644
--- a/src/logs/timer.h
+++ b/src/logs/timer.h
@@ -59,7 +59,6 @@ TIMER_CREATE(CPU_TREEDIRECT, "treedirect", CPU_TREE, 'r', '2')
 #ifdef PMGRID
 TIMER_CREATE(CPU_PM_GRAVITY, "pm_grav", CPU_ALL, '|', 'n')
 #endif
-TIMER_CREATE(CPU_NGBTREEBUILD, "ngbtreebuild", CPU_ALL, 'A', 'a')
 TIMER_CREATE(CPU_NGBTREEUPDATEVEL, "ngbtreevelupdate", CPU_ALL, 'B', 'b')
 TIMER_CREATE(CPU_NGBTREEUPDATEMAXHSML, "ngbtreehsmlupdate", CPU_ALL, 'h', 'H')
 TIMER_CREATE(CPU_SPH, "sph", CPU_ALL, 0, 0)
diff --git a/src/main/begrun.cc b/src/main/begrun.cc
index 916b06f3895d49e54a580fb66c478c40bc752d5b..486d581aba761a37bc274d0a05a06609f6b05c25 100644
--- a/src/main/begrun.cc
+++ b/src/main/begrun.cc
@@ -318,6 +318,10 @@ void sim::begrun2(void)
   All.FlushLast = Logs.CPUThisRun;
 #endif
 
+  // update All on shared memory handler, just to allow it to access its elements if needed
+  if(Shmem.Island_NTask != Shmem.World_NTask && Shmem.Island_ThisTask == 0)
+    MPI_Send(All.get_data_ptr(), All.get_data_size(), MPI_BYTE, Shmem.MyShmRankInGlobal, TAG_ALL_UPDATE, MPI_COMM_WORLD);
+
 #if defined(FORCETEST) && defined(FORCETEST_TESTFORCELAW)
   gravity_forcetest_testforcelaw();
 #endif
diff --git a/src/mpi_utils/mpi_utils.h b/src/mpi_utils/mpi_utils.h
index f62434cbba373cc094be7259984e94485485f4cb..f2051551b8888c60fba7f316cd77321a266caaf0 100644
--- a/src/mpi_utils/mpi_utils.h
+++ b/src/mpi_utils/mpi_utils.h
@@ -97,6 +97,7 @@
 #define TAG_NODE_DATA 84
 #define TAG_RESULTS 85
 #define TAG_DRIFT_INIT 86
+#define TAG_ALL_UPDATE 87
 #define TAG_METDATA 500
 #define TAG_FETCH_GRAVTREE 1000
 #define TAG_FETCH_SPH_DENSITY 2000
diff --git a/src/mpi_utils/shared_mem_handler.cc b/src/mpi_utils/shared_mem_handler.cc
index ee9edfd377d3a88cbb9a1ff912bf83f4886b63ef..2bc5042691bda896e4b6c16e04155b939952e94a 100644
--- a/src/mpi_utils/shared_mem_handler.cc
+++ b/src/mpi_utils/shared_mem_handler.cc
@@ -200,6 +200,11 @@ void shmem::shared_memory_handler(void)
           Mem.myfree(message);
           Driftfac.init_drift_table();
         }
+      else if(tag == TAG_ALL_UPDATE)  // make the shared memory handler update the contents of the All structure
+        {
+          memcpy(All.get_data_ptr(), message, All.get_data_size());
+          Mem.myfree(message);
+        }
     }
 }