Memory expansions are classical means to extract parallelism from imperative programs. However, for dynamic control programs with general memory accesses, such transformations either fail or require some run-time mechanism to restore the data ow. This paper presents an expansion framework for any type of data structure in any imperative program, without the need for dynamic data ow restoration. The key idea is to group together the write operations that participate in the ow of the same datum. We show that such an expansion boils down to mapping each group to a single memory cell. We give a practical algorithm for code transformation. This algorithm, however, is valid for (possibly non-a ne) loops over arrays only.