1. A computer based method of automatically transforming essentially sequential application code into a plurality of functionally equivalent codes, comprising: receiving the essentially sequential application code; receiving user-defined task boundaries within the essentially sequential application code to thereby define a plurality of tasks; determining whether the essentially sequential application code can be separated at at least one of the user-defined tasks boundaries; and if so automatically generating at least one of the plurality of functionally equivalent codes for at least two of the tasks.