 		int ndata = Daug.GetNdata();
 		h_logdens.resize(ndata);
 		d_logdens = h_logdens;
-
-		decay_rate = 2.0 / 3.0;
 
 		// place array size constant memory
         CUDA_CHECK_RETURN(cudaMemcpyToSymbol(&c_dim_theta, &dim_theta, sizeof(dim_theta)));

			unit_norm += snorm_deviate[j] * snorm_deviate[j];
		}
		unit_norm = sqrt(unit_norm);
		double decay_sequence = 1.0 / pow((double) current_iter, c_decay_rate);
		double scaled_coef = sqrt(decay_sequence * fabs(metro_ratio - c_target_rate)) / unit_norm;
		for (int j=0; j<c_pchi; j++) {
			scaled_proposal[j] *= scaled_coef;
		}
		bool downdate = (metro_ratio < c_target_rate);
		// do rank-1 cholesky update to update the proposal covariance matrix
		CholUpdateR1(cholfact, scaled_proposal, c_pchi, downdate);
	}


public:
	// constructor
	PopulationPar(DataAugmentation<ChiType>& D, dim3& nB, dim3& nT) :
		Daug(D), nBlocks(nB), nThreads(nT)
	{
		h_theta.resize(dim_theta);
		d_theta = h_theta;
