adapt TransportExecutor to be able to create and run tasks dynamically

and streamlined the Task interface and usage
why was this change necessary?