 	if (opt.ulf_workaround)
 		{
 		if (opt.shift_mode == 0)
-			if (opt.slj == 1)
+			if (opt.slj == true)
 				gpu_compute_lj_forces_kernel<true, 0, true><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
 			else
 				gpu_compute_lj_forces_kernel<true, 0, false><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);				
 		else if (opt.shift_mode == 1)
-			if (opt.slj == 1)
+			if (opt.slj == true)
 				gpu_compute_lj_forces_kernel<true, 1, true><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
 			else
 				gpu_compute_lj_forces_kernel<true, 1, false><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);				
 		else if (opt.shift_mode == 2)
-			if (opt.slj == 1)		
+			if (opt.slj == true)		
 				gpu_compute_lj_forces_kernel<true, 2, true><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
 			else
 				gpu_compute_lj_forces_kernel<true, 2, false><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);			

	else
		{
		if (opt.shift_mode == 0)
			if (opt.slj == 1)
				gpu_compute_lj_forces_kernel<false, 0, true><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
			else
				gpu_compute_lj_forces_kernel<false, 0, false><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
		else if (opt.shift_mode == 1)
			if (opt.slj == 1)
				gpu_compute_lj_forces_kernel<false, 1, true><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
			else
				gpu_compute_lj_forces_kernel<false, 1, false><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
		else if (opt.shift_mode == 2)
			if (opt.slj == 1)
				gpu_compute_lj_forces_kernel<false, 2, true><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);
			else
				gpu_compute_lj_forces_kernel<false, 2, false><<< grid, threads, sizeof(float2)*coeff_width*coeff_width >>>(force_data, pdata, box, nlist, d_coeffs, coeff_width, opt.r_cutsq, rcut6inv, xplor_denom_inv, r_on_sq);				

			}

		// calculate the virial (FLOPS: 3)
		if (!slj) virial += float(1.0/6.0) * rsq * forcemag_divr;
		else virial += float(1.0/6.0) * r * r * forcemag_divr; //rsq has been "adjusted" for diameter, r has not!

		// add up the force vector components (FLOPS: 7)
		force.x += dx * forcemag_divr;
