new implementation of OMP