first pass at using a thread pool to work jobs