A method for storing program events into an enhanced history buffer, the method comprising: a) receiving first program content corresponding to a first program event; b) generating a first discrete program content file in the enhanced history buffer, wherein the first discrete program content file begins with a first start boundary marker that identifies the start of the first discrete program content file, and wherein the first discrete program content file is stored beginning at a starting location in the enhanced history buffer identified by the first start boundary marker; c) storing the program content of the first program event in the first discrete program content file as the program content corresponding to the first program event is received; d) detecting a program event change corresponding to a change from the first program event to a second program event; e) in response to detecting the program event change, generating a second discrete program content file in the enhanced history buffer, in response to detecting the program event change, the second discrete program content file beginning with a second start boundary marker, and wherein the second discrete program content file is stored beginning at a starting location in the enhanced history buffer identified by the second start boundary marker; and f) storing second program content of the second program event in the second discrete program content file as the program content corresponding to the second program event is received, wherein on detecting a program event change corresponding to a change from the first program event to a second program event, either: g) ending recording of the first discrete program file and adding a first end boundary marker in the first discrete program content file, h) continuing recording of the first discrete program file at the same time as the second discrete program file and adding a first end boundary marker in the first discrete program content file upon detection of the end of the first discrete program file; wherein the stored first discrete program content file comprises the first start boundary marker, the first program content of the first program event, and the first end boundary marker, and wherein the start boundary marker stores a starting location in the enhanced history buffer indicating where the discrete program file begins, and the end boundary marker stores an ending location at which the discrete program file ends, and wherein on the basis of the start boundary marker and the end boundary marker, resumption of the presentation of the first program content from the start or end point respectively is carried out. a) receiving first program content corresponding to a first program event; b) generating a first discrete program content file in the enhanced history buffer, wherein the first discrete program content file begins with a first start boundary marker that identifies the start of the first discrete program content file, and wherein the first discrete program content file is stored beginning at a starting location in the enhanced history buffer identified by the first start boundary marker; c) storing the program content of the first program event in the first discrete program content file as the program content corresponding to the first program event is received; d) detecting a program event change corresponding to a change from the first program event to a second program event; e) in response to detecting the program event change, generating a second discrete program content file in the enhanced history buffer, in response to detecting the program event change, the second discrete program content file beginning with a second start boundary marker, and wherein the second discrete program content file is stored beginning at a starting location in the enhanced history buffer identified by the second start boundary marker; and f) storing second program content of the second program event in the second discrete program content file as the program content corresponding to the second program event is received, g) ending recording of the first discrete program file and adding a first end boundary marker in the first discrete program content file, h) continuing recording of the first discrete program file at the same time as the second discrete program file and adding a first end boundary marker in the first discrete program content file upon detection of the end of the first discrete program file;