 	
 	// normally, data in HOOMD is not perfectly sorted:
 	for (unsigned int i = 0; i < 100; i++)
-		tweak_data();	
+		tweak_data();
 	
 	// run the various benchmarks
 	bmark_host_rebinning(false);
 	bmark_host_rebinning(true);
 	bmark_simple_rebinning();
-	bmark_simple_sort_rebinning();
+	bmark_simple_sort_rebinning(32);
+	bmark_simple_sort_rebinning(64);
+	bmark_simple_sort_rebinning(128);
+	bmark_simple_sort_rebinning(256);
+	bmark_simple_sort_rebinning(512);
 	bmark_simple_updating();
 	
 	free_data();

		kb = 0;
		
	unsigned int bin = ib*(Mz*My) + jb * Mz + kb;
	if (idx >= N)
		bin = 0xffffffff;
	
	// load up shared memory
	__shared__ bin_id_pair bin_pairs[block_size];

template<class T, unsigned int block_size> __device__ inline void scan_naive(T *temp)
	{
	int thid = threadIdx.x;
	
	int pout = 0;
	int pin = 1;
	
	#pragma unroll
	for (int offset = 1; offset < block_size; offset *= 2)
		{
		pout = 1 - pout;
		pin  = 1 - pout;
		__syncthreads();
		
		temp[pout*block_size+thid] = temp[pin*block_size+thid];
		
		if (thid >= offset)
			temp[pout*block_size+thid] += temp[pin*block_size+thid - offset];
		}
		
	__syncthreads();
