finished thread pool but requires testing