A method of progressively playing back by a device configured with a client application a media sequence stored as a media file on a remote server, the method comprising: obtaining information concerning the content of the media file from the remote server, where the information can be used to determine portions of the media file to request in response to receipt of a user instruction during playback; identifying, by the client application, a starting location within the media sequence; identifying, by the client application, byte ranges of the media file corresponding to media required to play the media sequence from the starting location; requesting, by the client application from the remote server, the byte ranges required to play the media sequence from the starting location; receiving a user instruction; identifying, by the client application, byte ranges of the media file corresponding to media required to play the media sequence in accordance with the user instruction, using the information concerning the content of the media file obtained from the remote server; and requesting, by the client application from the remote server, the byte ranges required to play the media in accordance with the user instruction the method characterized by: buffering received bytes of information pending commencement of playback; playing back the buffered bytes of information; maintaining a mask indicating byte ranges of the media file that have been downloaded; identifying that at least a portion of a byte range required to play the media in accordance with the user instruction has already been downloaded using the mask; flushing previous byte range requests; and requesting, by the client application from the remote server, only portions of the required byte ranges that have not already been downloaded from the media server to play the media in accordance with the user instruction. obtaining information concerning the content of the media file from the remote server, where the information can be used to determine portions of the media file to request in response to receipt of a user instruction during playback; identifying, by the client application, a starting location within the media sequence; identifying, by the client application, byte ranges of the media file corresponding to media required to play the media sequence from the starting location; requesting, by the client application from the remote server, the byte ranges required to play the media sequence from the starting location; receiving a user instruction; identifying, by the client application, byte ranges of the media file corresponding to media required to play the media sequence in accordance with the user instruction, using the information concerning the content of the media file obtained from the remote server; and requesting, by the client application from the remote server, the byte ranges required to play the media in accordance with the user instruction the method characterized by: buffering received bytes of information pending commencement of playback; playing back the buffered bytes of information; maintaining a mask indicating byte ranges of the media file that have been downloaded; identifying that at least a portion of a byte range required to play the media in accordance with the user instruction has already been downloaded using the mask; flushing previous byte range requests; and requesting, by the client application from the remote server, only portions of the required byte ranges that have not already been downloaded from the media server to play the media in accordance with the user instruction. buffering received bytes of information pending commencement of playback; playing back the buffered bytes of information; maintaining a mask indicating byte ranges of the media file that have been downloaded; identifying that at least a portion of a byte range required to play the media in accordance with the user instruction has already been downloaded using the mask; flushing previous byte range requests; and requesting, by the client application from the remote server, only portions of the required byte ranges that have not already been downloaded from the media server to play the media in accordance with the user instruction.