     using Clustering::Tools::boxlimits;
     ASSUME_ALIGNED(coords);
     std::sort(radii.begin(), radii.end(), std::greater<float>());
-    std::size_t n_radii = radii.size();
-    std::vector<float> rad2(n_radii);
-    for (std::size_t i=0; i < n_radii; ++i) {
-      rad2[i] = radii[i]*radii[i];
-    }
-    // sort coordinates on first dimension for neighbor pruning
-    std::vector<float> sorted_coords = dim1_sorted_coords(coords
-                                                        , n_rows
-                                                        , n_cols);
-    // box limits for pruning
-    std::vector<float> blimits = boxlimits(sorted_coords
-                                         , BSIZE_POPS
-                                         , n_rows
-                                         , n_cols);
     int n_gpus;
     cudaGetDeviceCount(&n_gpus);
     if (n_gpus == 0) {


// for pops
#define BSIZE_POPS 64
//#define N_STREAMS 8

// for neighborhood search
#define BSIZE_NH 128

      }
    }
    cudaFree(d_coords);
    cudaFree(d_rad2);
    cudaFree(d_pops);
    return pops;
  }

  Pops
  calculate_populations(const float* coords
