refactor; playback and compare is really similar to playback and override