Added firstE and restE
Cleaned record and playback impl