Using thread pool instead