diff --git a/CUDA/runmcmc.h b/CUDA/runmcmc.h
new file mode 100644
index 0000000000000000000000000000000000000000..eefdb806fbcf8ea7dbfbf4cd9dfeca5521aea5ca
--- /dev/null
+++ b/CUDA/runmcmc.h
@@ -0,0 +1,55 @@
+
+////////////////////////////////////////////////////// 
+//   MCMC IN GPU
+////////////////////////////////////////////////////// 
+
+void init_Fibres_Multifibres(	//INPUT
+				thrust::device_vector<double> 			datam_gpu,
+				thrust::device_vector<double> 			params_gpu,
+				thrust::device_vector<float> 			tau_gpu,
+				thrust::device_vector<double> 			bvals_gpu,
+				thrust::device_vector<double> 			alpha_gpu,
+				thrust::device_vector<double> 			beta_gpu,
+				string 						output_file, 
+				//OUTPUT
+				thrust::device_vector<FibreGPU>& 		fibres_gpu,
+				thrust::device_vector<MultifibreGPU>& 		multifibres_gpu,
+				thrust::device_vector<double>&			signals_gpu,
+				thrust::device_vector<double>&			isosignals_gpu);
+
+void runmcmc_burnin(	//INPUT
+			thrust::device_vector<double> 			datam_gpu,
+			thrust::device_vector<double> 			bvals_gpu,
+			thrust::device_vector<double> 			alpha_gpu,
+			thrust::device_vector<double> 			beta_gpu,
+			double 						seed,
+			string 						output_file, 
+			//INPUT-OUTPUT
+			thrust::device_vector<FibreGPU>& 		fibres_gpu,
+			thrust::device_vector<MultifibreGPU>& 		multifibres_gpu,
+			thrust::device_vector<double>&			signals_gpu,
+			thrust::device_vector<double>&			isosignals_gpu);
+
+
+void runmcmc_record(	//INPUT
+			thrust::device_vector<double> 			datam_gpu,
+			thrust::device_vector<double> 			bvals_gpu,
+			thrust::device_vector<double> 			alpha_gpu,
+			thrust::device_vector<double> 			beta_gpu,
+			thrust::device_vector<FibreGPU> 		fibres_gpu,
+			thrust::device_vector<MultifibreGPU> 		multifibres_gpu,
+			thrust::device_vector<double>			signals_gpu,
+			thrust::device_vector<double>			isosignals_gpu,
+			double 						seed,
+			string 						output_file, 
+			//OUTPUT
+			thrust::device_vector<int>&			multirecords_gpu,
+			thrust::device_vector<float>&			rf0_gpu,
+			thrust::device_vector<float>&			rtau_gpu,
+			thrust::device_vector<float>&			rs0_gpu,
+			thrust::device_vector<float>&			rd_gpu,
+			thrust::device_vector<float>&			rdstd_gpu,
+			thrust::device_vector<float>&			rth_gpu,
+			thrust::device_vector<float>&			rph_gpu,
+			thrust::device_vector<float>&			rf_gpu,
+			thrust::device_vector<float>&			rlikelihood_energy_gpu);