play() abstract