fix #705 use thread pool