restructuring into a multithreaded client