Added interfaces and one implementation for recording.