better threading
work on 4