a) Control the order of execution
b) Collect data
c) Limit concurrency
d) Call the next step in program