playback logic