public void start_run_single(int n){
		Random ran = new Random();
		jade.math.ExponentialDistribution disp = new jade.math.ExponentialDistribution();
		disp.setFallOff(0.5);
		jade.math.ExponentialDistribution ext = new jade.math.ExponentialDistribution();
		ext.setFallOff(10);
		double cur_disp = 0.5;
		double cur_ext = 9.8;
		rr = new MarginalRangeReconstructor(ratemodel, tree, aln);
		rr.set_dipsersal(cur_disp);
		rr.set_extinction(cur_ext);
		rr.set_ratemodel();
		double cur_score = Math.log(rr.eval_likelihood());
		boolean disp_bool = true;
		double new_disp = cur_disp;
		double new_ext = cur_ext;
		for(int i=0;i<n;i++){
			if(disp_bool == true){
				new_disp = Math.abs(cur_disp -(disp_sliding_window/2)+(disp_sliding_window*ran.nextDouble()));
				disp_bool = false;
			}
			else{
				new_ext = Math.abs(cur_ext -(ext_sliding_window/2)+(ext_sliding_window*ran.nextDouble()));
				disp_bool = true;
			}
			rr = new MarginalRangeReconstructor(ratemodel, tree, aln);
			rr.set_dipsersal(new_disp);
			rr.set_extinction(new_ext);
			rr.set_ratemodel();
			double new_score =Math.log(rr.eval_likelihood());
			/*
			 * accept or reject
			 */
			boolean acc = false;
			double disp_prior_ratio = disp.getPDF(new_disp)/disp.getPDF(cur_disp);
			double ext_prior_ratio = ext.getPDF(new_ext)/ext.getPDF(cur_ext);
			double like_ratio = new_score/cur_score;
			double dou_acc = disp_prior_ratio*ext_prior_ratio*like_ratio;
			double min_acc = Math.min(1, dou_acc);
			if(ran.nextDouble()<min_acc){
				acc = true;
			}
			if(acc == true){
				cur_disp = new_disp;
				cur_ext = new_ext;
				cur_score = new_score;
			}
			if((i%print_freq) == 0){
				System.out.println(i+"\t"+cur_disp+"\t"+cur_ext+"\t"+cur_score+
						"\t" +new_disp
						+"\t"+new_ext
						+"\t"+new_score
						+"\t"+cur_score
						+"\t"+like_ratio+"\t"+dou_acc);
			}
			if((i%report_freq) == 0 && to_file == true){
				try {
					FileWriter fw = new FileWriter(outfile, true);
					fw.write(i+"\t"+cur_disp+"\t"+cur_ext+"\t"+cur_score+"\n");
					fw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		}
	}