update
add a worker pool with a simple cache