 void ForceCalculationKernel(int nnodesd, 
                             int nbodiesd, 
                             volatile int * __restrict errd, 
-                            float itolsqd, 
-                            float epssqd, 
+                            float theta, 
                             volatile int * __restrict sortd, 
                             volatile int * __restrict childd, 
                             volatile float * __restrict massd, 

        gpuErrchk(cudaDeviceSynchronize());
        
        ForceCalculationKernel<<<blocks * FACTOR5, THREADS5>>>(nnodes, N_POINTS, thrust::raw_pointer_cast(errl.data()), 
                                                                    itolsq, epssq, // Should these by changed? 
                                                                    thrust::raw_pointer_cast(sortl.data()), 
                                                                    thrust::raw_pointer_cast(childl.data()), 
                                                                    thrust::raw_pointer_cast(massl.data()), 

  __shared__ float dq[MAXDEPTH * THREADS5/WARPSIZE];

  if (0 == threadIdx.x) {
    // tmp = radiusd * 2;
    // precompute values that depend only on tree level
    dq[0] = radiusd * theta; //tmp * tmp * itolsqd;
    for (i = 1; i < maxdepthd; i++) {
      dq[i] = dq[i - 1] * 0.5f; // radius is halved with every level of the tree
      // dq[i - 1] += epssqd;
    }
    // dq[i - 1] += epssqd;

    if (maxdepthd > MAXDEPTH) {
      *errd = maxdepthd;
