converted SequenceReader to an abstract class