playback implementation