get rid of task_func