We consider the overhead incurred by programs that can be updated dynamically and argue that, in general, and regardless of the mechanism used, the program must incur an overhead during normal execution. We argue that the overhead during normal execution of the updateable program need not be as high as the overhead for the updated program. In light of the fundamental limitations and the differences in the overhead that must be incurred by the updateable and updated programs, we propose a new mechanism for dynamic software update based on a new shifting gears approach. The mechanism attempts to incur just the required overhead depending on the stage of update the application is in. Before an update the execution incurs low overhead and when an update occurs the execution incurs higher overhead which reverts to low overhead as the execution progresses. We evaluate the mechanism by modifying an application by hand. Preliminary performance numbers show that the mechanism performs better than existing mechanisms for dynamic software update.