     // open a read file
     log_info(stderr, "  opening reads file... started\n");
 
-    SharedPointer<io::ReadDataStream> read_data_file(
-        io::open_read_file(
+    SharedPointer<io::SequenceDataStream> read_data_file(
+        io::open_sequence_file(
+            DNA_N,
             reads,
             io::Phred33,
             2*max_reads,
             uint32(-1),
-            io::ReadEncoding( io::FORWARD | io::REVERSE_COMPLEMENT ) ) );
+            io::SequenceEncoding( io::FORWARD | io::REVERSE_COMPLEMENT ) ) );
 
     // check whether the file opened correctly
     if (read_data_file == NULL || read_data_file->is_ok() == false)

            genome_infix_set,
            sinks.begin(),
            aln::ThreadParallelScheduler(),
            reads.max_read_len(),
            reads.max_read_len() + BAND_LEN );

        cudaDeviceSynchronize();
        timer.stop();

    Timer timer;
    timer.start();

    const read_view_type reads_view = reads;
    const read_string_set_type read_string_set = reads_view.sequence_string_set();
    const seed_string_set_type seed_string_set = extract_seeds(
        read_string_set,
        params.seed_len,
