this version is better
efficient with 20 threads