1. A method of preparing a computer program for operation in a computer supply system that supplies portions of program code or program data of the computer program, from a server to a client, as the program needs the portions, the portions identified as program units, the method comprising: receiving definition of a plurality of program units of the program at a computing system; removing, using the computing system, a plurality of program units, having one or more predetermined common characteristics, from the program, thereby producing a program skeleton that is missing at least two program units, each of the program units that is removed being operational code on the computing system, and each of the program units that is removed having a single entry point; maintaining one or more program units in the program skeleton required for initial execution of the program, the program skeleton being operable to be sent from the server to the client in less time than the program without removed program units, the program skeleton being operable to be initially executed as the program; and inserting instructions in place of at least one removed program unit in the program skeleton that was removed, the instructions providing the client with information to request the removed program unit from the server when the program skeleton encounters the instructions.