1. A method for managing finite state machines in a computing system, the method comprising employing a distributed finite state machine control application program interface to perform the steps of: determining a set of finite state machine instances each finite state machine instance of a given finite state machine comprising a separately executing process represented by the given finite state machine and each finite state machine instance comprising an atomic unit; selecting a target instance; forwarding a transition to a target instance; forwarding an event to a target instance; registering an instance; unregistering an instance; registering a transition event; and unregistering a transition event; wherein registering the instance and the transition event facilitates preserving and restoring application-specific context for at least one of time-shifting and location-shifting.