Another consideration is lifespan ownership. A program block is started by the supervisor, but after that normally controls its own lifespan. This is most useful for lengthy asynchronous operations like comm operations, status report generation, sending emails, etc. Task blocks remain under the control of the supervisor, and could be long asynchronous operations like a big data sort, but are frequently modules to assist organization, i.e., all the logic associated with a single function.