instead of simultaneous threads, now with queue