added non-linear OMP stuff