revises multithreading