A method to perform a plurality of data modification operations on data being transferred via a Direct Memory Access, DMA, channel managed by a DMA controller comprising: providing a plurality of data modification engines (110, 112, 206, 210, 306, 310, 406, 410, 414, 506, 510,514, 518, 606, 610, 614, 618, 624, 706, 710, 714, 720, 916, 918, 920, 922, 924, 926, 928, 930, 932, 1018) within said DMA controller that each perform at least one of a variety of data modification operations; fetching a Control Data Block, CDB, by said DMA controller, said CDB containing instructions for reading said data from at least one data source (102-104, 202, 302, 402, 502, 602, 702), modifying said data, and writing said data to at least one destination (116-118, 214, 314, 418, 524, 628, 724, 1016); retrieving by said DMA controller said data from at least one data source (102-104, 202, 302, 402, 502, 602, 702) in accord with said instructions encoded in said CDB; modifying said data including selecting a plurality of data modification engines to perform said desired plurality of data modification operations on said data in accord with said instructions encoded in said CDB such that at least two of said plurality of data modification operations are performed concurrently by said DMA controller; and sending by said DMA controller results of said plurality of data modification operations to at least one destination (116-118, 214, 314, 418, 524, 628, 724, 1016) in accord with said instructions encoded in said CDB; wherein said performing of said desired plurality of data modification operations further comprises a first data modification engine of said plurality of data modification engines creating first data results that are used as a basis of computation for a second data modification engine of said plurality of data modification engines to perform at least one data modification operation of said plurality of data modification operations. providing a plurality of data modification engines (110, 112, 206, 210, 306, 310, 406, 410, 414, 506, 510,514, 518, 606, 610, 614, 618, 624, 706, 710, 714, 720, 916, 918, 920, 922, 924, 926, 928, 930, 932, 1018) within said DMA controller that each perform at least one of a variety of data modification operations; fetching a Control Data Block, CDB, by said DMA controller, said CDB containing instructions for reading said data from at least one data source (102-104, 202, 302, 402, 502, 602, 702), modifying said data, and writing said data to at least one destination (116-118, 214, 314, 418, 524, 628, 724, 1016); retrieving by said DMA controller said data from at least one data source (102-104, 202, 302, 402, 502, 602, 702) in accord with said instructions encoded in said CDB; modifying said data including selecting a plurality of data modification engines to perform said desired plurality of data modification operations on said data in accord with said instructions encoded in said CDB such that at least two of said plurality of data modification operations are performed concurrently by said DMA controller; and sending by said DMA controller results of said plurality of data modification operations to at least one destination (116-118, 214, 314, 418, 524, 628, 724, 1016) in accord with said instructions encoded in said CDB; wherein said performing of said desired plurality of data modification operations further comprises a first data modification engine of said plurality of data modification engines creating first data results that are used as a basis of computation for a second data modification engine of said plurality of data modification engines to perform at least one data modification operation of said plurality of data modification operations.