         CUDA_CHECK_RETURN(cudaDeviceSynchronize());
         // transfer values back to host
         h_chi = d_chi;
-        h_logdens_pop = d_logdens_pop;
-        h_logdens_meas = d_logdens_meas;
+        h_logdens = d_logdens;
         h_naccept = d_naccept;
 
         current_iter++;

		logdensity_pop<ChiType><<<nBlocks,nThreads>>>(p_proposed_theta, Daug.GetDevChiPtr(), p_proposed_logdens);
        CUDA_CHECK_RETURN(cudaDeviceSynchronize());
		double logdens_prop = thrust::reduce(d_proposed_logdens.begin(), d_proposed_logdens.end());

		// accept the proposed value?
		double metro_ratio = 0.0;

		double* p_meas = thrust::raw_pointer_cast(&d_meas[0]);
		double* p_meas_unc = thrust::raw_pointer_cast(&d_meas_unc[0]);
		double* p_cholfact = thrust::raw_pointer_cast(&d_cholfact[0]);
		double* p_logdens_meas = thrust::raw_pointer_cast(&d_logdens[0]);
		double* p_logdens_pop = Theta.GetDevLogDensPtr();
		double* p_theta = Theta.GetDevThetaPtr();
		int* p_naccept = thrust::raw_pointer_cast(&d_naccept[0]);

		// launch the kernel to update the characteristics on the GPU
		UpdateKernel<ChiType><<<nBlocks,nThreads>>>(p_meas, p_meas_unc, p_chi, p_theta, p_cholfact, p_logdens_meas, p_logdens_pop,
