omg i hate multithreading and I/O