diff --git a/src/adp/adp.c b/src/adp/adp.c
index b6b7e388fa6bebc3c906a242a914997cf51cfc61..35f61e2a3a87f8b9a524414147619c8894bfb350 100644
--- a/src/adp/adp.c
+++ b/src/adp/adp.c
@@ -768,38 +768,36 @@ clusters_t Heuristic1(global_context_t *ctx)
                  * use an array of locks, and compare and swap to actually gain control of the thing
                  *
                  * */
-                #pragma omp critical
-                {
 
-                    int owner = foreign_owner(ctx, jidx);
-                    idx_t jpos = jidx - ctx -> rank_idx_start[owner];
+#ifdef EXPERIMENTAL_H1
+                int owner = foreign_owner(ctx, jidx);
+                idx_t jpos = jidx - ctx -> rank_idx_start[owner];
 
-                    lock_t state = LOCK_FREE;
+                lock_t state = LOCK_FREE;
 
-                    state = h1_lock_acquire(ctx, win_locks, owner, jpos, state);
+                state = h1_lock_acquire(ctx, win_locks, owner, jpos, state);
 
-                    heap_node mask_element;
-                    MPI_Request request;
+                heap_node mask_element;
+                MPI_Request request;
 
-                    MPI_Rget(&mask_element, sizeof(heap_node), MPI_BYTE, 
-                            owner, jpos * sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request);
-                    MPI_Wait(&request, MPI_STATUS_IGNORE);
+                MPI_Rget(&mask_element, sizeof(heap_node), MPI_BYTE, 
+                        owner, jpos * sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request);
+                MPI_Wait(&request, MPI_STATUS_IGNORE);
 
-                    int flag = mask_element.array_idx == MY_SIZE_MAX;							
-                    if(flag || i_point.g > mask_element.value )
-                    {
-                        heap_node tmp_mask_element = {.array_idx = i_point.array_idx, .value = i_point.g};
-                        MPI_Request request;
-                        MPI_Rput(&tmp_mask_element, sizeof(heap_node), MPI_BYTE, owner, 
-                                jpos*sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request);
-                        MPI_Wait(&request, MPI_STATUS_IGNORE);
-
-                    }
+                int flag = mask_element.array_idx == MY_SIZE_MAX;							
+                if(flag || i_point.g > mask_element.value )
+                {
+                    heap_node tmp_mask_element = {.array_idx = i_point.array_idx, .value = i_point.g};
+                    MPI_Request request;
+                    MPI_Rput(&tmp_mask_element, sizeof(heap_node), MPI_BYTE, owner, 
+                            jpos*sizeof(heap_node), sizeof(heap_node), MPI_BYTE, win_to_remove_mask, &request);
+                    MPI_Wait(&request, MPI_STATUS_IGNORE);
 
-                    state = h1_lock_free(ctx, win_locks, owner, jpos, state);
                 }
 
-                /*
+                state = h1_lock_free(ctx, win_locks, owner, jpos, state);
+#else
+
                 #pragma omp critical (h1_centers_elimination)
                 {
                     int owner = foreign_owner(ctx, jidx);
@@ -824,8 +822,7 @@ clusters_t Heuristic1(global_context_t *ctx)
                     }
 
                     MPI_Win_unlock(owner, win_to_remove_mask);
-                }
-                */
+#endif
             }
         }
     }