added openmp for parallel