1. A computer-based process for allowing an executing version of a program to return to an earlier state, comprising: defining a state component, the state component comprising: a method for saving state of the program, the saved program state represented by a state token; a method for returning the program to the saved program state using the state token; and a method for joining the saved program state with a current program state to create a new current state; wherein the joining comprises: based at least on a timestamp of an update of the saved program state to a first location and a timestamp of an update of the current program state to the first location, determining an order of the update of the saved program state to the first location and the update of the current program state to the first location; based on the determined order, applying the update of the current program state to the first location to bindings for the new current state; and applying an update of the saved program state to a second location to the bindings for the new current state.