 		}
 
 		// get initial value of conditional log-posterior for theta|chi
-
+		double* p_theta = thrust::raw_pointer_cast(&d_theta[0]);
+		double* p_chi = Daug.GetDevChiPtr(); // grab pointer to Daug.d_chi
+		double* p_logdens_pop = Daug.GetDevLogDensPopPtr();
+		logdensity_pop<ChiType><<<nBlocks,nThreads>>>(p_theta, p_chi, p_logdens_pop);
+        CUDA_CHECK_RETURN(cudaDeviceSynchronize());
 
 		// reset the number of MCMC iterations
 		current_iter = 1;
+		naccept = 0;
 	}
 
 	// return the log-prior of the population parameters

				scaled_proposal_j += cholfact[cholfact_index] * snorm_deviate[k];
				cholfact_index++;
			}
			proposed_chi[j] = chi[j] + scaled_proposal_j;
			scaled_proposal[j] = scaled_proposal_j;
		}
		return proposed_chi;

	virtual void UpdateKernel(double* meas, double* meas_unc, double* chi, double* theta, double* cholfact,
			double* logdens_meas, double* logdens_pop, curandState* devStates, int current_iter, int* naccept)
	{
		int idata = blockDim.x * blockIdx.x + threadIdx.x;
		if (idata < c_ndata) {
			curandState localState = devStates;

		}

	}

