Now with multithreading!