     // load a batch of reads
     SharedPointer<io::ReadData> h_read_data( read_data_file->next( batch_size, batch_bps ) );
 
+    // copy it to the device
     const io::ReadDataDevice d_read_data( *h_read_data );
 
-    // fetch the actual string
-    typedef io::ReadData::const_read_string_set_type                        string_set_type;
-    typedef nvbio::vector<device_tag,string_set_infix_coord_type>           infix_vector_type;
-    typedef InfixSet<string_set_type, const string_set_infix_coord_type*>   seed_set_type;
+    // prepare some typedefs for the involved string-sets and infixes
+    typedef io::ReadData::const_read_string_set_type                        string_set_type;    // the read string-set
+    typedef string_set_infix_coord_type                                     infix_coord_type;   // the infix coordinate type, for string-sets
+    typedef nvbio::vector<device_tag,infix_coord_type>                      infix_vector_type;  // the device vector type for infix coordinates
+    typedef InfixSet<string_set_type, const string_set_infix_coord_type*>   seed_set_type;      // the infix-set type for representing seeds
 
+    // fetch the actual read string-set
     const string_set_type d_read_string_set = d_read_data.read_string_set();
 
     // prepare enough storage for the seed coordinates
     infix_vector_type d_seed_coords;
 
+    // extract the seeds and get the corresponding string-set representation
     const seed_set_type d_seed_set = extract_seeds(
         d_read_string_set,
         20u,
         10u,
         d_seed_coords );
 
+    // output some stats
     log_info(stderr, "seeding... done\n");
     log_info(stderr, "  %u seeds\n", d_seed_set.size());
 

template <typename system_tag, typename string_set_type>
InfixSet<string_set_type, const string_set_infix_coord_type*>
extract_seeds(
    const string_set_type                                   string_set,
    const uint32                                            seed_len,
    const uint32                                            seed_interval,
    nvbio::vector<system_tag,string_set_infix_coord_type>&  seed_coords)
{
    // enumerate all seeds
    const uint32 n_seeds = enumerate_string_set_seeds(

//
int main(int argc, char* argv[])
{
    //
    // perform some basic option parsing
    //

    uint32 n_bps = 10000000;
    char*  reads = "./data/SRR493095_1.fastq.gz";

