rework the TaskExecutor stuff