 
 	if (nfull_blocks)
 		interaction_energy<0>
-            <<<dim3(nlig_atoms, nfull_blocks), THREADS_PER_BLOCK, 1>>>
+            <<<dim3(nlig_atoms, nfull_blocks), THREADS_PER_BLOCK>>>
             (*info, 0, slope, v);
 	if (nthreads_remain) 
 		interaction_energy<1>

		rec_deriv = diff * dor;
	}
    
    shared float energies[32];
	shared float3 derivs[32];
	float this_e = block_sum<float>(energies, rec_energy);
	float3 deriv = block_sum<float3>(derivs, rec_deriv);
	if (threadIdx.x == 0)
	{
		curl(this_e, (float *) &deriv, v);


global void reduce_energy(force_energy_tup *result) {
	int l = threadIdx.x;
	float e = block_sum<float>(result[l].energy);
	if ( l == 0 ) {
		result[0].energy = e;
	}	
