basic multithreading
multithreading is hard...