     typedef nvbio::cuda::ldg_pointer<uint32>                                    base_iterator;
 
     typedef nvbio::PackedStringLoader<base_iterator,
-        io::ReadData::READ_BITS,
-        io::ReadData::READ_BIG_ENDIAN,lmem_cache_type>                                          pattern_loader_type;
+        io::SequenceDataTraits<DNA_N>::SEQUENCE_BITS,
+        io::SequenceDataTraits<DNA_N>::SEQUENCE_BIG_ENDIAN,lmem_cache_type>                     pattern_loader_type;
     typedef typename pattern_loader_type::iterator                                              pattern_iterator;
     typedef nvbio::vector_view<pattern_iterator>                                                pattern_string;
 

    }
  #endif

    while (1)
    {
        SharedPointer<io::ReadData> h_read_data( read_data_file->next( batch_size ) );
        if (h_read_data == NULL)
            break;

        // build the device side representation
        const io::ReadDataDevice d_read_data( *h_read_data );

        const uint32 n_read_symbols = h_read_data->read_index()[ h_read_data->size() ];

        fprintf(stderr,"  %u reads, avg: %u bps, max: %u bps\n",
            h_read_data->size(),
            h_read_data->avg_read_len(),
            h_read_data->max_read_len());

        if (TEST_MASK & GOTOH)
        {

                batch_score_profile_all(
                    aln::make_gotoh_aligner<aln::GLOBAL,aln::TextBlockingTag>( scoring ),
                    d_read_data.size(),
                    nvbio::plain_view( d_read_data ).sequence_index(),
                    nvbio::plain_view( d_read_data ).sequence_stream_storage(),
                    d_read_data.max_sequence_len(),
                    n_read_symbols,
                    nvbio::raw_pointer( d_ref_storage ),
                    ref_length,
