add worker pool functionality