     ctx.is_deletion.resize(batch.device.reads.size());
     ctx.num_errors.resize(batch.device.num_reads);
 
-    // the following require zero initialization
-    thrust::fill(ctx.is_snp.m_storage.begin(), ctx.is_snp.m_storage.end(), 0);
-    thrust::fill(ctx.is_insertion.m_storage.begin(), ctx.is_insertion.m_storage.end(), 0);
-    thrust::fill(ctx.is_deletion.m_storage.begin(), ctx.is_deletion.m_storage.end(), 0);
+    // initialize num_errors to zero
     thrust::fill(ctx.num_errors.begin(), ctx.num_errors.end(), 0);
 
     // cigar_events_read_index is initialized to -1; this means that all reads are considered inactive


                    if (off >= 0 && off <= read_window_clipped.y)
                    {
                        ctx.cigar.is_insertion[idx.read_start + off] = 1;
                    }

                    num_errors++;


                    if (reference_bp != read_bp)
                    {
                        snp_vector[idx.read_start + current_bp_idx] = 1;

                        // if we are inside the clipped read window, count this error
                        if (current_bp_idx >= read_window_clipped.x && current_bp_idx <= read_window_clipped.y)
