1. A method for reducing data movement within an original image by creating a new image using one or more function blocks, comprised of software modules or subroutines, from the original image, said method comprising: a. Ordering function blocks by placing software modules or subroutines that are likely to change only infrequently together at the start of the new image where possible; b. Maintaining the order of object files specified to a linker at image build time, and when possible adding one or more new object files at the end of the new image; and c. Inserting one or more expansion gaps to reserve free space within the new image to allow individual sections of the image to grow (or shrink) without moving unrelated content further up the new image.