seperate queue handling from task execution