 #include <nvbio/basic/console.h>
+#include <nvbio/basic/shared_pointer.h>
+#include <nvbio/basic/cuda/arch.h>
 #include <nvbio/io/fmi.h>
 #include <nvbio/io/output/output_file.h>
 #include <nvbio/io/reads/reads.h>

    mem_init(&pipeline);

    // open the input read file
    io::ReadDataStream *input = io::open_read_file(command_line_options.input_file_name, io::Phred33, uint32(-1), uint32(-1),
                                                   io::ReadEncoding(io::FORWARD | io::REVERSE_COMPLEMENT));

    if (input == NULL || input->is_ok() == false)
    {

    for(;;)
    {
        // read the next batch
        SharedPointer<io::ReadData> batch = SharedPointer<io::ReadData>( input->next(command_line_options.batch_size, uint32(-1)) );
        if (batch == NULL)
        {
            // EOF
