Refactored to use the interface (ReadRecord) instead of the implementation (SAMRecord)